summary refs log tree commit diff
path: root/pkgs/stdenv
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2017-11-08 13:43:28 -0500
committerJohn Ericson <John.Ericson@Obsidian.Systems>2017-11-15 18:51:06 -0500
commit6a5cda5131e094da3d28969af0512046c4fd81a5 (patch)
tree3b2d8d4a737cfd1ecfc99d652e0409c9995646cb /pkgs/stdenv
parent9a244374110af2be1986f8dc00f7ce178e798cd1 (diff)
downloadnixpkgs-6a5cda5131e094da3d28969af0512046c4fd81a5.tar
nixpkgs-6a5cda5131e094da3d28969af0512046c4fd81a5.tar.gz
nixpkgs-6a5cda5131e094da3d28969af0512046c4fd81a5.tar.bz2
nixpkgs-6a5cda5131e094da3d28969af0512046c4fd81a5.tar.lz
nixpkgs-6a5cda5131e094da3d28969af0512046c4fd81a5.tar.xz
nixpkgs-6a5cda5131e094da3d28969af0512046c4fd81a5.tar.zst
nixpkgs-6a5cda5131e094da3d28969af0512046c4fd81a5.zip
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.
Diffstat (limited to 'pkgs/stdenv')
-rw-r--r--pkgs/stdenv/generic/setup.sh28
1 files changed, 20 insertions, 8 deletions
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