Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cross-Compilation target (partially?) ignored, linking with wrong linker #2991

Open
BtbN opened this issue Aug 16, 2022 · 16 comments
Open

Cross-Compilation target (partially?) ignored, linking with wrong linker #2991

BtbN opened this issue Aug 16, 2022 · 16 comments
Assignees
Labels

Comments

@BtbN
Copy link

BtbN commented Aug 16, 2022

After some recent update to this repository, building for a non-native cross target (x64 windows in my case) fails.
From the looks of it, cargo (or something else?) invokes the wrong linker. Namely just "cc". That obviously does not go well for linking a Windows target: https://gist.github.com/BtbN/d259f922fdb8ea8a941d03eda5c62049

I've tried everything I could find online in trying to convince it to use the correct linker:

export CC="${FFBUILD_CROSS_PREFIX}gcc"
export CXX="${FFBUILD_CROSS_PREFIX}g++"
export LD="${FFBUILD_CROSS_PREFIX}gcc"
export AR="${FFBUILD_CROSS_PREFIX}ar"

cat <<EOF >$CARGO_HOME/config.toml
[build]
target = "$FFBUILD_RUST_TARGET"
[target.$FFBUILD_RUST_TARGET]
linker = "$LD"
ar = "$AR"
EOF

But to no avail, linking just fails.
This is happening since 85003e6.
Just downgrading to one commit prior fixes the build.

@lu-zero
Copy link
Collaborator

lu-zero commented Aug 16, 2022

What is the host system? those export feel wrong. we need to build the build_script as host, since you want to run it.

@BtbN
Copy link
Author

BtbN commented Aug 16, 2022

@BtbN
Copy link
Author

BtbN commented Sep 12, 2022

Is there any update to this? I'm still unable to cross-compile latest rav1e.

@lu-zero
Copy link
Collaborator

lu-zero commented Sep 12, 2022

https://github.com/BtbN/FFmpeg-Builds/blob/master/scripts.d/50-rav1e.sh#L32 those are wrong you should remove them.

You only need set the linker, since our assembler is nasm.

Tell me if it works better for you :)

@BtbN
Copy link
Author

BtbN commented Sep 12, 2022

I am setting the linker, from that very variable: https://github.com/BtbN/FFmpeg-Builds/blob/master/scripts.d/50-rav1e.sh#L45
Or is there some other undocumented way to set the linker?

@BtbN
Copy link
Author

BtbN commented Sep 12, 2022

I have now tried multiple versions of that, in all cases the config.toml was unchanged:

Only setting CC and CXX results in this:

