regression: can't build broot for Android using cargo cross anymore
This command
cross build --target aarch64-linux-android
fails linking:
error: linking with `aarch64-linux-android-gcc` failed: exit status: 1
|
= note: "aarch64-linux-android-gcc" "/target/aarch64-linux-android/debug/deps/broot-ebcf1d1e5d6cd23d.1dvl4bj37o04vvjq.rcgu.o" "/target/aarch64-linux-android/debug/deps/broot-ebcf1d1e5d6cd23d.2dcjxelxk06rkdn3.rcgu.o" "/target/aarch64-linux-android/debug/deps/broot-ebcf1d1e5d6cd23d.2o0j9fo8z59lfkd9.rcgu.o" "/target/aarch64-linux-android/debug/deps/broot-ebcf1d1e5d6cd23d.2u0lwoc0y3lmsbuc.rcgu.o" "/target/aarch64-linux-android/debug/deps/broot-ebcf1d1e5d6cd23d.2z6iwv4c4t2dhwp0.rcgu.o" "/target/aarch64-linux-android/debug/deps/broot-ebcf1d1e5d6cd23d.351ve6g1jgevptfe.rcgu.o" "/target/aarch64-linux-android/debug/deps/broot-ebcf1d1e5d6cd23d.3buoprsgp1xe1h3w.rcgu.o" "/target/aarch64-linux-android/debug/deps/broot-ebcf1d1e5d6cd23d.3smgmnp19167quxc.rcgu.o" "/target/aarch64-linux-android/debug/deps/broot-ebcf1d1e5d6cd23d.3t88l7u9n86vcg88.rcgu.o" "/target/aarch64-linux-android/debug/deps/broot-ebcf1d1e5d6cd23d.3vxjhwe8pnxyw8pt.rcgu.o" "/target/aarch64-linux-android/debug/deps/broot-ebcf1d1e5d6cd23d.4t6wsc5o9cs5b4c4.rcgu.o" "/target/aarch64-linux-android/debug/deps/broot-ebcf1d1e5d6cd23d.58b694swvepcf813.rcgu.o" "/target/aarch64-linux-android/debug/deps/broot-ebcf1d1e5d6cd23d.nqp6o4itg81z3u4.rcgu.o" "/target/aarch64-linux-android/debug/deps/broot-ebcf1d1e5d6cd23d.x6f38n773ejo673.rcgu.o" "-Wl,--as-needed" "-L" "/target/aarch64-linux-android/debug/deps" "-L" "/target/debug/deps" "-L" "/target/aarch64-linux-android/debug/build/libgit2-sys-11d26afdac44e297/out/build" "-L" "/target/aarch64-linux-android/debug/build/onig_sys-fea09d3c7e916fd8/out" "-L" "/rust/lib/rustlib/aarch64-linux-android/lib" "-Wl,-Bstatic" "/target/aarch64-linux-android/debug/deps/libbroot-86dc73f287ddd008.rlib" "/target/aarch64-linux-android/debug/deps/libsplitty-8043a906327b635c.rlib" "/target/aarch64-linux-android/debug/deps/liblfs_core-6744723f9116caf3.rlib" "/target/aarch64-linux-android/debug/deps/libsnafu-43b8eccbaf88e4b3.rlib" "/target/aarch64-linux-android/debug/deps/libdoc_comment-359c0314edaf301f.rlib" "/target/aarch64-linux-android/debug/deps/libumask-51ac5e8bb2a05338.rlib" "/target/aarch64-linux-android/debug/deps/libsyntect_no_panic-9d263a32105a0e9e.rlib" "/target/aarch64-linux-android/debug/deps/libonig-7f1e1dd047186af5.rlib" "/target/aarch64-linux-android/debug/deps/libonig_sys-239ed536e35238d2.rlib" "/target/aarch64-linux-android/debug/deps/libyaml_rust-cd4d3ccfc904bee7.rlib" "/target/aarch64-linux-android/debug/deps/liblinked_hash_map-8cf6cce12e98e189.rlib" "/target/aarch64-linux-android/debug/deps/libwalkdir-f2755910ece81932.rlib" "/target/aarch64-linux-android/debug/deps/libsame_file-22a3f5b2c6af4b6f.rlib" "/target/aarch64-linux-android/debug/deps/libserde_json-75393dd1ec50bbb9.rlib" "/target/aarch64-linux-android/debug/deps/libryu-4346f7166b26b137.rlib" "/target/aarch64-linux-android/debug/deps/libplist-5c1e543132194196.rlib" "/target/aarch64-linux-android/debug/deps/libtime-047f7a4094420c67.rlib" "/target/aarch64-linux-android/debug/deps/libitoa-56a0bdf520f9c022.rlib" "/target/aarch64-linux-android/debug/deps/libline_wrap-57dacfc310f4377a.rlib" "/target/aarch64-linux-android/debug/deps/libsafemem-972ca03fea94c135.rlib" "/target/aarch64-linux-android/debug/deps/libxml-52096b19d0386b24.rlib" "/target/aarch64-linux-android/debug/deps/libbincode-9cf79135cf37dc64.rlib" "/target/aarch64-linux-android/debug/deps/libpathdiff-d3c6b743d41057ee.rlib" "/target/aarch64-linux-android/debug/deps/libchar_reader-53d98a1d3245072d.rlib" "/target/aarch64-linux-android/debug/deps/libsecular-374663fe1d594726.rlib" "/target/aarch64-linux-android/debug/deps/libtempfile-5892a08c4e8cc60c.rlib" "/target/aarch64-linux-android/debug/deps/libfastrand-1878bbddaccce0e6.rlib" "/target/aarch64-linux-android/debug/deps/libremove_dir_all-c2f16e910a756152.rlib" "/target/aarch64-linux-android/debug/deps/libbase64-b17d4edc26529621.rlib" "/target/aarch64-linux-android/debug/deps/libansi_colours-d513a9bc684403c4.rlib" "/target/aarch64-linux-android/debug/deps/librgb-ab05966353559818.rlib" "/target/aarch64-linux-android/debug/deps/libid_arena-7d65d8aee6646285.rlib" "/target/aarch64-linux-android/debug/deps/libglob-cd5122bde07cabf2.rlib" "/target/aarch64-linux-android/debug/deps/libimage-1f6df900617d2f48.rlib" "/target/aarch64-linux-android/debug/deps/libbytemuck-f9f111c13a9105b4.rlib" "/target/aarch64-linux-android/debug/deps/libpng-4307c2f1c5eabf60.rlib" "/target/aarch64-linux-android/debug/deps/libnum_iter-0c659256b423780b.rlib" "/target/aarch64-linux-android/debug/deps/libscoped_threadpool-f47603fc436a942f.rlib" "/target/aarch64-linux-android/debug/deps/libnum_rational-00164d77d0ae3af4.rlib" "/target/aarch64-linux-android/debug/deps/libgif-d70886bf27e37f21.rlib" "/target/aarch64-linux-android/debug/deps/libcolor_quant-5b14338ed2c751d6.rlib" "/target/aarch64-linux-android/debug/deps/libbyteorder-1a0d00df238ea1f4.rlib" "/target/aarch64-linux-android/debug/deps/libtiff-806f5a8a99b94dc6.rlib" "/target/aarch64-linux-android/debug/deps/libflate2-5f3671ef16039aea.rlib" "/target/aarch64-linux-android/debug/deps/libminiz_oxide-e4807a44f1e8e2e8.rlib" "/target/aarch64-linux-android/debug/deps/libadler-c107e3c0fe26de6c.rlib" "/target/aarch64-linux-android/debug/deps/libcrc32fast-148a5ae4db409868.rlib" "/target/aarch64-linux-android/debug/deps/libweezl-efb7fdac482a0201.rlib" "/target/aarch64-linux-android/debug/deps/libjpeg_decoder-870538e740062820.rlib" "/target/aarch64-linux-android/debug/deps/librayon-898c7c117e76db43.rlib" "/target/aarch64-linux-android/debug/deps/librayon_core-0a727a2f1e5c46a8.rlib" "/target/aarch64-linux-android/debug/deps/libeither-e27bad1b0b01a1d4.rlib" "/target/aarch64-linux-android/debug/deps/libexr-ed18ac070a71ccbe.rlib" "/target/aarch64-linux-android/debug/deps/libflume-1fdb934111923c35.rlib" "/target/aarch64-linux-android/debug/deps/libspin-9d44ed7c7e41cfd5.rlib" "/target/aarch64-linux-android/debug/deps/libpin_project-d0e227411e9633aa.rlib" "/target/aarch64-linux-android/debug/deps/libfutures_sink-b36bb0af4ee16c1c.rlib" "/target/aarch64-linux-android/debug/deps/libfutures_core-24a2b399e17889ff.rlib" "/target/aarch64-linux-android/debug/deps/libnanorand-c113f09a007b2cd7.rlib" "/target/aarch64-linux-android/debug/deps/libthreadpool-6738f84a362ad7f1.rlib" "/target/aarch64-linux-android/debug/deps/libnum_cpus-4ba0a0c8addf0a29.rlib" "/target/aarch64-linux-android/debug/deps/libbit_field-befb05cbb83e86bc.rlib" "/target/aarch64-linux-android/debug/deps/libinflate-625419d95d9705ef.rlib" "/target/aarch64-linux-android/debug/deps/libdeflate-34325cbcc30403d1.rlib" "/target/aarch64-linux-android/debug/deps/libadler32-57d704ad92089721.rlib" "/target/aarch64-linux-android/debug/deps/liblebe-0246744eb3f3592e.rlib" "/target/aarch64-linux-android/debug/deps/libhalf-f214e036970fa290.rlib" "/target/aarch64-linux-android/debug/deps/libcustom_error-92a319814db27d5b.rlib" "/target/aarch64-linux-android/debug/deps/libgit2-fd01fb71861f4c0b.rlib" "/target/aarch64-linux-android/debug/deps/liburl-3cfe449e5aca0497.rlib" "/target/aarch64-linux-android/debug/deps/libidna-bc6460a7340173e9.rlib" "/target/aarch64-linux-android/debug/deps/libunicode_normalization-de39989996f7b1ef.rlib" "/target/aarch64-linux-android/debug/deps/libtinyvec-e304392fce9fd3f4.rlib" "/target/aarch64-linux-android/debug/deps/libtinyvec_macros-dc19b3cdee48c6cf.rlib" "/target/aarch64-linux-android/debug/deps/libunicode_bidi-32bcb73eb9a5eb95.rlib" "/target/aarch64-linux-android/debug/deps/libform_urlencoded-8b3f2252a7fb8eb7.rlib" "/target/aarch64-linux-android/debug/deps/libpercent_encoding-e07403f27a5904e0.rlib" "/target/aarch64-linux-android/debug/deps/libmatches-ae6c75d677f39e65.rlib" "/target/aarch64-linux-android/debug/deps/liblibgit2_sys-e38e96a560b6b371.rlib" "/target/aarch64-linux-android/debug/deps/liblibz_sys-5f0dede830379c0c.rlib" "/target/aarch64-linux-android/debug/deps/libphf-9abb545b99378e42.rlib" "/target/aarch64-linux-android/debug/deps/libphf_shared-53fe22baf17714c1.rlib" "/target/aarch64-linux-android/debug/deps/libsiphasher-a0216b65d857abc9.rlib" "/target/aarch64-linux-android/debug/deps/libmemmap-6f05662ff9d71300.rlib" "/target/aarch64-linux-android/debug/deps/libtoml-0b98caa14fe15adf.rlib" "/target/aarch64-linux-android/debug/deps/libdeser_hjson-29909cabb38b0898.rlib" "/target/aarch64-linux-android/debug/deps/libfnv-534051598d131ac0.rlib" "/target/aarch64-linux-android/debug/deps/libahash-07f80f36b4fdb4d2.rlib" "/target/aarch64-linux-android/debug/deps/libgetrandom-c53ff6538e8438d4.rlib" "/target/aarch64-linux-android/debug/deps/libdirectories-0186b42fd0d53e9a.rlib" "/target/aarch64-linux-android/debug/deps/libdirs_sys-b4710f5fd4076c97.rlib" "/target/aarch64-linux-android/debug/deps/libcrokey-bb7b49745cef65fd.rlib" "/target/aarch64-linux-android/debug/deps/libserde-87beb55d867277e3.rlib" "/target/aarch64-linux-android/debug/deps/liblazy_regex-2d85672490fa3d7f.rlib" "/target/aarch64-linux-android/debug/deps/libregex-3b4d6743785b8654.rlib" "/target/aarch64-linux-android/debug/deps/libaho_corasick-bb2379d74835cd57.rlib" "/target/aarch64-linux-android/debug/deps/libmemchr-5e27833e84653637.rlib" "/target/aarch64-linux-android/debug/deps/libregex_syntax-6d988ec460152142.rlib" "/target/aarch64-linux-android/debug/deps/libbet-3c7a864271cc3858.rlib" "/target/aarch64-linux-android/debug/deps/libclap-5294b2e83884c524.rlib" "/target/aarch64-linux-android/debug/deps/libatty-0ef0cfbb7e3e303f.rlib" "/target/aarch64-linux-android/debug/deps/libstrsim-fd669e3986d0086a.rlib" "/target/aarch64-linux-android/debug/deps/libtermcolor-c972e5fcd8d95ea9.rlib" "/target/aarch64-linux-android/debug/deps/libtextwrap-c70e6818a3a87f88.rlib" "/target/aarch64-linux-android/debug/deps/libindexmap-d3dd6422a88f812a.rlib" "/target/aarch64-linux-android/debug/deps/libhashbrown-6dd85aa65e0668b4.rlib" "/target/aarch64-linux-android/debug/deps/libclap_lex-2784734643456eb1.rlib" "/target/aarch64-linux-android/debug/deps/libos_str_bytes-6fb8d81f0fb5f238.rlib" "/target/aarch64-linux-android/debug/deps/libopener-5dcdf1fd620a1300.rlib" "/target/aarch64-linux-android/debug/deps/libtermimad-983e49c4d3ec92f4.rlib" "/target/aarch64-linux-android/debug/deps/libcoolor-eba759ca977e2e39.rlib" "/target/aarch64-linux-android/debug/deps/libunicode_width-4a071d3631140b0f.rlib" "/target/aarch64-linux-android/debug/deps/libminimad-2763a17624532c8d.rlib" "/target/aarch64-linux-android/debug/deps/libonce_cell-e699d3d719b3ae7f.rlib" "/target/aarch64-linux-android/debug/deps/libstrict-29e6c3a74590cf3c.rlib" "/target/aarch64-linux-android/debug/deps/libcrossterm-9db98781c8396184.rlib" "/target/aarch64-linux-android/debug/deps/libsignal_hook_mio-49773945a5a23aa7.rlib" "/target/aarch64-linux-android/debug/deps/libsignal_hook-7e97089bfc1fa29d.rlib" "/target/aarch64-linux-android/debug/deps/libsignal_hook_registry-c58e11a73d953be0.rlib" "/target/aarch64-linux-android/debug/deps/libmio-80feeed8cfbd9a43.rlib" "/target/aarch64-linux-android/debug/deps/libparking_lot-e91b9753969c56fd.rlib" "/target/aarch64-linux-android/debug/deps/libparking_lot_core-66378af146807e4c.rlib" "/target/aarch64-linux-android/debug/deps/libsmallvec-eb0a9a844e0ec18f.rlib" "/target/aarch64-linux-android/debug/deps/liblock_api-a4f8dbd682897ec1.rlib" "/target/aarch64-linux-android/debug/deps/libbitflags-ff349f6124c6dbec.rlib" "/target/aarch64-linux-android/debug/deps/libcrossbeam-ebcb464445a522af.rlib" "/target/aarch64-linux-android/debug/deps/libcrossbeam_channel-0a605226998352bc.rlib" "/target/aarch64-linux-android/debug/deps/libcrossbeam_deque-a14dad7eeab1d574.rlib" "/target/aarch64-linux-android/debug/deps/libcrossbeam_queue-a65158e133ff10d7.rlib" "/target/aarch64-linux-android/debug/deps/libcrossbeam_epoch-336bd2088e5437a5.rlib" "/target/aarch64-linux-android/debug/deps/libmemoffset-8e99c00e8fb3f15e.rlib" "/target/aarch64-linux-android/debug/deps/libscopeguard-1fdbd33167126b7c.rlib" "/target/aarch64-linux-android/debug/deps/libcrossbeam_utils-4710b3c4257e6a56.rlib" "/target/aarch64-linux-android/debug/deps/liblazy_static-d709a19de8d56ea2.rlib" "/target/aarch64-linux-android/debug/deps/libcli_log-9173009d9b30ae74.rlib" "/target/aarch64-linux-android/debug/deps/libfile_size-ec9cc5040bc40408.rlib" "/target/aarch64-linux-android/debug/deps/libproc_status-9d417b71aade1b89.rlib" "/target/aarch64-linux-android/debug/deps/libthiserror-ab137fcd07bc1d05.rlib" "/target/aarch64-linux-android/debug/deps/libchrono-ae2386953e37a799.rlib" "/target/aarch64-linux-android/debug/deps/libnum_integer-215282db4a9583a6.rlib" "/target/aarch64-linux-android/debug/deps/libnum_traits-5bcfa165d5e9daad.rlib" "/target/aarch64-linux-android/debug/deps/libtime-347d24f25b54f3fb.rlib" "/target/aarch64-linux-android/debug/deps/liblibc-434492ee8529ee67.rlib" "/target/aarch64-linux-android/debug/deps/liblog-9961bf546e8d1d6d.rlib" "/target/aarch64-linux-android/debug/deps/libcfg_if-6e71f5dc84fcbb28.rlib" "-Wl,--start-group" "/rust/lib/rustlib/aarch64-linux-android/lib/libstd-d85be69f20894196.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/libpanic_unwind-5bb00ce98f0376bc.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/libminiz_oxide-4c1c587159319b11.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/libadler-6123d40975d3d21a.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/libobject-25c9812e9e65faa6.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/libmemchr-e1b753aea48a9748.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/libaddr2line-1cabe940ed1e0254.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/libgimli-bd3cce095e61162c.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/librustc_demangle-a2ec44f3b48c837f.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/libstd_detect-9e5f003f594630cc.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/libhashbrown-af328dd53f9362c0.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/librustc_std_workspace_alloc-91bbc1b8350079f7.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/libunwind-469885748d4fb5d0.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/libcfg_if-df40b062bb36907c.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/liblibc-2c3bf9cfdb20a97f.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/liballoc-e3d5c3856e2d3489.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/librustc_std_workspace_core-fc04b553479b1629.rlib" "/rust/lib/rustlib/aarch64-linux-android/lib/libcore-937c733736fe0f11.rlib" "-Wl,--end-group" "/rust/lib/rustlib/aarch64-linux-android/lib/libcompiler_builtins-cad74006003ff165.rlib" "-Wl,-Bdynamic" "-lz" "-ldl" "-llog" "-lgcc" "-ldl" "-lc" "-lm" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/rust/lib/rustlib/aarch64-linux-android/lib" "-o" "/target/aarch64-linux-android/debug/deps/broot-ebcf1d1e5d6cd23d" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro,-znow" "-nodefaultlibs"
= note: /target/aarch64-linux-android/debug/deps/liblibgit2_sys-e38e96a560b6b371.rlib(rand.o): In function `getseed':
rand.c:(.text.getseed+0x94): undefined reference to `getloadavg'
clang90: error: linker command failed with exit code 1 (use -v to see invocation)
= help: some `extern` functions couldn't be found; some native libraries may need to be installed or have their path specified
= note: use the `-l` flag to specify native libraries to link
= note: use the `cargo:rustc-link-lib` directive to specify the native libraries to link with Cargo (see https://doc.rust-lang.org/cargo/reference/build-scripts.html#cargorustc-link-libkindname)
error: could not compile `broot` due to previous error
I have no idea what could have changed to make this compilation fail.
The issue has nothing to do with the rand crate. rand.o is the object corresponding to rand.c that's statically linked into libgit2_sys.
A quick Google search shows that getloadavg was added to Android in 2018 and was apparently first available in API 29.
There is an explicit reference to libc (-lc, to counteract the -nodefaultlibs), so perhaps the libc used for cross-compilation is out of date? I'm assuming some libc is found, otherwise you'd have a lot more errors.
The culprit is git2. It compiles with version 0.13 and doesn't with version 0.14.
If this is due to cross-building, you can compile it on a native aarch64 instance using BuilJet. Would be good to have the aarch64 build of this working for aarch64 cloud instances, as they are getting more popular and I use them all the time.
https://buildjet.com/for-github-actions
@eggbean Developping broot costs me already enough, I'm not interested in paying buildjet.
That's understandable, but it's $0.004/min. I've been using it for a while for around a couple of hundred 2-30 minute builds and I've only been charged a few pennies, literally. The free trial also lasts a long time.