OP-TEE / build

Makefiles to use OP-TEE on various platforms
106 stars 209 forks source link

Download Rust Toolchain during "make toolchains" on aarch64 hosts #748

Closed msgilligan closed 1 month ago

msgilligan commented 1 month ago

This is a draft PR that attempts to fix Issue #749

Note that with this patch the build still fails when actually using the Rust toolchain. It seems to be a linker configuration issue. This is one of the error messages I'm getting:

   Compiling optee-utee-sys v0.2.0 (/home/sean.linux/optee/out-br/build/optee_rust_examples_ext-1.0/optee-utee/optee-utee-sys)
error: linking with `/home/sean.linux/optee/build/../toolchains/aarch64/bin/aarch64-linux-ld.bfd` failed: exit status: 1
  |
  = note: LC_ALL="C" PATH="/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/bin:/home/sean.linux/optee/build/../toolchains/rust/.cargo/bin:/home/sean.linux/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/sbin:/sbin:/usr/sbin:/sbin" VSLANG="1033" "/home/sean.linux/optee/build/../toolchains/aarch64/bin/aarch64-linux-ld.bfd" "/tmp/rustcte7jtz/symbols.o" "/home/sean.linux/optee/out-br/build/optee_rust_examples_ext-1.0/examples/digest-rs/ta/target/release/build/optee-utee-sys-89badbacee7da3e5/build_script_build-89badbacee7da3e5.build_script_build.7ae53caa20b5e00-cgu.0.rcgu.o" "/home/sean.linux/optee/out-br/build/optee_rust_examples_ext-1.0/examples/digest-rs/ta/target/release/build/optee-utee-sys-89badbacee7da3e5/build_script_build-89badbacee7da3e5.da5qy974ivu4kal.rcgu.o" "--as-needed" "-L" "/home/sean.linux/optee/out-br/build/optee_rust_examples_ext-1.0/examples/digest-rs/ta/target/release/deps" "-L" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib" "-Bstatic" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libstd-cf59f2c17597b3d9.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libpanic_unwind-8f535f48df960590.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libobject-d67feb497d1e63a5.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libmemchr-70b8f4db34cf73b9.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libaddr2line-1b440c2cf263d456.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libgimli-966ed6f97fef1180.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_demangle-c5b96c1bbf2a9ac3.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libstd_detect-5732d1cd4a81a064.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libhashbrown-2a13d8dbe8a503b5.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-a747a82492cfa49f.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libminiz_oxide-11b720ff8f234cbb.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libadler-6c78e2818dc121b9.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libunwind-426a6726f3a52b5c.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcfg_if-bf93157d645f5523.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/liblibc-cbccd1eea43ebbbb.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/liballoc-0b4655237a1f2f25.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_std_workspace_core-4ce1a30d69fd6755.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcore-bdfe3801ac589305.rlib" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcompiler_builtins-76fca0633b54e12b.rlib" "-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "--eh-frame-hdr" "-z" "noexecstack" "-L" "/home/sean.linux/optee/toolchains/rust/.rustup/toolchains/nightly-2023-12-18-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib" "-o" "/home/sean.linux/optee/out-br/build/optee_rust_examples_ext-1.0/examples/digest-rs/ta/target/release/build/optee-utee-sys-89badbacee7da3e5/build_script_build-89badbacee7da3e5" "--gc-sections" "-pie" "-z" "relro" "-z" "now"
  = note: /home/sean.linux/optee/build/../toolchains/aarch64/bin/aarch64-linux-ld.bfd: cannot find -lgcc: No such file or directory

error: could not compile `optee-utee-sys` (build script) due to 1 previous error
warning: build failed, waiting for other jobs to finish...
msgilligan commented 1 month ago

@jforissier I have made the change you suggested and force-pushed. I was thinking that was the better way to do it, but I also wanted to submit something with minimal impact. That was the main reason I marked the PR as "DRAFT". I've removed draft and the PR is ready for review.

The other reason I left it as "DRAFT" is because the build still fails on aarch64, but I think that can be addressed in a separate PR as this one does allow the build to get further than it did before.

b49020 commented 1 month ago

Reviewed-by: Sumit Garg <sumit.garg@linaro.org>

msgilligan commented 1 month ago

@jforissier Is there anything else I need to do to help get this merged? Does it need additional review? Should I rebase on master to pick up PR #753 ?

jforissier commented 1 month ago

@msgilligan no need to rebase, it is done automatically by GitHub. However please add the Reviewed-by: tags then I will push the merge button. Thanks!

msgilligan commented 1 month ago

However please add the Reviewed-by: tags then I will push the merge button. Thanks!

Thanks for reminding me! Done!