summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/stdenv/generic/setup-new2.sh41
1 files changed, 34 insertions, 7 deletions
diff --git a/pkgs/stdenv/generic/setup-new2.sh b/pkgs/stdenv/generic/setup-new2.sh
index 3110637d2628..e39a0772a32c 100644
--- a/pkgs/stdenv/generic/setup-new2.sh
+++ b/pkgs/stdenv/generic/setup-new2.sh
@@ -655,6 +655,33 @@ installW() {
         eval "$installCommand"
     fi
 
+    eval "$postInstall"
+}
+
+
+installPhase() {
+    if test "$dontInstall" = 1; then
+        return
+    fi
+    header "installing"
+    startLog "install"
+    installW
+    stopLog
+    stopNest
+}
+
+
+# The fixup phase performs generic, package-independent, Nix-related
+# stuff, like running patchelf and setting the
+# propagated-build-inputs.  It should rarely be overriden.
+fixupW() {
+    if test -n "$fixupPhase"; then
+        eval "$fixupPhase"
+        return
+    fi
+
+    eval "$preFixup"
+
     if test -z "$dontStrip" -a "$NIX_STRIP_DEBUG" = 1; then
         find "$prefix" -name "*.a" -exec echo stripping {} \; \
             -exec strip -S {} \; || fail
@@ -669,17 +696,17 @@ installW() {
         echo "$propagatedBuildInputs" > "$out/nix-support/propagated-build-inputs"
     fi
 
-    eval "$postInstall"
+    eval "$postFixup"
 }
 
 
-installPhase() {
-    if test "$dontInstall" = 1; then
+fixupPhase() {
+    if test "$dontFixup" = 1; then
         return
     fi
-    header "installing"
-    startLog "install"
-    installW
+    header "post-installation fixup"
+    startLog "fixup"
+    fixupW
     stopLog
     stopNest
 }
@@ -741,7 +768,7 @@ genericBuild() {
 
     if test -z "$phases"; then
         phases="patchPhase configurePhase buildPhase checkPhase \
-            installPhase distPhase";
+            installPhase fixupPhase distPhase";
     fi
 
     for i in $phases; do