From f1cf3829b9776df5307b5ad43da30d8e9639e4b9 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Wed, 2 Jul 2025 10:50:03 +0200 Subject: [PATCH] binutils-unwrapped-all-targets: fix build on Darwin gas isn't built for Darwin, so previously this failed when trying to install it: make: Entering directory '/private/tmp/nix-build-binutils-2.44.drv-0/build' make: *** /private/tmp/nix-build-binutils-2.44.drv-0/build-arm64-apple-darwin/gas: No such file or directory. Stop. make: Leaving directory '/private/tmp/nix-build-binutils-2.44.drv-0/build' Fixes: 437ad124ac97 ("binutils-unwrapped-all-targets: per-target gas") --- pkgs/development/tools/misc/binutils/default.nix | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix index 5c7ddde8c0c6..8e6f6605079d 100644 --- a/pkgs/development/tools/misc/binutils/default.nix +++ b/pkgs/development/tools/misc/binutils/default.nix @@ -38,6 +38,9 @@ let # on the PATH to both be usable. targetPrefix = lib.optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-"; + # gas is disabled for some targets via noconfigdirs in configure. + targetHasGas = !stdenv.targetPlatform.isDarwin; + # gas isn't multi-target, even with --enable-targets=all, so we do # separate builds of just gas for each target. # @@ -45,7 +48,9 @@ let # additional targets here as required. allGasTargets = allGasTargets' - ++ lib.optional (!lib.elem targetPlatform.config allGasTargets') targetPlatform.config; + ++ lib.optional ( + targetHasGas && !lib.elem targetPlatform.config allGasTargets' + ) targetPlatform.config; allGasTargets' = [ "aarch64-unknown-linux-gnu" "alpha-unknown-linux-gnu" @@ -328,6 +333,8 @@ stdenv.mkDerivation (finalAttrs: { $makeFlags "''${makeFlagsArray[@]}" $installFlags "''${installFlagsArray[@]}" \ install-exec-bindir done + '' + + lib.optionalString (withAllTargets && targetHasGas) '' ln -s $out/bin/${stdenv.targetPlatform.config}-as $out/bin/as '';