From a61e4dbb180c7dabcc932ac03fc6d4d724b9178e Mon Sep 17 00:00:00 2001 From: David McFarland Date: Mon, 29 Dec 2025 14:53:21 -0400 Subject: [PATCH] cygwin-dll-link: move from make-derivation to cross stdenv --- .../cygwin/cygwin-dll-link-hook}/cygwin-dll-link.sh | 2 +- .../cygwin/cygwin-dll-link-hook/default.nix | 13 +++++++++++++ pkgs/os-specific/cygwin/default.nix | 2 ++ pkgs/stdenv/cross/default.nix | 5 ++++- pkgs/stdenv/generic/make-derivation.nix | 1 - 5 files changed, 20 insertions(+), 3 deletions(-) rename pkgs/{build-support/setup-hooks => os-specific/cygwin/cygwin-dll-link-hook}/cygwin-dll-link.sh (98%) create mode 100644 pkgs/os-specific/cygwin/cygwin-dll-link-hook/default.nix diff --git a/pkgs/build-support/setup-hooks/cygwin-dll-link.sh b/pkgs/os-specific/cygwin/cygwin-dll-link-hook/cygwin-dll-link.sh similarity index 98% rename from pkgs/build-support/setup-hooks/cygwin-dll-link.sh rename to pkgs/os-specific/cygwin/cygwin-dll-link-hook/cygwin-dll-link.sh index a9309925e658..371ba633edc8 100644 --- a/pkgs/build-support/setup-hooks/cygwin-dll-link.sh +++ b/pkgs/os-specific/cygwin/cygwin-dll-link-hook/cygwin-dll-link.sh @@ -18,7 +18,7 @@ addOutputDLLPaths() { postInstallHooks+=(addOutputDLLPaths) _dllDeps() { - "$OBJDUMP" -p "$1" \ + @objdump@ -p "$1" \ | sed -n 's/.*DLL Name: \(.*\)/\1/p' \ | sort -u } diff --git a/pkgs/os-specific/cygwin/cygwin-dll-link-hook/default.nix b/pkgs/os-specific/cygwin/cygwin-dll-link-hook/default.nix new file mode 100644 index 000000000000..b3185140f2ea --- /dev/null +++ b/pkgs/os-specific/cygwin/cygwin-dll-link-hook/default.nix @@ -0,0 +1,13 @@ +{ + lib, + makeSetupHook, + binutils-unwrapped, + stdenv, + callPackage, +}: +makeSetupHook { + name = "cygwin-dll-link-hook"; + substitutions = { + objdump = "${lib.getBin binutils-unwrapped}/${stdenv.targetPlatform.config}/bin/objdump"; + }; +} ./cygwin-dll-link.sh diff --git a/pkgs/os-specific/cygwin/default.nix b/pkgs/os-specific/cygwin/default.nix index 09f69ff9f9b2..d1217f7880c1 100644 --- a/pkgs/os-specific/cygwin/default.nix +++ b/pkgs/os-specific/cygwin/default.nix @@ -21,5 +21,7 @@ makeScopeWithSplicing' { # this is here to avoid symlinks being made to cygwin1.dll in /nix/store newlib-cygwin-nobin = callPackage ./newlib-cygwin/nobin.nix { }; newlib-cygwin-headers = callPackage ./newlib-cygwin { headersOnly = true; }; + + cygwinDllLinkHook = callPackage ./cygwin-dll-link-hook { }; }; } diff --git a/pkgs/stdenv/cross/default.nix b/pkgs/stdenv/cross/default.nix index cc53957eee0d..b194c780a319 100644 --- a/pkgs/stdenv/cross/default.nix +++ b/pkgs/stdenv/cross/default.nix @@ -83,7 +83,10 @@ lib.init bootStages || p.isGenode; in f hostPlatform && !(f buildPlatform) - ) buildPackages.updateAutotoolsGnuConfigScriptsHook; + ) buildPackages.updateAutotoolsGnuConfigScriptsHook + ++ lib.optional ( + hostPlatform.isCygwin && !buildPlatform.isCygwin + ) buildPackages.cygwin.cygwinDllLinkHook; }) ); in diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index cdfeb34a2411..d66fbf71035e 100644 --- a/pkgs/stdenv/generic/make-derivation.nix +++ b/pkgs/stdenv/generic/make-derivation.nix @@ -475,7 +475,6 @@ let nativeBuildInputs ++ optional separateDebugInfo' ../../build-support/setup-hooks/separate-debug-info.sh ++ optional isWindows ../../build-support/setup-hooks/win-dll-link.sh - ++ optional isCygwin ../../build-support/setup-hooks/cygwin-dll-link.sh ++ optionals doCheck nativeCheckInputs ++ optionals doInstallCheck nativeInstallCheckInputs;