!ayCRiZriCVtuCUpeLp:nixos.org

Nix Cross Compiling

483 Members
101 Servers

Load older messages


SenderMessageTime
12 Apr 2025
@oak:universumi.fioak πŸ³οΈβ€πŸŒˆβ™₯️ changed their display name from oak to oak - mikatammi.fi ÄÄNESTΓ„.12:12:02
@oak:universumi.fioak πŸ³οΈβ€πŸŒˆβ™₯️ changed their profile picture.12:13:51
@oak:universumi.fioak πŸ³οΈβ€πŸŒˆβ™₯️ changed their display name from oak - mikatammi.fi ÄÄNESTΓ„ to oak - mikatammi.fi.12:56:27
13 Apr 2025
@2xsaiko:tchncs.de@2xsaiko:tchncs.de left the room.00:35:58
@zekeriyaoz:matrix.orgnixosfanboy joined the room.08:20:08
@zekeriyaoz:matrix.orgnixosfanboy changed their display name from zekeriya ΓΆz to nixosfanboy.08:25:19
@zekeriyaoz:matrix.orgnixosfanboy changed their profile picture.08:26:48
15 Apr 2025
@kx_:matrix.orgWillow joined the room.18:23:26
@kx_:matrix.orgWillow

I'm trying to cross compile a rust binary from x86_64-linux to windows using Nix. I built a flake (https://github.com/Kek5chen/syrillian/blob/0e2aa5f65039eddf9a790c76f9f7538c05e2ad50/flake.nix#L56)

The rust dependencies need some c libraries that also need to be compiled.

Here's the issue:

syrillian-x86_64-w64-mingw32> error: linking with `/nix/store/b5bkhvxw5wm7mbqfvls6x1qc9jiqkfp5-x86_64-w64-mingw32-gcc-wrapper-14-20241116/bin/x86_64-w64-mingw32-cc` failed: exit status: 1
syrillian-x86_64-w64-mingw32>   |

.....
syrillian-x86_64-w64-mingw32>   = note: some arguments are omitted. use `--verbose` to show all linker arguments
syrillian-x86_64-w64-mingw32>   = note: /nix/store/z2h4v7d7mrslcnxmpq195czvjiwd9vgv-x86_64-w64-mingw32-binutils-2.43.1/bin/x86_64-w64-mingw32-ld: /nix/store/1nyv07jn5hj04f5j10gwzyafh07fr2p6-x86_64-w64-mingw32-gcc-14-20241116/lib/gcc/x86_64-w64-mingw32/14.2.1/libgcc_eh.a(emutls.o):(.text+0x5c): undefined reference to `_MCF_tls_key_new'
syrillian-x86_64-w64-mingw32>           /nix/store/z2h4v7d7mrslcnxmpq195czvjiwd9vgv-x86_64-w64-mingw32-binutils-2.43.1/bin/x86_64-w64-mingw32-ld: /nix/store/1nyv07jn5hj04f5j10gwzyafh07fr2p6-x86_64-w64-mingw32-gcc-14-20241116/lib/gcc/x86_64-w64-mingw32/14.2.1/libgcc_eh.a(emutls.o):(.text+0x9b): undefined reference to `_MCF_thread_self'
syrillian-x86_64-w64-mingw32>           /nix/store/z2h4v7d7mrslcnxmpq195czvjiwd9vgv-x86_64-w64-mingw32-binutils-2.43.1/bin/x86_64-w64-mingw32-ld: /nix/store/1nyv07jn5hj04f5j10gwzyafh07fr2p6-x86_64-w64-mingw32-gcc-14-20241116/lib/gcc/x86_64-w64-mingw32/14.2.1/libgcc_eh.a(emutls.o):(.text+0xb4): undefined reference to `__MCF_tls_table_get'
syrillian-x86_64-w64-mingw32>           /nix/store/z2h4v7d7mrslcnxmpq195czvjiwd9vgv-x86_64-w64-mingw32-binutils-2.43.1/bin/x86_64-w64-mingw32-ld: /nix/store/1nyv07jn5hj04f5j10gwzyafh07fr2p6-x86_64-w64-mingw32-gcc-14-20241116/lib/gcc/x86_64-w64-mingw32/14.2.1/libgcc_eh.a(emutls.o):(.text+0x110): undefined reference to `_MCF_once_wait_slow'
syrillian-x86_64-w64-mingw32>           /nix/store/z2h4v7d7mrslcnxmpq195czvjiwd9vgv-x86_64-w64-mingw32-binutils-2.43.1/bin/x86_64-w64-mingw32-ld: /nix/store/1nyv07jn5hj04f5j10gwzyafh07fr2p6-x86_64-w64-mingw32-gcc-14-20241116/lib/gcc/x86_64-w64-mingw32/14.2.1/libgcc_eh.a(emutls.o):(.text+0x126): undefined reference to `__MCF_gthr_call_once_seh_take_over'
syrillian-x86_64-w64-mingw32>           /nix/store/z2h4v7d7mrslcnxmpq195czvjiwd9vgv-x86_64-w64-mingw32-binutils-2.43.1/bin/x86_64-w64-mingw32-ld: /nix/store/1nyv07jn5hj04f5j10gwzyafh07fr2p6-x86_64-w64-mingw32-gcc-14-20241116/lib/gcc/x86_64-w64-mingw32/14.2.1/libgcc_eh.a(emutls.o):(.text+0x16b): undefined reference to `_MCF_mutex_unlock_slow'
syrillian-x86_64-w64-mingw32>           /nix/store/z2h4v7d7mrslcnxmpq195czvjiwd9vgv-x86_64-w64-mingw32-binutils-2.43.1/bin/x86_64-w64-mingw32-ld: /nix/store/1nyv07jn5hj04f5j10gwzyafh07fr2p6-x86_64-w64-mingw32-gcc-14-20241116/lib/gcc/x86_64-w64-mingw32/14.2.1/libgcc_eh.a(emutls.o):(.text+0x1a6): undefined reference to `__MCF_tls_table_xset'
syrillian-x86_64-w64-mingw32>           /nix/store/z2h4v7d7mrslcnxmpq195czvjiwd9vgv-x86_64-w64-mingw32-binutils-2.43.1/bin/x86_64-w64-mingw32-ld: /nix/store/1nyv07jn5hj04f5j10gwzyafh07fr2p6-x86_64-w64-mingw32-gcc-14-20241116/lib/gcc/x86_64-w64-mingw32/14.2.1/libgcc_eh.a(emutls.o):(.text+0x2c1): undefined reference to `_MCF_mutex_lock_slow'
syrillian-x86_64-w64-mingw32>           collect2: error: ld returned 1 exit status

