From c4913fb289ba18a7474cc232fd84b5ae17a39125 Mon Sep 17 00:00:00 2001 From: Bernardo Meurer Date: Thu, 10 Feb 2022 12:10:03 -0800 Subject: [PATCH] binutils: inherit {build,host,target}Platform to avoid repeating ourselves --- .../tools/misc/binutils/default.nix | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix index b0592e2a68e3..eec6728107c5 100644 --- a/pkgs/development/tools/misc/binutils/default.nix +++ b/pkgs/development/tools/misc/binutils/default.nix @@ -27,13 +27,10 @@ assert enableGold -> execFormatIsELF stdenv.targetPlatform; let + inherit (stdenv) buildPlatform hostPlatform targetPlatform; reuseLibs = enableShared && withAllTargets; version = "2.37"; - # The targetPrefix prepended to binary names to allow multiple binuntils on the - # PATH to both be usable. - targetPrefix = lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform) - "${stdenv.targetPlatform.config}-"; srcs = { # HACK to ensure that we preserve source from bootstrap binutils to not rebuild LLVM @@ -48,13 +45,17 @@ let sha256 = "1kdrz6fki55lm15rwwamn74fnqpy0zlafsida2zymk76n3656c63"; }; }; + + # The targetPrefix prepended to binary names to allow multiple binuntils on + # the PATH to both be usable. + targetPrefix = lib.optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-"; in stdenv.mkDerivation { pname = targetPrefix + "binutils"; inherit version; - src = srcs.${stdenv.targetPlatform.system} or srcs.normal; + src = srcs.${targetPlatform.system} or srcs.normal; # WARN: this package is used for bootstrapping fetchurl, and thus cannot use # fetchpatch! All mutable patches (generated by GitHub or cgit) that are @@ -74,7 +75,7 @@ stdenv.mkDerivation { # Remove on the next release # https://sourceware.org/bugzilla/show_bug.cgi?id=28138 ./fix-ld-descriptors.patch - ] ++ lib.optional stdenv.targetPlatform.isiOS ./support-ios.patch + ] ++ lib.optional targetPlatform.isiOS ./support-ios.patch # This patch was suggested by Nick Clifton to fix # https://sourceware.org/bugzilla/show_bug.cgi?id=16177 # It can be removed when that 7-year-old bug is closed. @@ -82,8 +83,8 @@ stdenv.mkDerivation { # GHC will refuse to compile with a binutils suffering from it. See this # comment for more information: # https://gitlab.haskell.org/ghc/ghc/issues/4210#note_78333 - ++ lib.optional (stdenv.targetPlatform.isAarch32 && stdenv.hostPlatform.system != stdenv.targetPlatform.system) ./R_ARM_COPY.patch - ++ lib.optional stdenv.targetPlatform.isWindows ./windres-locate-gcc.patch; + ++ lib.optional (targetPlatform.isAarch32 && hostPlatform.system != targetPlatform.system) ./R_ARM_COPY.patch + ++ lib.optional targetPlatform.isWindows ./windres-locate-gcc.patch; outputs = [ "out" "info" "man" ]; @@ -92,9 +93,9 @@ stdenv.mkDerivation { bison perl texinfo - ] ++ (lib.optionals stdenv.targetPlatform.isiOS [ + ] ++ (lib.optionals targetPlatform.isiOS [ autoreconfHook - ]) ++ lib.optionals stdenv.targetPlatform.isVc4 [ flex ]; + ]) ++ lib.optionals targetPlatform.isVc4 [ flex ]; buildInputs = [ zlib gettext ]; inherit noSysDirs; @@ -114,7 +115,7 @@ stdenv.mkDerivation { # As binutils takes part in the stdenv building, we don't want references # to the bootstrap-tools libgcc (as uses to happen on arm/mips) - NIX_CFLAGS_COMPILE = if stdenv.hostPlatform.isDarwin + NIX_CFLAGS_COMPILE = if hostPlatform.isDarwin then "-Wno-string-plus-int -Wno-deprecated-declarations" else "-static-libgcc"; @@ -161,7 +162,7 @@ stdenv.mkDerivation { ''; # else fails with "./sanity.sh: line 36: $out/bin/size: not found" - doInstallCheck = stdenv.buildPlatform == stdenv.hostPlatform && stdenv.hostPlatform == stdenv.targetPlatform; + doInstallCheck = buildPlatform == hostPlatform && hostPlatform == targetPlatform; enableParallelBuilding = true;