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] -=-=-=-=-=-=-=-=-=-=-=-