Open mcarson-sandia opened 7 months ago
I did some testing and everything works on nightly-2024-02-26-x86_64-unknown-linux-gnu but is broken on any nightly version after that.
can you try this with cross from the main branch instead?
cargo install cross --git https://github.com/cross-rs/cross
That appears to have fixed it on the latest nightly. Is there an ETA on when the next release will be so I can switch our pipelines back to a tagged release?
Let me know if I should make this a new issue but while that fix did work on my local tests with a bare bones project when applying it to our CI/CD pipelines it fails with the following error (pinning to the 2024-02-26 nightly does work though with no other changes).
$ cross build --target x86_64-pc-windows-gnu --features vendored-openssl --release
[cross] warning: got volume of "/usr/local/share/ca-certificates/ca.crt:/usr/local/share/ca-certificates/ca.crt" which is not a valid environment variable name. the proper syntax is `volumes = ["ENVVAR=/path/to/directory"]`
that warning is explaining itself, you have a malformatted entry in the config. the reason it fails in CI is because warnings are treated as errors in CI now due to many people missing the warnings that cross gives, and sometimes even believing they are using cross when they actually weren't
Checklist
Describe your issue
I am unable to cross compile for windows on the 1.78.0 nightly due to the following error (it also occurs on new cargo init project).
➜ cross-test git:(master) ✗ cross build --target x86_64-pc-windows-gnu --release Compiling cross-test v0.1.0 (/project) error: linking with
x86_64-w64-mingw32-gcc` failed: exit status: 1 | = note: LC_ALL="C" PATH="/rust/lib/rustlib/x86_64-unknown-linux-gnu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/rust/bin" VSLANG="1033" "x86_64-w64-mingw32-gcc" "-fno-use-linker-plugin" "-Wl,--dynamicbase" "-Wl,--disable-auto-image-base" "-m64" "-Wl,--high-entropy-va" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/rsbegin.o" "/tmp/rustcjyWv8U/symbols.o" "/target/x86_64-pc-windows-gnu/release/deps/cross_test-451dd26ad7f599f1.cross_test.a1c4cb6c121cfa17-cgu.0.rcgu.o" "/target/x86_64-pc-windows-gnu/release/deps/cross_test-451dd26ad7f599f1.46gbdv0597lf24is.rcgu.o" "-L" "/target/x86_64-pc-windows-gnu/release/deps" "-L" "/target/release/deps" "-L" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib" "-Wl,-Bstatic" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/libstd-53284af569e5f6ed.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/libpanic_unwind-1886f36c6527e50c.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/libobject-78ff9a17aa8e2177.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/libmemchr-f41420a0b26cc037.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/libaddr2line-8c4034e188fcccc2.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/libgimli-e63890247676e919.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/librustc_demangle-77e65611771dd860.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/libstd_detect-6b3d6f307421a89a.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/libhashbrown-03166ff941b0d917.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/librustc_std_workspace_alloc-0cf300b3796ae454.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/libminiz_oxide-52f9046473ace87d.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/libadler-9db720405742c618.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/libunwind-1bdaeecf79a3def1.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/libcfg_if-9df93765f1cbf124.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/liblibc-bca6b94a9de46761.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/liballoc-7724ac2fef16edeb.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/librustc_std_workspace_core-430c8ff8148a7795.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/libcore-0a5a55778bdea4e0.rlib" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/libcompiler_builtins-9cd876ce3c045fc3.rlib" "-Wl,-Bdynamic" "-lkernel32" "-ladvapi32" "-lkernel32" "-lntdll" "-luserenv" "-lws2_32" "-lsynchronization" "-lkernel32" "-lws2_32" "-lkernel32" "-lntdll" "-lkernel32" "-lgcc_eh" "-l:libpthread.a" "-lmsvcrt" "-lmingwex" "-lmingw32" "-lgcc" "-lmsvcrt" "-luser32" "-lkernel32" "-Wl,--nxcompat" "-L" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib" "-o" "/target/x86_64-pc-windows-gnu/release/deps/cross_test-451dd26ad7f599f1.exe" "-Wl,--gc-sections" "-no-pie" "-Wl,-O1" "-nodefaultlibs" "/rust/lib/rustlib/x86_64-pc-windows-gnu/lib/rsend.o" = note: /usr/bin/x86_64-w64-mingw32-ld: cannot find -lsynchronization collect2: error: ld returned 1 exit statuserror: could not compile
cross-test
(bin "cross-test") due to 1 previous error `https://github.com/cross-rs/cross/issues/1445 is close but that is specific to a python lib where as I believe the synchronization library should be in the standard mingw install?
What target(s) are you cross-compiling for?
No response
Which operating system is the host (e.g computer cross is on) running?
What architecture is the host?
What container engine is cross using?
cross version
cross 0.2.5
Example
Additional information / notes
I tested this on an ubuntu 22 host, in an ubuntu 22 container and in an ubuntu 24 container. I have made sure my mingw package is up to date.