From 1dc0404d6efb27407ce7716a14610b5f9bbf115a Mon Sep 17 00:00:00 2001 From: John Ericson Date: Mon, 6 Aug 2018 18:37:24 -0400 Subject: [PATCH 1/4] cc-wrapper: Define env vars with full path --- pkgs/build-support/cc-wrapper/setup-hook.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/build-support/cc-wrapper/setup-hook.sh b/pkgs/build-support/cc-wrapper/setup-hook.sh index 28060de7411..619e75a3974 100644 --- a/pkgs/build-support/cc-wrapper/setup-hook.sh +++ b/pkgs/build-support/cc-wrapper/setup-hook.sh @@ -109,10 +109,10 @@ fi export NIX_${role_pre}CC=@out@ -export ${role_pre}CC=@named_cc@ -export ${role_pre}CXX=@named_cxx@ -export CC${role_post}=@named_cc@ -export CXX${role_post}=@named_cxx@ +export ${role_pre}CC=@out@/bin/@named_cc@ +export ${role_pre}CXX=@out@/bin/@named_cxx@ +export CC${role_post}=@out@/bin/@named_cc@ +export CXX${role_post}=@out@/bin/@named_cxx@ # If unset, assume the default hardening flags. : ${NIX_HARDENING_ENABLE="fortify stackprotector pic strictoverflow format relro bindnow"} From 044a73bbe68673136b654bc99f412ac116f11ca3 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Mon, 6 Aug 2018 18:35:56 -0400 Subject: [PATCH 2/4] bintools-wrapper: Define env vars with full path --- pkgs/build-support/bintools-wrapper/setup-hook.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/build-support/bintools-wrapper/setup-hook.sh b/pkgs/build-support/bintools-wrapper/setup-hook.sh index f65b792485a..2cf606cce7c 100644 --- a/pkgs/build-support/bintools-wrapper/setup-hook.sh +++ b/pkgs/build-support/bintools-wrapper/setup-hook.sh @@ -59,11 +59,11 @@ for cmd in \ ar as ld nm objcopy objdump readelf ranlib strip strings size windres do if - PATH=$_PATH type -p "@targetPrefix@${cmd}" > /dev/null + cmd_path=$(PATH=$_PATH command -v "@targetPrefix@${cmd}") then upper_case="$(echo "$cmd" | tr "[:lower:]" "[:upper:]")" - export "${role_pre}${upper_case}=@targetPrefix@${cmd}"; - export "${upper_case}${role_post}=@targetPrefix@${cmd}"; + export "${role_pre}${upper_case}=${cmd_path}"; + export "${upper_case}${role_post}=${cmd_path}"; fi done @@ -72,5 +72,5 @@ done export NIX_HARDENING_ENABLE # No local scope in sourced file -unset -v role_pre role_post cmd upper_case +unset -v role_pre role_post cmd cmd_path upper_case set +u From 5a2ef9b51366128852ec8affcf6a207e572c0b2b Mon Sep 17 00:00:00 2001 From: John Ericson Date: Mon, 6 Aug 2018 22:41:56 -0400 Subject: [PATCH 3/4] libgcc: Tool env vars no longer need to be made full paths --- .../libraries/gcc/libgcc/default.nix | 31 +++---------------- 1 file changed, 4 insertions(+), 27 deletions(-) diff --git a/pkgs/development/libraries/gcc/libgcc/default.nix b/pkgs/development/libraries/gcc/libgcc/default.nix index 0a29ab6927f..ef605d8702f 100644 --- a/pkgs/development/libraries/gcc/libgcc/default.nix +++ b/pkgs/development/libraries/gcc/libgcc/default.nix @@ -46,22 +46,16 @@ stdenvNoLibs.mkDerivation rec { mkdir -p "$buildRoot/gcc" cd "$buildRoot/gcc" ( - export AS_FOR_BUILD=${buildPackages.stdenv.cc}/bin/$AS_FOR_BUILD - export CC_FOR_BUILD=${buildPackages.stdenv.cc}/bin/$CC_FOR_BUILD - export CPP_FOR_BUILD=${buildPackages.stdenv.cc}/bin/$CPP_FOR_BUILD - export CXX_FOR_BUILD=${buildPackages.stdenv.cc}/bin/$CXX_FOR_BUILD - export LD_FOR_BUILD=${buildPackages.stdenv.cc.bintools}/bin/$LD_FOR_BUILD - export AS=$AS_FOR_BUILD export CC=$CC_FOR_BUILD export CPP=$CPP_FOR_BUILD export CXX=$CXX_FOR_BUILD export LD=$LD_FOR_BUILD - export AS_FOR_TARGET=${stdenvNoLibs.cc}/bin/$AS - export CC_FOR_TARGET=${stdenvNoLibs.cc}/bin/$CC - export CPP_FOR_TARGET=${stdenvNoLibs.cc}/bin/$CPP - export LD_FOR_TARGET=${stdenvNoLibs.cc.bintools}/bin/$LD + export AS_FOR_TARGET=$AS + export CC_FOR_TARGET=$CC + export CPP_FOR_TARGET=$CPP + export LD_FOR_TARGET=$LD export NIX_BUILD_CFLAGS_COMPILE+=' -DGENERATOR_FILE=1' @@ -87,23 +81,6 @@ stdenvNoLibs.mkDerivation rec { cd "$buildRoot/gcc/${hostPlatform.config}/libgcc" configureScript=$sourceRoot/configure chmod +x "$configureScript" - - export AS_FOR_BUILD=${buildPackages.stdenv.cc}/bin/$AS_FOR_BUILD - export CC_FOR_BUILD=${buildPackages.stdenv.cc}/bin/$CC_FOR_BUILD - export CPP_FOR_BUILD=${buildPackages.stdenv.cc}/bin/$CPP_FOR_BUILD - export CXX_FOR_BUILD=${buildPackages.stdenv.cc}/bin/$CXX_FOR_BUILD - export LD_FOR_BUILD=${buildPackages.stdenv.cc.bintools}/bin/$LD_FOR_BUILD - - export AS=${stdenvNoLibs.cc}/bin/$AS - export CC=${stdenvNoLibs.cc}/bin/$CC - export CPP=${stdenvNoLibs.cc}/bin/$CPP - export CXX=${stdenvNoLibs.cc}/bin/$CXX - export LD=${stdenvNoLibs.cc.bintools}/bin/$LD - - export AS_FOR_TARGET=${stdenvNoLibs.cc}/bin/$AS_FOR_TARGET - export CC_FOR_TARGET=${stdenvNoLibs.cc}/bin/$CC_FOR_TARGET - export CPP_FOR_TARGET=${stdenvNoLibs.cc}/bin/$CPP_FOR_TARGET - export LD_FOR_TARGET=${stdenvNoLibs.cc.bintools}/bin/$LD_FOR_TARGET ''; gccConfigureFlags = [ From 30ea1bfd221277735e1e19ab916e96709759bd51 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Mon, 6 Aug 2018 22:41:56 -0400 Subject: [PATCH 4/4] ghc-*: Tool env vars no longer need to be made full paths --- pkgs/development/compilers/ghc/8.0.2.nix | 19 ++++++++++--------- pkgs/development/compilers/ghc/8.2.2.nix | 16 ++++++++-------- pkgs/development/compilers/ghc/8.4.3.nix | 16 ++++++++-------- pkgs/development/compilers/ghc/8.6.1.nix | 16 ++++++++-------- pkgs/development/compilers/ghc/head.nix | 16 ++++++++-------- 5 files changed, 42 insertions(+), 41 deletions(-) diff --git a/pkgs/development/compilers/ghc/8.0.2.nix b/pkgs/development/compilers/ghc/8.0.2.nix index ddd9c27589a..fdbe4cf902f 100644 --- a/pkgs/development/compilers/ghc/8.0.2.nix +++ b/pkgs/development/compilers/ghc/8.0.2.nix @@ -102,15 +102,16 @@ stdenv.mkDerivation rec { done # GHC is a bit confused on its cross terminology, as these would normally be # the *host* tools. - export CC="${targetCC}/bin/${targetCC.targetPrefix}cc" - export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx" - export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld" - export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as" - export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar" - export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm" - export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib" - export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf" - export STRIP="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}strip" + export CC="$CC_FOR_TARGET" + export CXX="$CXX_FOR_TARGET" + # Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177 + export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString targetPlatform.isAarch32 ".gold"}" + export AS="$AS_FOR_TARGET" + export AR="$AR_FOR_TARGET" + export NM="$NM_FOR_TARGET" + export RANLIB="$RANLIB_FOR_TARGET" + export READELF="$READELF_FOR_TARGET" + export STRIP="$STRIP_FOR_TARGET" echo -n "${buildMK}" > mk/build.mk sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure diff --git a/pkgs/development/compilers/ghc/8.2.2.nix b/pkgs/development/compilers/ghc/8.2.2.nix index 79c910e5fd2..6ff1a248372 100644 --- a/pkgs/development/compilers/ghc/8.2.2.nix +++ b/pkgs/development/compilers/ghc/8.2.2.nix @@ -134,16 +134,16 @@ stdenv.mkDerivation rec { done # GHC is a bit confused on its cross terminology, as these would normally be # the *host* tools. - export CC="${targetCC}/bin/${targetCC.targetPrefix}cc" - export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx" + export CC="$CC_FOR_TARGET" + export CXX="$CXX_FOR_TARGET" # Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177 export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString targetPlatform.isAarch32 ".gold"}" - export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as" - export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar" - export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm" - export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib" - export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf" - export STRIP="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}strip" + export AS="$AS_FOR_TARGET" + export AR="$AR_FOR_TARGET" + export NM="$NM_FOR_TARGET" + export RANLIB="$RANLIB_FOR_TARGET" + export READELF="$READELF_FOR_TARGET" + export STRIP="$STRIP_FOR_TARGET" echo -n "${buildMK}" > mk/build.mk sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure diff --git a/pkgs/development/compilers/ghc/8.4.3.nix b/pkgs/development/compilers/ghc/8.4.3.nix index 7be209aa5fa..d09806cf50b 100644 --- a/pkgs/development/compilers/ghc/8.4.3.nix +++ b/pkgs/development/compilers/ghc/8.4.3.nix @@ -106,16 +106,16 @@ stdenv.mkDerivation (rec { done # GHC is a bit confused on its cross terminology, as these would normally be # the *host* tools. - export CC="${targetCC}/bin/${targetCC.targetPrefix}cc" - export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx" + export CC="$CC_FOR_TARGET" + export CXX="$CXX_FOR_TARGET" # Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177 export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString targetPlatform.isAarch32 ".gold"}" - export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as" - export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar" - export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm" - export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib" - export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf" - export STRIP="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}strip" + export AS="$AS_FOR_TARGET" + export AR="$AR_FOR_TARGET" + export NM="$NM_FOR_TARGET" + export RANLIB="$RANLIB_FOR_TARGET" + export READELF="$READELF_FOR_TARGET" + export STRIP="$STRIP_FOR_TARGET" echo -n "${buildMK}" > mk/build.mk sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure diff --git a/pkgs/development/compilers/ghc/8.6.1.nix b/pkgs/development/compilers/ghc/8.6.1.nix index 8f0e5215217..f7b32f04e13 100644 --- a/pkgs/development/compilers/ghc/8.6.1.nix +++ b/pkgs/development/compilers/ghc/8.6.1.nix @@ -98,16 +98,16 @@ stdenv.mkDerivation (rec { done # GHC is a bit confused on its cross terminology, as these would normally be # the *host* tools. - export CC="${targetCC}/bin/${targetCC.targetPrefix}cc" - export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx" + export CC="$CC_FOR_TARGET" + export CXX="$CXX_FOR_TARGET" # Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177 export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString targetPlatform.isAarch32 ".gold"}" - export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as" - export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar" - export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm" - export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib" - export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf" - export STRIP="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}strip" + export AS="$AS_FOR_TARGET" + export AR="$AR_FOR_TARGET" + export NM="$NM_FOR_TARGET" + export RANLIB="$RANLIB_FOR_TARGET" + export READELF="$READELF_FOR_TARGET" + export STRIP="$STRIP_FOR_TARGET" echo -n "${buildMK}" > mk/build.mk sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure diff --git a/pkgs/development/compilers/ghc/head.nix b/pkgs/development/compilers/ghc/head.nix index 2824ce669ee..b0b6ed3bab0 100644 --- a/pkgs/development/compilers/ghc/head.nix +++ b/pkgs/development/compilers/ghc/head.nix @@ -100,16 +100,16 @@ stdenv.mkDerivation rec { done # GHC is a bit confused on its cross terminology, as these would normally be # the *host* tools. - export CC="${targetCC}/bin/${targetCC.targetPrefix}cc" - export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx" + export CC="$CC_FOR_TARGET" + export CXX="$CXX_FOR_TARGET" # Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177 export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString targetPlatform.isAarch32 ".gold"}" - export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as" - export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar" - export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm" - export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib" - export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf" - export STRIP="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}strip" + export AS="$AS_FOR_TARGET" + export AR="$AR_FOR_TARGET" + export NM="$NM_FOR_TARGET" + export RANLIB="$RANLIB_FOR_TARGET" + export READELF="$READELF_FOR_TARGET" + export STRIP="$STRIP_FOR_TARGET" echo -n "${buildMK}" > mk/build.mk echo ${version} >VERSION