[Buildroot] "PATCH": hack to be able to build Rust targetting MIPS

Alex Corcoles alex at corcoles.net
Mon Feb 3 17:08:20 UTC 2020


I've finally had more time to play with this. It seems that
mipsel-unknown-linux-uclibc works! I've been able to run software built
with it on a real hardware device, although it's very crashy (all
arithmetic operations seem to crash with illegal instruction- probably I
didn't configure my toolchain right or there's a Rust issue...).

I would suggest removing the limitation on uclibc... perhaps with a big
warning flag, though, as I haven't managed to build complex, stable
software.

I've written a bit about the process at:

https://users.rust-lang.org/t/trying-to-compile-rust-sdl-stuff-for-a-rg300-console-buildroot-mipsel-uclibc/36722
https://github.com/alexpdp7/retrofw2-rust

Cheers,

Álex

On Mon, Jan 20, 2020 at 5:31 PM Alex Corcoles <alex at corcoles.net> wrote:

> Hi!
>
> The RUSTC_TARGET_NAME variable is defined in rustc.mk only if the symbol
>> BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS is selected. This symbols is
>> used to ensure all the conditions to build a rust package are met. One
>> of them is that the toolchain is glibc-based. This is required, because
>> the standard library provided by the pre-built host Rust toolchain is
>> built against glibc.
>>
>> In your defconfig, the toolchain is uclibc-based and the host Rust
>> toolchain is built from source.
>>
>> Hence BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS is not defined and so
>> is RUSTC_TARGET_NAME.
>>
>> So there is a bug: the restriction on having a glibc-based toolchain
>> should apply either when using a pre-built rust toolchain or building
>> one from source. I'll see how to fix it.
>>
>> The list of supported platforms [1] mentions GNU glibc and musl, but not
>> uclibc. Does the build with your defconfig and patch successful?
>>
>> [1] https://forge.rust-lang.org/release/platform-support.html
>>
>
> I think I built it successfully after introducing my hack, but as far as I
> understand, it is not guaranteed to build in the future (and the opposite
> is true, perhaps if it doesn't build today, it will tomorrow). In the link
> you sent, mipsel-unknown-linux-uclibc is Tier 3 with std.
>
> If I have some time I will play around with it and see you some results.
>
> IMHO, perhaps you should hide non Tier-1 platforms behind an "enable this
> option for non-Tier 1 Rust builds which are not guaranteed to work", or
> something like that.
>
> Cheers,
>
> Álex
>
> --
>    ___
>  {~._.~}
>   ( Y )
>  ()~*~()  mail: alex at corcoles dot net
>  (_)-(_)  http://alex.corcoles.net/
>
>

-- 
   ___
 {~._.~}
  ( Y )
 ()~*~()  mail: alex at corcoles dot net
 (_)-(_)  http://alex.corcoles.net/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20200203/e8cfc0c9/attachment.html>


More information about the buildroot mailing list