Revert "stdenvs: Distinguish between extraBuildInputs and extraNativeBuildInputs"

This reverts commit eeabf85780.

This change suddenly makes tons of stdenv internals visible in
nativeBuildInputs of every derivation, which doesn't seem desirable.
E.g:

````
nix-repl> hello.nativeBuildInputs
[ «derivation /nix/store/bcfkyf6bhssxd2vzwgzmsbn7b5b9rpxc-patchelf-0.9.drv»
  «derivation /nix/store/4wnshnz9wwanpfzcrdd76rri7pyqn9sk-paxctl-0.9.drv»
  << snip 10+ lines >>
  «derivation /nix/store/d35pgh1lcg5nm0x28d899pxj30b8c9b2-gcc-wrapper-6.4.0.drv»
]
````
This commit is contained in:
Tuomas Tynkkynen 2017-08-18 05:07:03 +03:00
parent 6a60cca7ab
commit 7320fa9d45
7 changed files with 28 additions and 47 deletions

View file

@ -59,12 +59,11 @@ in rec {
stageFun = step: last: {shell ? "${bootstrapTools}/bin/bash", stageFun = step: last: {shell ? "${bootstrapTools}/bin/bash",
overrides ? (self: super: {}), overrides ? (self: super: {}),
extraPreHook ? "", extraPreHook ? "",
extraNativeBuildInputs,
extraBuildInputs, extraBuildInputs,
allowedRequisites ? null}: allowedRequisites ? null}:
let let
thisStdenv = import ../generic { thisStdenv = import ../generic {
inherit config shell extraNativeBuildInputs extraBuildInputs; inherit config shell extraBuildInputs;
allowedRequisites = if allowedRequisites == null then null else allowedRequisites ++ [ allowedRequisites = if allowedRequisites == null then null else allowedRequisites ++ [
thisStdenv.cc.expand-response-params thisStdenv.cc.expand-response-params
]; ];
@ -163,7 +162,6 @@ in rec {
}; };
extraNativeBuildInputs = [];
extraBuildInputs = []; extraBuildInputs = [];
}; };
@ -171,7 +169,6 @@ in rec {
stage1 = prevStage: with prevStage; stageFun 1 prevStage { stage1 = prevStage: with prevStage; stageFun 1 prevStage {
extraPreHook = "export NIX_CFLAGS_COMPILE+=\" -F${bootstrapTools}/Library/Frameworks\""; extraPreHook = "export NIX_CFLAGS_COMPILE+=\" -F${bootstrapTools}/Library/Frameworks\"";
extraNativeBuildInputs = [];
extraBuildInputs = [ pkgs.libcxx ]; extraBuildInputs = [ pkgs.libcxx ];
allowedRequisites = allowedRequisites =
@ -198,8 +195,7 @@ in rec {
export PATH_LOCALE=${pkgs.darwin.locale}/share/locale export PATH_LOCALE=${pkgs.darwin.locale}/share/locale
''; '';
extraNativeBuildInputs = [ pkgs.xz ]; extraBuildInputs = with pkgs; [ xz darwin.CF libcxx ];
extraBuildInputs = with pkgs; [ darwin.CF libcxx ];
allowedRequisites = allowedRequisites =
[ bootstrapTools ] ++ [ bootstrapTools ] ++
@ -230,8 +226,7 @@ in rec {
# enables patchShebangs above. Unfortunately, patchShebangs ignores our $SHELL setting # enables patchShebangs above. Unfortunately, patchShebangs ignores our $SHELL setting
# and instead goes by $PATH, which happens to contain bootstrapTools. So it goes and # and instead goes by $PATH, which happens to contain bootstrapTools. So it goes and
# patches our shebangs back to point at bootstrapTools. This makes sure bash comes first. # patches our shebangs back to point at bootstrapTools. This makes sure bash comes first.
extraNativeBuildInputs = with pkgs; [ xz pkgs.bash ]; extraBuildInputs = with pkgs; [ xz darwin.CF libcxx pkgs.bash ];
extraBuildInputs = with pkgs; [ darwin.CF libcxx ];
extraPreHook = '' extraPreHook = ''
export PATH=${pkgs.bash}/bin:$PATH export PATH=${pkgs.bash}/bin:$PATH
@ -265,8 +260,7 @@ in rec {
stage4 = prevStage: with prevStage; stageFun 4 prevStage { stage4 = prevStage: with prevStage; stageFun 4 prevStage {
shell = "${pkgs.bash}/bin/bash"; shell = "${pkgs.bash}/bin/bash";
extraNativeBuildInputs = with pkgs; [ xz pkgs.bash ]; extraBuildInputs = with pkgs; [ xz darwin.CF libcxx pkgs.bash ];
extraBuildInputs = with pkgs; [ darwin.CF libcxx ];
extraPreHook = '' extraPreHook = ''
export PATH_LOCALE=${pkgs.darwin.locale}/share/locale export PATH_LOCALE=${pkgs.darwin.locale}/share/locale
''; '';
@ -327,7 +321,6 @@ in rec {
libc = pkgs.darwin.Libsystem; libc = pkgs.darwin.Libsystem;
}; };
extraNativeBuildInputs = [];
extraBuildInputs = with pkgs; [ darwin.CF libcxx ]; extraBuildInputs = with pkgs; [ darwin.CF libcxx ];
extraAttrs = { extraAttrs = {

View file

@ -6,20 +6,15 @@ done
mkdir $out mkdir $out
# Buid the setup script
echo "export SHELL=$shell" > $out/setup echo "export SHELL=$shell" > $out/setup
echo "initialPath=\"$initialPath\"" >> $out/setup echo "initialPath=\"$initialPath\"" >> $out/setup
echo "defaultNativeBuildInputs=\"$defaultNativeBuildInputs\"" >> $out/setup
echo "$preHook" >> $out/setup echo "$preHook" >> $out/setup
cat "$setup" >> $out/setup cat "$setup" >> $out/setup
# Allow the user to install stdenv using nix-env and get the packages # Allow the user to install stdenv using nix-env and get the packages
# in stdenv. # in stdenv.
mkdir -p "$out/nix-support" mkdir $out/nix-support
echo '# Hack to induce runtime dependencies on the default inputs' \
> "$out/nix-support/default-inputs.txt"
printf '%s\n' $defaultNativeBuildInputs $defaultBuildInputs \
>> "$out/nix-support/default-inputs.txt"
if [ "$propagatedUserEnvPkgs" ]; then if [ "$propagatedUserEnvPkgs" ]; then
printf '%s ' $propagatedUserEnvPkgs \ printf '%s ' $propagatedUserEnvPkgs > $out/nix-support/propagated-user-env-packages
> "$out/nix-support/propagated-user-env-packages"
fi fi

View file

@ -9,7 +9,6 @@ let lib = import ../../../lib; in lib.makeOverridable (
, setupScript ? ./setup.sh , setupScript ? ./setup.sh
, extraNativeBuildInputs ? []
, extraBuildInputs ? [] , extraBuildInputs ? []
, __stdenvImpureHostDeps ? [] , __stdenvImpureHostDeps ? []
, __extraImpureHostDeps ? [] , __extraImpureHostDeps ? []
@ -42,7 +41,7 @@ let lib = import ../../../lib; in lib.makeOverridable (
}: }:
let let
defaultNativeBuildInputs = extraNativeBuildInputs ++ defaultNativeBuildInputs = extraBuildInputs ++
[ ../../build-support/setup-hooks/move-docs.sh [ ../../build-support/setup-hooks/move-docs.sh
../../build-support/setup-hooks/compress-man-pages.sh ../../build-support/setup-hooks/compress-man-pages.sh
../../build-support/setup-hooks/strip.sh ../../build-support/setup-hooks/strip.sh
@ -59,16 +58,11 @@ let
cc cc
]; ];
defaultBuildInputs = extraBuildInputs;
# The stdenv that we are producing. # The stdenv that we are producing.
stdenv = stdenv =
derivation ( derivation (
lib.optionalAttrs (allowedRequisites != null) { (if isNull allowedRequisites then {} else { allowedRequisites = allowedRequisites ++ defaultNativeBuildInputs; }) //
allowedRequisites = allowedRequisites {
++ defaultNativeBuildInputs ++ defaultBuildInputs;
}
// {
inherit name; inherit name;
# Nix itself uses the `system` field of a derivation to decide where to # Nix itself uses the `system` field of a derivation to decide where to
@ -81,8 +75,7 @@ let
setup = setupScript; setup = setupScript;
inherit preHook initialPath shell inherit preHook initialPath shell defaultNativeBuildInputs;
defaultNativeBuildInputs defaultBuildInputs;
} }
// lib.optionalAttrs buildPlatform.isDarwin { // lib.optionalAttrs buildPlatform.isDarwin {
__sandboxProfile = stdenvSandboxProfile; __sandboxProfile = stdenvSandboxProfile;
@ -98,8 +91,7 @@ let
inherit buildPlatform hostPlatform targetPlatform; inherit buildPlatform hostPlatform targetPlatform;
inherit extraNativeBuildInputs extraBuildInputs inherit extraBuildInputs __extraImpureHostDeps extraSandboxProfile;
__extraImpureHostDeps extraSandboxProfile;
# Utility flags to test the type of platform. # Utility flags to test the type of platform.
inherit (hostPlatform) inherit (hostPlatform)

View file

@ -44,10 +44,10 @@ rec {
, ... } @ attrs: , ... } @ attrs:
let let
dependencies = map lib.chooseDevOutputs [ dependencies = map lib.chooseDevOutputs [
(map (drv: drv.nativeDrv or drv) (nativeBuildInputs ++ stdenv.defaultNativeBuildInputs) (map (drv: drv.nativeDrv or drv) nativeBuildInputs
++ lib.optional separateDebugInfo ../../build-support/setup-hooks/separate-debug-info.sh ++ lib.optional separateDebugInfo ../../build-support/setup-hooks/separate-debug-info.sh
++ lib.optional stdenv.hostPlatform.isWindows ../../build-support/setup-hooks/win-dll-link.sh) ++ lib.optional stdenv.hostPlatform.isWindows ../../build-support/setup-hooks/win-dll-link.sh)
(map (drv: drv.crossDrv or drv) (buildInputs ++ stdenv.defaultBuildInputs)) (map (drv: drv.crossDrv or drv) buildInputs)
]; ];
propagatedDependencies = map lib.chooseDevOutputs [ propagatedDependencies = map lib.chooseDevOutputs [
(map (drv: drv.nativeDrv or drv) propagatedNativeBuildInputs) (map (drv: drv.nativeDrv or drv) propagatedNativeBuildInputs)
@ -65,11 +65,11 @@ rec {
"sandboxProfile" "propagatedSandboxProfile"]) "sandboxProfile" "propagatedSandboxProfile"])
// (let // (let
computedSandboxProfile = computedSandboxProfile =
lib.concatMap (input: input.__propagatedSandboxProfile or []) (lib.concatLists dependencies); lib.concatMap (input: input.__propagatedSandboxProfile or []) (stdenv.extraBuildInputs ++ lib.concatLists dependencies);
computedPropagatedSandboxProfile = computedPropagatedSandboxProfile =
lib.concatMap (input: input.__propagatedSandboxProfile or []) (lib.concatLists propagatedDependencies); lib.concatMap (input: input.__propagatedSandboxProfile or []) (lib.concatLists propagatedDependencies);
computedImpureHostDeps = computedImpureHostDeps =
lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (lib.concatLists dependencies)); lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (stdenv.extraBuildInputs ++ lib.concatLists dependencies));
computedPropagatedImpureHostDeps = computedPropagatedImpureHostDeps =
lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (lib.concatLists propagatedDependencies)); lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (lib.concatLists propagatedDependencies));
in in

View file

@ -317,17 +317,18 @@ if [ -z "$crossConfig" ]; then
# are handled identically to nativeBuildInputs # are handled identically to nativeBuildInputs
declare -a nativePkgs declare -a nativePkgs
for i in $nativeBuildInputs $buildInputs \ for i in $nativeBuildInputs $buildInputs \
$defaultNativeBuildInputs $defaultBuildInputs \
$propagatedNativeBuildInputs $propagatedBuildInputs; do $propagatedNativeBuildInputs $propagatedBuildInputs; do
findInputs "$i" nativePkgs propagated-native-build-inputs findInputs "$i" nativePkgs propagated-native-build-inputs
done done
else else
declare -a crossPkgs declare -a crossPkgs
for i in $buildInputs $propagatedBuildInputs; do for i in $buildInputs $defaultBuildInputs $propagatedBuildInputs; do
findInputs "$i" crossPkgs propagated-build-inputs findInputs "$i" crossPkgs propagated-build-inputs
done done
declare -a nativePkgs declare -a nativePkgs
for i in $nativeBuildInputs $propagatedNativeBuildInputs; do for i in $nativeBuildInputs $defaultNativeBuildInputs $propagatedNativeBuildInputs; do
findInputs "$i" nativePkgs propagated-native-build-inputs findInputs "$i" nativePkgs propagated-native-build-inputs
done done
fi fi

View file

@ -47,7 +47,7 @@ let
# the bootstrap. In all stages, we build an stdenv and the package # the bootstrap. In all stages, we build an stdenv and the package
# set that can be built with that stdenv. # set that can be built with that stdenv.
stageFun = prevStage: stageFun = prevStage:
{ name, overrides ? (self: super: {}), extraNativeBuildInputs ? [] }: { name, overrides ? (self: super: {}), extraBuildInputs ? [] }:
let let
@ -56,7 +56,7 @@ let
buildPlatform = localSystem; buildPlatform = localSystem;
hostPlatform = localSystem; hostPlatform = localSystem;
targetPlatform = localSystem; targetPlatform = localSystem;
inherit config extraNativeBuildInputs; inherit config extraBuildInputs;
preHook = preHook =
'' ''
# Don't patch #!/interpreter because it leads to retained # Don't patch #!/interpreter because it leads to retained
@ -219,7 +219,7 @@ in
isl = isl_0_14; isl = isl_0_14;
}; };
}; };
extraNativeBuildInputs = [ prevStage.patchelf prevStage.paxctl ] ++ extraBuildInputs = [ prevStage.patchelf prevStage.paxctl ] ++
# Many tarballs come with obsolete config.sub/config.guess that don't recognize aarch64. # Many tarballs come with obsolete config.sub/config.guess that don't recognize aarch64.
lib.optional (system == "aarch64-linux") prevStage.updateAutotoolsGnuConfigScriptsHook; lib.optional (system == "aarch64-linux") prevStage.updateAutotoolsGnuConfigScriptsHook;
}) })
@ -253,7 +253,7 @@ in
shell = self.bash + "/bin/bash"; shell = self.bash + "/bin/bash";
}; };
}; };
extraNativeBuildInputs = [ prevStage.patchelf prevStage.xz ] ++ extraBuildInputs = [ prevStage.patchelf prevStage.xz ] ++
# Many tarballs come with obsolete config.sub/config.guess that don't recognize aarch64. # Many tarballs come with obsolete config.sub/config.guess that don't recognize aarch64.
lib.optional (system == "aarch64-linux") prevStage.updateAutotoolsGnuConfigScriptsHook; lib.optional (system == "aarch64-linux") prevStage.updateAutotoolsGnuConfigScriptsHook;
}) })
@ -283,7 +283,7 @@ in
initialPath = initialPath =
((import ../common-path.nix) {pkgs = prevStage;}); ((import ../common-path.nix) {pkgs = prevStage;});
extraNativeBuildInputs = [ prevStage.patchelf prevStage.paxctl ] ++ extraBuildInputs = [ prevStage.patchelf prevStage.paxctl ] ++
# Many tarballs come with obsolete config.sub/config.guess that don't recognize aarch64. # Many tarballs come with obsolete config.sub/config.guess that don't recognize aarch64.
lib.optional (system == "aarch64-linux") prevStage.updateAutotoolsGnuConfigScriptsHook; lib.optional (system == "aarch64-linux") prevStage.updateAutotoolsGnuConfigScriptsHook;

View file

@ -66,7 +66,7 @@ let
export lt_cv_deplibs_check_method=pass_all export lt_cv_deplibs_check_method=pass_all
''; '';
extraNativeBuildInputsCygwin = [ extraBuildInputsCygwin = [
../cygwin/all-buildinputs-as-runtimedep.sh ../cygwin/all-buildinputs-as-runtimedep.sh
../cygwin/wrap-exes-to-find-dlls.sh ../cygwin/wrap-exes-to-find-dlls.sh
] ++ (if system == "i686-cygwin" then [ ] ++ (if system == "i686-cygwin" then [
@ -94,9 +94,9 @@ let
if system == "x86_64-cygwin" then prehookCygwin else if system == "x86_64-cygwin" then prehookCygwin else
prehookBase; prehookBase;
extraNativeBuildInputs = extraBuildInputs =
if system == "i686-cygwin" then extraNativeBuildInputsCygwin else if system == "i686-cygwin" then extraBuildInputsCygwin else
if system == "x86_64-cygwin" then extraNativeBuildInputsCygwin else if system == "x86_64-cygwin" then extraBuildInputsCygwin else
[]; [];
initialPath = extraPath ++ path; initialPath = extraPath ++ path;