#0 97.35    Compiling rav1e v0.5.0 (/stage/rav1e)
#0 97.36      Running `rustc --crate-name build_script_build --edition=2021 build.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C debug-assertions=off --cfg 'feature="asm"' --cfg 'feature="av-metrics"' --cfg 'feature="binaries"' --cfg 'feature="capi"' --cfg 'feature="cc"' --cfg 'feature="clap"' --cfg 'feature="clap_complete"' --cfg 'feature="console"' --cfg 'feature="default"' --cfg 'feature="fern"' --cfg 'feature="ivf"' --cfg 'feature="nasm-rs"' --cfg 'feature="nom"' --cfg 'feature="regex"' --cfg 'feature="scan_fmt"' --cfg 'feature="signal-hook"' --cfg 'feature="signal_support"' --cfg 'feature="threading"' --cfg 'feature="y4m"' -C metadata=2021df75338f0a7d -C extra-filename=-2021df75338f0a7d --out-dir /stage/rav1e/target/release/build/rav1e-2021df75338f0a7d -C incremental=/stage/rav1e/target/release/incremental -L dependency=/stage/rav1e/target/release/deps --extern built=/stage/rav1e/target/release/deps/libbuilt-fb9b9d967411a4f0.rlib --extern cc=/stage/rav1e/target/release/deps/libcc-a3e80cc95f689112.rlib --extern nasm_rs=/stage/rav1e/target/release/deps/libnasm_rs-88e1b6462b74c912.rlib --extern regex=/stage/rav1e/target/release/deps/libregex-122697dda275c450.rlib --extern rustc_version=/stage/rav1e/target/release/deps/librustc_version-651463ab87546e30.rlib -L native=/stage/rav1e/target/release/build/libgit2-sys-5b16bd04f89111df/out/build -L native=/opt/ffbuild/lib`
#0 101.0 error: linking with `cc` failed: exit status: 1
#0 101.0   |
#0 101.0   = note: "cc" "-m64" "/tmp/rustcx9dOEw/symbols.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.11w6f12xz0k6ap9a.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.13hvy11qztn360gw.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1fnxi6zmoi6z8a51.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1hemcdtszs8lpwt4.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1i3mkepkgjngzwyo.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1in3jrabiabgzin7.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1uiev1u3nixjsr39.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1ulsacqn9j7vfh7v.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1w2mz78i8ydgppok.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1ypslgtkxsnfxegq.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1zdggg89uu4kaarv.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.22fntm6kw7999cwn.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.2cogejoybjrc4clx.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.2jupmk436b67sx66.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.2qrwdesa5wgg8o09.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.2t7ba3jssh0lgeia.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.2u4o2lthy3d92xok.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.2v0xf39051q83a4n.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.33urduuuam819so5.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.3aqdl53wl69x79u0.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.3evy0ijidspofy2u.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.3gtrjar4ia6augws.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.3gy8krvijnympuin.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.3hh51mki3ls6njmx.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.3k3n0g4johjc5ccf.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.3nkuxntbr9pwae8h.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.3t86ll9k6znvaycd.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.42s5a69t9wvgzmd2.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.46et1vtmd0ttus0d.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.46idkwvxd1yl9crg.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.4c0v7jf9fommmkj0.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.4fwcnp7zp80bi598.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.4j6swcbz2knui9i6.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.4ltoynjoho049tfl.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.4o821r1ktg0k3p0c.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.4s5u6i1y1g09pzr1.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.4y9nc1nf1v2ey13t.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.5cn0kllwksu6iyip.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.5d5yccgumbocb7zy.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.5ewcqsphof616dw5.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.5ffv4ca9n3icvvw8.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.asw80l4vey5q1pa.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.dyi482blyye43dv.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.n0r2l2z3hdk3i31.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.pjwf089qjfudjq.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.wbhwhct6yrxg7aa.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.zqr7evun3a44gbb.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.zzmbn6yq2gvfs6i.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1eryprihxgnhwzy3.rcgu.o" "-Wl,--as-needed" "-L" "/stage/rav1e/target/release/deps" "-L" "/stage/rav1e/target/release/build/libgit2-sys-5b16bd04f89111df/out/build" "-L" "/opt/ffbuild/lib" "-L" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/stage/rav1e/target/release/deps/libbuilt-fb9b9d967411a4f0.rlib" "/stage/rav1e/target/release/deps/libcargo_lock-982097834db840c0.rlib" "/stage/rav1e/target/release/deps/libtoml-2feb15271fea247c.rlib" "/stage/rav1e/target/release/deps/libgit2-b633f74fcddbef95.rlib" "/stage/rav1e/target/release/deps/liburl-f8218bcc0773976b.rlib" "/stage/rav1e/target/release/deps/libidna-ac021db771ea841e.rlib" "/stage/rav1e/target/release/deps/libunicode_normalization-50ff8ad6d14bd57f.rlib" "/stage/rav1e/target/release/deps/libtinyvec-e2870e6c0b32650d.rlib" "/stage/rav1e/target/release/deps/libtinyvec_macros-9af9e5f1cf96a717.rlib" "/stage/rav1e/target/release/deps/libunicode_bidi-f8f956e9ebdff652.rlib" "/stage/rav1e/target/release/deps/libform_urlencoded-1a67e678f4b7c417.rlib" "/stage/rav1e/target/release/deps/libpercent_encoding-f182e5e2e50b41f5.rlib" "/stage/rav1e/target/release/deps/liblog-24f3b94a0a27ab55.rlib" "/stage/rav1e/target/release/deps/liblibgit2_sys-3d63dc4f633124f7.rlib" "/stage/rav1e/target/release/deps/liblibz_sys-b0f7112a6050640c.rlib" "/stage/rav1e/target/release/deps/libbitflags-9ddc72c4f00e101c.rlib" "/stage/rav1e/target/release/deps/libchrono-d1d8f727d4ffa89f.rlib" "/stage/rav1e/target/release/deps/libiana_time_zone-70e7e1e658397031.rlib" "/stage/rav1e/target/release/deps/libnum_integer-faa6c19d57f689bd.rlib" "/stage/rav1e/target/release/deps/libnum_traits-aef252f59cb96583.rlib" "/stage/rav1e/target/release/deps/libtime-16ac05b8b12e900c.rlib" "/stage/rav1e/target/release/deps/libcc-a3e80cc95f689112.rlib" "/stage/rav1e/target/release/deps/libjobserver-a2bdf7c1bd229476.rlib" "/stage/rav1e/target/release/deps/libnasm_rs-88e1b6462b74c912.rlib" "/stage/rav1e/target/release/deps/librayon-eafaea7a6854a8dd.rlib" "/stage/rav1e/target/release/deps/librayon_core-cb25b94a33b6e1bb.rlib" "/stage/rav1e/target/release/deps/libnum_cpus-31e1c68056ea593c.rlib" "/stage/rav1e/target/release/deps/liblibc-181d65e2d19ac979.rlib" "/stage/rav1e/target/release/deps/libcrossbeam_deque-73092a02e39e2693.rlib" "/stage/rav1e/target/release/deps/libcrossbeam_epoch-253e4f814e340a5f.rlib" "/stage/rav1e/target/release/deps/libmemoffset-ca958fd968783b20.rlib" "/stage/rav1e/target/release/deps/libscopeguard-0afe6fbbcf46349a.rlib" "/stage/rav1e/target/release/deps/libcrossbeam_channel-b096ca63c2e0a613.rlib" "/stage/rav1e/target/release/deps/libcrossbeam_utils-f1a2733becec8d99.rlib" "/stage/rav1e/target/release/deps/libonce_cell-582dfc0ac14c7469.rlib" "/stage/rav1e/target/release/deps/libcfg_if-18f4ea1345583903.rlib" "/stage/rav1e/target/release/deps/libeither-4dc13b14e9482466.rlib" "/stage/rav1e/target/release/deps/librustc_version-651463ab87546e30.rlib" "/stage/rav1e/target/release/deps/libsemver-0115381a24e28310.rlib" "/stage/rav1e/target/release/deps/libserde-db4ab35ec75e6772.rlib" "-Wl,--start-group" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-8f1929c73c3f8167.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-e359d865975ccf21.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-b886fd10c5a7c7c0.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libmemchr-9d7c322d48daa475.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-08ae1606a951cabe.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-682a81c4b2133b72.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-a73b3512c88de071.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-7b5ec4c918d9f957.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-65c63cf3af0af657.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-4a53f0a2785abc6a.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-868e2d515c28d027.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-394ad2d73aede76a.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-19c77e4dc3dcb87e.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-fb44a42088c9369a.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-61a7402e61a5b0e0.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-63f8356c87a0d0e8.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-a506e577d917828c.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-fc1fb63210fdafad.rlib" "-Wl,--end-group" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-c21be34a5cae8449.rlib" "-Wl,-Bdynamic" "-lz" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro,-znow" "-nodefaultlibs"
#0 101.0   = note: /usr/bin/ld: /stage/rav1e/target/release/deps/liblibgit2_sys-3d63dc4f633124f7.rlib(attr_file.o): in function `git_attr_file__new':
#0 101.0           /opt/cargo/registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.26+1.3.0/libgit2/src/attr_file.c:41: undefined reference to `git_mutex_init'
#0 101.0           /usr/bin/ld: /stage/rav1e/target/release/deps/liblibgit2_sys-3d63dc4f633124f7.rlib(attr_file.o): in function `git_attr_file__clear_rules':
#0 101.0           /opt/cargo/registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.26+1.3.0/libgit2/src/attr_file.c:75: undefined reference to `git_mutex_unlock'
#0 101.0           /usr/bin/ld: /opt/cargo/registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.26+1.3.0/libgit2/src/attr_file.c:65: undefined reference to `git_mutex_lock'
#0 101.0           /usr/bin/ld: /stage/rav1e/target/release/deps/liblibgit2_sys-3d63dc4f633124f7.rlib(attr_file.o): in function `attr_file_free':
#0 101.0           /opt/cargo/registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.26+1.3.0/libgit2/src/attr_file.c:22: undefined reference to `git_mutex_lock'
[...]