I can post the full invocation on gist.

18:27:57
@curid:matrix.orgCuridwhat pulls openssl-sys?18:32:57
@kx_:matrix.orgWillowi don't understand the question?18:33:21
@kx_:matrix.orgWillow* i don't understand the question, could you rephrase?18:33:28
@kx_:matrix.orgWillowI think assimp needs it as a built time dependency18:34:49
@curid:matrix.orgCuridI don't see anything in the dependency list that would need it https://crates.io/crates/scyllax/0.2.1/dependencies18:35:00
@kx_:matrix.orgWillow* I think russimp needs it as a built time dependency18:35:02
@kx_:matrix.orgWillowthat's not my tool.18:35:17
@kx_:matrix.orgWillowhttps://crates.io/crates/syrillian/0.1.2/dependencies which depends on https://crates.io/crates/russimp/3.2.0/dependencies which depends on https://crates.io/crates/russimp-sys/2.0.2/dependencies which depends on reqwest which depends on openssl18:36:15
@curid:matrix.orgCuridRedacted or Malformed Event18:36:31
@kx_:matrix.orgWillowbut even with openssl-sys gone, russimp-sys still is a c library that needs compilation18:38:34
@curid:matrix.orgCuridI don't think rustls-tls depend on openssl https://github.com/jkvargas/russimp-sys/blob/main/Cargo.toml#L5618:40:07
@curid:matrix.orgCuridmight save you some headache though18:40:19
@kx_:matrix.orgWillow
β”‚   β”œβ”€β”€ russimp-sys v2.0.2
β”‚   β”‚   [build-dependencies]
β”‚   β”‚   β”œβ”€β”€ reqwest v0.11.27
β”‚   β”‚   β”‚   β”œβ”€β”€ hyper-tls v0.5.0
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ bytes v1.9.0
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ hyper v0.14.32 (*)
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ native-tls v0.2.12
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ log v0.4.25
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ openssl v0.10.68
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ bitflags v2.8.0
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cfg-if v1.0.0
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ foreign-types v0.3.2
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── foreign-types-shared v0.1.1
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libc v0.2.169
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ once_cell v1.20.2
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ openssl-macros v0.1.1 (proc-macro)
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ proc-macro2 v1.0.93 (*)
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ quote v1.0.38 (*)
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── syn v2.0.96 (*)
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── openssl-sys v0.9.104
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚       └── libc v0.2.169
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚       [build-dependencies]
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ cc v1.2.10 (*)
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ pkg-config v0.3.31
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚       └── vcpkg v0.2.15
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ openssl-probe v0.1.5
β”‚   β”‚   β”‚   β”‚   β”‚   └── openssl-sys v0.9.104 (*)

18:43:05
@kx_:matrix.orgWillowreqwest is totally overkill there, and i've already complained about their shitty build time stuff. i don't think this is the issue though.18:44:32
@rosssmyth:matrix.orgrosssmyth For the targets listed in lib/systems/examples.nix, what is generally considered "canon"? My guess is GCC since that's what the default stdenv uses. As far as I can tell there is no concept of a "Clang triple," only a "rustTarget," in terms of platform translations. But there are cases where Clang and GCC (and Zig (at least it used to, I'd have to check now days), Bazel, ...) diverge. Should more mappings be added to lib/systems? 18:54:07
16 Apr 2025
@awwpotato:envs.netawwpotato (she/her) joined the room.01:48:36
@rosscomputerguy:matrix.orgTristan RossA clang triple is very similar to a GCC triple in a way that most of the time it should just work.02:16:09
@rosscomputerguy:matrix.orgTristan RossAnd it's likely the amount of possible clang triples are more than what GCC supports.02:16:40
@rosssmyth:matrix.orgrosssmythSure. But what about the times when it doesn't work02:16:56
@rosscomputerguy:matrix.orgTristan RossAlso, the thing with the default stdenv is that is only true for Linux.02:16:59
@rosscomputerguy:matrix.orgTristan RossIt's rare, rare enough you're more likely to get asserts within nix or nothing absolutely supports.02:17:26

Show newer messages


Back to Room ListRoom Version: 6