From bba0d5bef301c9dcf4387e21edd2c9bac21407c1 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Sun, 10 Aug 2025 16:09:33 -0400 Subject: [PATCH 1/2] Rename `patchelf.nix` to `package.nix` Let's just call it by its conventional name, now. --- flake.nix | 2 +- patchelf.nix => package.nix | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename patchelf.nix => package.nix (100%) diff --git a/flake.nix b/flake.nix index 2fc6e640..af26a4c8 100644 --- a/flake.nix +++ b/flake.nix @@ -50,7 +50,7 @@ patchelfFor = pkgs: # this is only - pkgs.callPackage ./patchelf.nix { + pkgs.callPackage ./package.nix { inherit version src; }; diff --git a/patchelf.nix b/package.nix similarity index 100% rename from patchelf.nix rename to package.nix From baf35300a0c187b7cd0566bae42ea13f6a30117b Mon Sep 17 00:00:00 2001 From: John Ericson Date: Sun, 10 Aug 2025 16:07:25 -0400 Subject: [PATCH 2/2] Move Windows static logic out of `patchelf.nix` This is too opinionated for the package itself, which is supposed to be very open-ended about how something it is built. It should instead go with the `NIX_CFLAGS_COMPILE = "-static"` that it is supposed to enable. --- flake.nix | 31 +++++++++++++++++++++++-------- package.nix | 17 +---------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.nix b/flake.nix index af26a4c8..d6356bd6 100644 --- a/flake.nix +++ b/flake.nix @@ -49,7 +49,6 @@ patchelfFor = pkgs: - # this is only pkgs.callPackage ./package.nix { inherit version src; }; @@ -192,6 +191,27 @@ system: let pkgs = nixpkgs.legacyPackages.${system}; + + patchelfForWindowsStatic = + pkgs: + (pkgs.callPackage ./package.nix { + inherit version src; + # On windows we use win32 threads to get a static binary, + # otherwise `-static` below doesn't work. + stdenv = pkgs.overrideCC pkgs.stdenv ( + pkgs.buildPackages.wrapCC ( + pkgs.buildPackages.gcc-unwrapped.override ({ + threadsCross = { + model = "win32"; + package = null; + }; + }) + ) + ); + }).overrideAttrs + (old: { + NIX_CFLAGS_COMPILE = "-static"; + }); in { patchelf = patchelfFor pkgs; @@ -201,13 +221,8 @@ # tests if our testsuite uses target-prefixed executable names. patchelf-musl-cross = patchelfFor pkgs.pkgsCross.musl64; patchelf-netbsd-cross = patchelfFor pkgs.pkgsCross.x86_64-netbsd; - - patchelf-win32 = (patchelfFor pkgs.pkgsCross.mingw32).overrideAttrs (old: { - NIX_CFLAGS_COMPILE = "-static"; - }); - patchelf-win64 = (patchelfFor pkgs.pkgsCross.mingwW64).overrideAttrs (old: { - NIX_CFLAGS_COMPILE = "-static"; - }); + patchelf-win32 = patchelfForWindowsStatic pkgs.pkgsCross.mingw32; + patchelf-win64 = patchelfForWindowsStatic pkgs.pkgsCross.mingwW64; } // lib.optionalAttrs (system != "i686-linux") { patchelf-musl = patchelfFor nixpkgs.legacyPackages.${system}.pkgsMusl; diff --git a/package.nix b/package.nix index 169f456c..c0e334fa 100644 --- a/package.nix +++ b/package.nix @@ -1,26 +1,11 @@ { stdenv, - buildPackages, autoreconfHook, version, src, - overrideCC, }: -let - # on windows we use win32 threads to get a fully static binary - gcc = buildPackages.wrapCC ( - buildPackages.gcc-unwrapped.override ({ - threadsCross = { - model = "win32"; - package = null; - }; - }) - ); - stdenv' = - if (stdenv.cc.isGNU && stdenv.targetPlatform.isWindows) then overrideCC stdenv gcc else stdenv; -in -stdenv'.mkDerivation { +stdenv.mkDerivation { pname = "patchelf"; inherit version src; nativeBuildInputs = [ autoreconfHook ];