Not setting CC/CXX/LD/AR at all results in:

#0 66.93    Compiling rav1e v0.5.0 (/stage/rav1e)
#0 66.96      Running `rustc --crate-name build_script_build --edition=2021 build.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C debug-assertions=off --cfg 'feature="asm"' --cfg 'feature="av-metrics"' --cfg 'feature="binaries"' --cfg 'feature="capi"' --cfg 'feature="cc"' --cfg 'feature="clap"' --cfg 'feature="clap_complete"' --cfg 'feature="console"' --cfg 'feature="default"' --cfg 'feature="fern"' --cfg 'feature="ivf"' --cfg 'feature="nasm-rs"' --cfg 'feature="nom"' --cfg 'feature="regex"' --cfg 'feature="scan_fmt"' --cfg 'feature="signal-hook"' --cfg 'feature="signal_support"' --cfg 'feature="threading"' --cfg 'feature="y4m"' -C metadata=2021df75338f0a7d -C extra-filename=-2021df75338f0a7d --out-dir /stage/rav1e/target/release/build/rav1e-2021df75338f0a7d -C incremental=/stage/rav1e/target/release/incremental -L dependency=/stage/rav1e/target/release/deps --extern built=/stage/rav1e/target/release/deps/libbuilt-fb9b9d967411a4f0.rlib --extern cc=/stage/rav1e/target/release/deps/libcc-a3e80cc95f689112.rlib --extern nasm_rs=/stage/rav1e/target/release/deps/libnasm_rs-88e1b6462b74c912.rlib --extern regex=/stage/rav1e/target/release/deps/libregex-122697dda275c450.rlib --extern rustc_version=/stage/rav1e/target/release/deps/librustc_version-651463ab87546e30.rlib -L native=/stage/rav1e/target/release/build/libgit2-sys-5b16bd04f89111df/out/build -L native=/opt/ffbuild/lib`
#0 69.96 error: linking with `cc` failed: exit status: 1
#0 69.96   |
#0 69.96   = note: "cc" "-m64" "/tmp/rustckAvlem/symbols.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.11w6f12xz0k6ap9a.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.13hvy11qztn360gw.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1fnxi6zmoi6z8a51.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1hemcdtszs8lpwt4.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1i3mkepkgjngzwyo.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1in3jrabiabgzin7.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1uiev1u3nixjsr39.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1ulsacqn9j7vfh7v.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1w2mz78i8ydgppok.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1ypslgtkxsnfxegq.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1zdggg89uu4kaarv.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.22fntm6kw7999cwn.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.2cogejoybjrc4clx.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.2jupmk436b67sx66.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.2qrwdesa5wgg8o09.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.2t7ba3jssh0lgeia.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.2u4o2lthy3d92xok.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.2v0xf39051q83a4n.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.33urduuuam819so5.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.3aqdl53wl69x79u0.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.3evy0ijidspofy2u.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.3gtrjar4ia6augws.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.3gy8krvijnympuin.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.3hh51mki3ls6njmx.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.3k3n0g4johjc5ccf.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.3nkuxntbr9pwae8h.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.3t86ll9k6znvaycd.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.42s5a69t9wvgzmd2.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.46et1vtmd0ttus0d.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.46idkwvxd1yl9crg.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.4c0v7jf9fommmkj0.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.4fwcnp7zp80bi598.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.4j6swcbz2knui9i6.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.4ltoynjoho049tfl.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.4o821r1ktg0k3p0c.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.4s5u6i1y1g09pzr1.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.4y9nc1nf1v2ey13t.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.5cn0kllwksu6iyip.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.5d5yccgumbocb7zy.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.5ewcqsphof616dw5.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.5ffv4ca9n3icvvw8.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.asw80l4vey5q1pa.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.dyi482blyye43dv.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.n0r2l2z3hdk3i31.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.pjwf089qjfudjq.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.wbhwhct6yrxg7aa.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.zqr7evun3a44gbb.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.zzmbn6yq2gvfs6i.rcgu.o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d.1eryprihxgnhwzy3.rcgu.o" "-Wl,--as-needed" "-L" "/stage/rav1e/target/release/deps" "-L" "/stage/rav1e/target/release/build/libgit2-sys-5b16bd04f89111df/out/build" "-L" "/opt/ffbuild/lib" "-L" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/stage/rav1e/target/release/deps/libbuilt-fb9b9d967411a4f0.rlib" "/stage/rav1e/target/release/deps/libcargo_lock-982097834db840c0.rlib" "/stage/rav1e/target/release/deps/libtoml-2feb15271fea247c.rlib" "/stage/rav1e/target/release/deps/libgit2-b633f74fcddbef95.rlib" "/stage/rav1e/target/release/deps/liburl-f8218bcc0773976b.rlib" "/stage/rav1e/target/release/deps/libidna-ac021db771ea841e.rlib" "/stage/rav1e/target/release/deps/libunicode_normalization-50ff8ad6d14bd57f.rlib" "/stage/rav1e/target/release/deps/libtinyvec-e2870e6c0b32650d.rlib" "/stage/rav1e/target/release/deps/libtinyvec_macros-9af9e5f1cf96a717.rlib" "/stage/rav1e/target/release/deps/libunicode_bidi-f8f956e9ebdff652.rlib" "/stage/rav1e/target/release/deps/libform_urlencoded-1a67e678f4b7c417.rlib" "/stage/rav1e/target/release/deps/libpercent_encoding-f182e5e2e50b41f5.rlib" "/stage/rav1e/target/release/deps/liblog-24f3b94a0a27ab55.rlib" "/stage/rav1e/target/release/deps/liblibgit2_sys-3d63dc4f633124f7.rlib" "/stage/rav1e/target/release/deps/liblibz_sys-b0f7112a6050640c.rlib" "/stage/rav1e/target/release/deps/libbitflags-9ddc72c4f00e101c.rlib" "/stage/rav1e/target/release/deps/libchrono-d1d8f727d4ffa89f.rlib" "/stage/rav1e/target/release/deps/libiana_time_zone-70e7e1e658397031.rlib" "/stage/rav1e/target/release/deps/libnum_integer-faa6c19d57f689bd.rlib" "/stage/rav1e/target/release/deps/libnum_traits-aef252f59cb96583.rlib" "/stage/rav1e/target/release/deps/libtime-16ac05b8b12e900c.rlib" "/stage/rav1e/target/release/deps/libcc-a3e80cc95f689112.rlib" "/stage/rav1e/target/release/deps/libjobserver-a2bdf7c1bd229476.rlib" "/stage/rav1e/target/release/deps/libnasm_rs-88e1b6462b74c912.rlib" "/stage/rav1e/target/release/deps/librayon-eafaea7a6854a8dd.rlib" "/stage/rav1e/target/release/deps/librayon_core-cb25b94a33b6e1bb.rlib" "/stage/rav1e/target/release/deps/libnum_cpus-31e1c68056ea593c.rlib" "/stage/rav1e/target/release/deps/liblibc-181d65e2d19ac979.rlib" "/stage/rav1e/target/release/deps/libcrossbeam_deque-73092a02e39e2693.rlib" "/stage/rav1e/target/release/deps/libcrossbeam_epoch-253e4f814e340a5f.rlib" "/stage/rav1e/target/release/deps/libmemoffset-ca958fd968783b20.rlib" "/stage/rav1e/target/release/deps/libscopeguard-0afe6fbbcf46349a.rlib" "/stage/rav1e/target/release/deps/libcrossbeam_channel-b096ca63c2e0a613.rlib" "/stage/rav1e/target/release/deps/libcrossbeam_utils-f1a2733becec8d99.rlib" "/stage/rav1e/target/release/deps/libonce_cell-582dfc0ac14c7469.rlib" "/stage/rav1e/target/release/deps/libcfg_if-18f4ea1345583903.rlib" "/stage/rav1e/target/release/deps/libeither-4dc13b14e9482466.rlib" "/stage/rav1e/target/release/deps/librustc_version-651463ab87546e30.rlib" "/stage/rav1e/target/release/deps/libsemver-0115381a24e28310.rlib" "/stage/rav1e/target/release/deps/libserde-db4ab35ec75e6772.rlib" "-Wl,--start-group" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-8f1929c73c3f8167.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-e359d865975ccf21.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-b886fd10c5a7c7c0.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libmemchr-9d7c322d48daa475.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-08ae1606a951cabe.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-682a81c4b2133b72.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-a73b3512c88de071.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-7b5ec4c918d9f957.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-65c63cf3af0af657.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-4a53f0a2785abc6a.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-868e2d515c28d027.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-394ad2d73aede76a.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-19c77e4dc3dcb87e.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-fb44a42088c9369a.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-61a7402e61a5b0e0.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-63f8356c87a0d0e8.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-a506e577d917828c.rlib" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-fc1fb63210fdafad.rlib" "-Wl,--end-group" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-c21be34a5cae8449.rlib" "-Wl,-Bdynamic" "-lz" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/opt/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/stage/rav1e/target/release/build/rav1e-2021df75338f0a7d/build_script_build-2021df75338f0a7d" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro,-znow" "-nodefaultlibs"
#0 69.96   = note: /usr/bin/ld: BFD (GNU Binutils for Ubuntu) 2.38 assertion fail ../../bfd/reloc.c:8580
#0 69.96           /opt/ffbuild/lib/libz.a(crc32.o):crc32.c:(.pdata+0x0): dangerous relocation: collect2: fatal error: ld terminated with signal 11 [Segmentation fault]
#0 69.96           compilation terminated.
#0 69.96
#0 69.96
#0 69.96 error: could not compile `rav1e` due to previous error
#0 69.96
#0 69.96 Caused by:
#0 69.97   process didn't exit successfully: `rustc --crate-name build_script_build --edition=2021 build.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C debug-assertions=off --cfg 'feature="asm"' --cfg 'feature="av-metrics"' --cfg 'feature="binaries"' --cfg 'feature="capi"' --cfg 'feature="cc"' --cfg 'feature="clap"' --cfg 'feature="clap_complete"' --cfg 'feature="console"' --cfg 'feature="default"' --cfg 'feature="fern"' --cfg 'feature="ivf"' --cfg 'feature="nasm-rs"' --cfg 'feature="nom"' --cfg 'feature="regex"' --cfg 'feature="scan_fmt"' --cfg 'feature="signal-hook"' --cfg 'feature="signal_support"' --cfg 'feature="threading"' --cfg 'feature="y4m"' -C metadata=2021df75338f0a7d -C extra-filename=-2021df75338f0a7d --out-dir /stage/rav1e/target/release/build/rav1e-2021df75338f0a7d -C incremental=/stage/rav1e/target/release/incremental -L dependency=/stage/rav1e/target/release/deps --extern built=/stage/rav1e/target/release/deps/libbuilt-fb9b9d967411a4f0.rlib --extern cc=/stage/rav1e/target/release/deps/libcc-a3e80cc95f689112.rlib --extern nasm_rs=/stage/rav1e/target/release/deps/libnasm_rs-88e1b6462b74c912.rlib --extern regex=/stage/rav1e/target/release/deps/libregex-122697dda275c450.rlib --extern rustc_version=/stage/rav1e/target/release/deps/librustc_version-651463ab87546e30.rlib -L native=/stage/rav1e/target/release/build/libgit2-sys-5b16bd04f89111df/out/build -L native=/opt/ffbuild/lib` (exit status: 1)
#0 70.00 Error: CliError { error: Some(1 job failed), exit_code: 101 }

