From 6feeaea2056c57dbc4e3d61562a806eca3b76870 Mon Sep 17 00:00:00 2001 From: edouardparis Date: Thu, 9 Apr 2026 10:52:58 +0200 Subject: [PATCH] Fix reproducible Windows build by stripping COFF symbol table The GNU linker appends a COFF symbol table to the PE binary containing auxiliary symbol data (sizes, section offsets) that depends on compilation ordering. Since Rust/LLVM processes codegen units in parallel, this metadata varies between builds even with identical inputs. The COFF symbol table is not used at runtime (Windows ignores it) and modern debugging uses separate PDB files instead. Stripping it with --strip-all removes the non-deterministic data and also reduces binary size significantly --- nix/liana-business.nix | 2 +- nix/liana.nix | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/nix/liana-business.nix b/nix/liana-business.nix index 41c927e09..37bf04a60 100644 --- a/nix/liana-business.nix +++ b/nix/liana-business.nix @@ -28,7 +28,7 @@ let SOURCE_DATE_EPOCH = 1; CARGO_BUILD_TARGET = "x86_64-pc-windows-gnu"; - CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUSTFLAGS = "-C link-arg=-Wl,--no-insert-timestamp -C link-arg=-L${pkgs.pkgsCross.mingwW64.windows.pthreads}/lib"; + CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUSTFLAGS = "-C link-arg=-Wl,--no-insert-timestamp -C link-arg=-Wl,--strip-all -C link-arg=-L${pkgs.pkgsCross.mingwW64.windows.pthreads}/lib"; HOST_CC = "${pkgs.stdenv.cc}/bin/cc"; TARGET_CC = "${pkgs.pkgsCross.mingwW64.stdenv.cc}/bin/${pkgs.pkgsCross.mingwW64.stdenv.cc.targetPrefix}cc"; diff --git a/nix/liana.nix b/nix/liana.nix index e98c79db5..1ced4d2a1 100644 --- a/nix/liana.nix +++ b/nix/liana.nix @@ -24,10 +24,7 @@ let SOURCE_DATE_EPOCH = 1; CARGO_BUILD_TARGET = "x86_64-pc-windows-gnu"; - # CARGO_BUILD_RUSTFLAGS = "-C link-arg=-Wl,--no-insert-timestamp -C link-arg=-L${pkgs.pkgsCross.mingwW64.windows.pthreads}/lib"; - # CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUSTFLAGS = "-C link-arg=-Wl,--no-insert-timestamp -C link-arg=-L${pkgs.pkgsCross.mingwW64.windows.pthreads}/lib"; - # CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUSTFLAGS = "-C link-arg=-Wl,--no-insert-timestamp -C link-arg=-Wl,--image-base,0x10000 -C link-arg=-L${pkgs.pkgsCross.mingwW64.windows.pthreads}/lib"; - CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUSTFLAGS = "-C link-arg=-Wl,--no-insert-timestamp -C link-arg=-L${pkgs.pkgsCross.mingwW64.windows.pthreads}/lib"; + CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUSTFLAGS = "-C link-arg=-Wl,--no-insert-timestamp -C link-arg=-Wl,--strip-all -C link-arg=-L${pkgs.pkgsCross.mingwW64.windows.pthreads}/lib"; HOST_CC = "${pkgs.stdenv.cc}/bin/cc"; TARGET_CC = "${pkgs.pkgsCross.mingwW64.stdenv.cc}/bin/${pkgs.pkgsCross.mingwW64.stdenv.cc.targetPrefix}cc";