From 6a5cda5131e094da3d28969af0512046c4fd81a5 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Wed, 8 Nov 2017 13:43:28 -0500 Subject: stdenv setup: Run setup hooks and other processing after accumulating deps I find the separation of concerns, accumulating, then processing, easier to follow. Also, with my yet-to-be-merged cross work, the accumulation part will become more complex. --- pkgs/stdenv/generic/setup.sh | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'pkgs/stdenv') diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 02da3829c5a..ee25013d5a5 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -324,6 +324,18 @@ findInputs() { exit 1 fi + if [ -f "$pkg/nix-support/$propagatedBuildInputsFile" ]; then + local pkgNext + for pkgNext in $(< "$pkg/nix-support/$propagatedBuildInputsFile"); do + findInputs "$pkgNext" "$var" "$propagatedBuildInputsFile" + done + fi +} + +# Add package to the future PATH and run setup hooks +activatePackage() { + local pkg="$1" + if [ -f "$pkg" ]; then local oldOpts="$(shopt -po nounset)" set +u @@ -341,13 +353,6 @@ findInputs() { source "$pkg/nix-support/setup-hook" eval "$oldOpts" fi - - if [ -f "$pkg/nix-support/$propagatedBuildInputsFile" ]; then - local pkgNext - for pkgNext in $(< "$pkg/nix-support/$propagatedBuildInputsFile"); do - findInputs "$pkgNext" "$var" "$propagatedBuildInputsFile" - done - fi } declare -a nativePkgs crossPkgs @@ -359,15 +364,22 @@ if [ -z "${crossConfig:-}" ]; then ${propagatedNativeBuildInputs:-} ${propagatedBuildInputs:-}; do findInputs "$i" nativePkgs propagated-native-build-inputs done + + for i in "${nativePkgs[@]}"; do + activatePackage "$i" + done else for i in ${buildInputs:-} ${defaultBuildInputs:-} ${propagatedBuildInputs:-}; do findInputs "$i" crossPkgs propagated-build-inputs done - declare -a nativePkgs for i in ${nativeBuildInputs:-} ${defaultNativeBuildInputs:-} ${propagatedNativeBuildInputs:-}; do findInputs "$i" nativePkgs propagated-native-build-inputs done + + for i in "${nativePkgs[@]}" "${crossPkgs[@]}"; do + activatePackage "$i" + done fi -- cgit 1.4.1