@lu-zero
Copy link
Collaborator

lu-zero commented Sep 12, 2022

The problem is due our build.rs using libgit2 to extract some git information and apparently your image/linker has a faulty libz.

Try to update your base image and the problem should solve by itself.

@lu-zero
Copy link
Collaborator

lu-zero commented Sep 12, 2022

I am setting the linker, from that very variable: https://github.com/BtbN/FFmpeg-Builds/blob/master/scripts.d/50-rav1e.sh#L45 Or is there some other undocumented way to set the linker?

It is documented you can set it via an env variable, I think I linked you the document above :)

Anyway setting the C compiler to the cross compiler was a problem and it was hiding this additional problem in libz and the linker apparently, hopefully an updated libz will sort out that.

@BtbN
Copy link
Author

BtbN commented Sep 12, 2022

The base image is as up to date as it can get.
It's Ubuntu 22.04, and rust has been freshly installed via rustup, so is even more up to date than Ubuntu itself.
Or what base image do you mean?

@BtbN
Copy link
Author

BtbN commented Sep 12, 2022

Oh, I see what you mean now with libz.
The reason the linker hates that is quite simple:
/opt/ffbuild is the cross-prefix. So /opt/ffbuild/lib/libz.a is for Windows, and apparently rust is currently compiling something for the host?

