On Tue, 2022-07-26 at 15:02 +0100, Richard Purdie via
lists.openembedded.org wrote:
> This patch:
> * Uses RUST_{BUILD|HOST|TARGET}_SYS everywhere consistently within rust 
> context
> * Moves the on target libraries to rust's "sysroot" layout so the SDK can find
>   libraries without prompting
> * Moves the target SDK libraries into the target sysroot rather than the 
> native one
> * Enables the target rustc compiler to be built
> * Replaces cargo-cross-canadian with nativesdk-cargo
> 
> * Drops rust-cross-XXX and uses rust-target-config to generate json config
>   in each WORKDIR
> * Add nativeksdk-rust as the SDK compiler
> * Simplifies rust-cross-canadian-XXX to be the environment and json config
>   for the target only (no binaries)
> * Drop rust-crosssdk since it isnt needed now
> * Drop a lot of the virtual/ compiler dependency mess since we don't need it
> * Cargo cross-canadian environment config is compiled with rust-cross-canadian
> * Adds RUST_{BUILD|HOST|TARGET}_SYS to the variable ignore list for hash 
> purposes
>   (since it should be accounted for in the build paths)
> * Adds a slightly hacky approach to make target llvm-config work which removes
>   the need for patching llvm.
> * Drop rust-tools-cross-canadian and just build the tools as part of the main
>   rust/nativesdk-rust recipe to avoid rebuilding large chunks of the toolchain
> 
> Work still remaining:
> * Fully clean up the dependency simplification and removal of the virutal/
>   code.
> * Remove RUST_TARGETGENS since I think it is the same everywhere now
> * The rust recipe doesn't need to always build stage0
> * The rust recipe doesn't need to always build libstd-rs since
>   we have a separate recipe. May drop the separate recipe and just copy
>   the pieces out of the target rust build
> * Maybe drop RUSTC variable, not sure it is used?
> * Delete now unneeded rust-llvm llcm-config patch
> 
> Adding to an SDK looks like: TOOLCHAIN_LANGS += "rust"
> 
> Known issues:
> * rust target compiler fails for musl:
>   https://autobuilder.yoctoproject.org/typhoon/#/builders/64/builds/5574
>   https://autobuilder.yoctoproject.org/typhoon/#/builders/45/builds/5588
> * rust target packages have buildpaths warnings:
>   
> https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/5585/steps/11/logs/stdio
> * mips n32 target rust config and libstd-rs fails:
>   https://autobuilder.yoctoproject.org/typhoon/#/builders/44/builds/5607
> * May be multilib variant issues:
>   https://autobuilder.yoctoproject.org/typhoon/#/builders/52/builds/5503
>   https://autobuilder.yoctoproject.org/typhoon/#/builders/108/builds/3280
> * Sundeep reported ld loader symbol relocation issues for libstdc++
> * Breaks mingw build as currently configured
>   https://autobuilder.yoctoproject.org/typhoon/#/builders/89/builds/5591

The patches in master-next further tweak and improve things. I have
fixed the musl issue and many of the buildpaths ones as well as
multilib and mingw. This means that we have remaining:

1) buildpaths warnings:
https://autobuilder.yoctoproject.org/typhoon/#/builders/45/builds/5606

https://autobuilder.yoctoproject.org/typhoon/#/builders/40/builds/5602
https://autobuilder.yoctoproject.org/typhoon/#/builders/108/builds/3294
[and likely a few more as the build completes]
down to two issues:
stdio: WARNING: rust-1.62.0-r0 do_package_qa: QA Issue: File 
/usr/bin/clippy-driver in package rust-tools-clippy contains reference to 
TMPDIR [buildpaths]
stdio: WARNING: rust-1.62.0-r0 do_package_qa: QA Issue: File 
/usr/lib64/librustc_driver-ba615092564ddb01.so in package rust contains 
reference to TMPDIR [buildpaths]
stdio: WARNING: lib32-rust-1.62.0-r0 do_package_qa: QA Issue: File 
/usr/lib/librustc_driver-a9887d06b965b287.so in package lib32-rust contains 
reference to TMPDIR [buildpaths]
stdio: WARNING: lib32-rust-1.62.0-r0 do_package_qa: QA Issue: File 
/usr/bin/clippy-driver in package lib32-rust-tools-clippy contains reference to 
TMPDIR [buildpaths]

clippy appears to have a sysroot path encoded into it, the rustc-driver
is a path to llvm-config. I did try setting SYSROOT as an environment
variable when building clippy with no success. I also tried making the
llvm-config a script found via PATH but that failed to build. We may
need to patch rust to deal with these.


2) mips n32 issue:
https://autobuilder.yoctoproject.org/typhoon/#/builders/44/builds/5624/steps/25/logs/stdio
| LLVM ERROR: Not supported instr: <MCInst 0 <MCOperand Reg:433> <MCOperand 
Reg:338>>
| LLVM ERROR: Not supported instr: <MCInst 0 <MCOperand Reg:422> <MCOperand 
Reg:1>>
| warning: `libc` (lib) generated 2 warnings (2 duplicates)

when building libstd-rs which may mean my guesses at the target data options 
are still wrong.


3) Sundeep reported ld loader symbol relocation issues for libstdc++



Fixing 1) is the priority as with that we can prepare the series for
submission/review/merging. I'm taking some time away for the next few
days so if anyone else wants to fix those...! :)

3) probably needs retesting against the current patches. For 2), not
sure.

Cheers,

Richard

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#168617): 
https://lists.openembedded.org/g/openembedded-core/message/168617
Mute This Topic: https://lists.openembedded.org/mt/92627996/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to