@BtbN
Copy link
Author

BtbN commented Sep 12, 2022

Unsetting PKG_CONFIG_PATH/LIBDIR so it doesn't find the cross environments libs anymore solves that issue.
But I'm not sure if that can be called a fix, or merely a workaround that happens to work in this case.
What happens if something else relies on pkg-config to find libraries specifically for the cross target?

@lu-zero
Copy link
Collaborator

lu-zero commented Sep 12, 2022

It is a fix, you have to set the correct environment variables :) https://docs.rs/system-deps/latest/system_deps/#overriding-build-flags

@BtbN
Copy link
Author

BtbN commented Sep 12, 2022

Well, literally every other cross compilation environment I have ever worked with expected pkg-config to find the cross libraries.
This fix also breaks the linux builds(which are basically also cross-compiled using a special old-glibc-target), so the build scripts now looks super messy: https://github.com/BtbN/FFmpeg-Builds/blob/bd13b3b07df20f2e7dde7147f99e61f26e7c58d9/scripts.d/50-rav1e.sh#L32

I have trouble making sense of that system_deps documentation. Does that imply that I would have to know the dependencies of all dependencies?
And then set their link flags in those env vars? That doesn't seem right.

No idea how other projects handle that situation with host-tools needing pkg-config itself. Never encountered that elsewhere so far.
The pkg-config documentation itself says to set PKG_CONFIG_LIBDIR to the cross-environment when cross compiling, and so far all build systems agreed with that.

@lu-zero
Copy link
Collaborator

lu-zero commented Sep 12, 2022

let me open gdesmott/system-deps#62 and see if we can fix it better.

@BtbN
Copy link
Author

BtbN commented Sep 12, 2022

I've finally found a set of variables that seems to consistently work across all targets and look decently sane, though annoying: https://github.com/BtbN/FFmpeg-Builds/blob/8bc793644e535cc96bfe0710ecd0cd3080c16be9/scripts.d/50-rav1e.sh#L32

The pkg-config issue still stands, but is not at all an issue of rav1e, so feel free to close this if you think it's appropriate.

@lu-zero
Copy link
Collaborator

lu-zero commented Sep 13, 2022

We can move the discussion on the system-deps issue and probably we can try to improve the situation at cargo level (or in cargo-c since I guess you'll get through it)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants