summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2004-07-12 12:34:02 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2004-07-12 12:34:02 +0000
commit0c7969f9c8698a20224a18e4e2b4c2318d9fae91 (patch)
tree1726b70371e7792566267c814cca15330665ffa8
parent8b0e40b3d40de5e62043ba9f2731dfcb6b480015 (diff)
downloadnixlib-0c7969f9c8698a20224a18e4e2b4c2318d9fae91.tar
nixlib-0c7969f9c8698a20224a18e4e2b4c2318d9fae91.tar.gz
nixlib-0c7969f9c8698a20224a18e4e2b4c2318d9fae91.tar.bz2
nixlib-0c7969f9c8698a20224a18e4e2b4c2318d9fae91.tar.lz
nixlib-0c7969f9c8698a20224a18e4e2b4c2318d9fae91.tar.xz
nixlib-0c7969f9c8698a20224a18e4e2b4c2318d9fae91.tar.zst
nixlib-0c7969f9c8698a20224a18e4e2b4c2318d9fae91.zip
* Allow a build to finish "succesfully" as far as Nix is concerned
  even if some build phase failed if the variable `$succeedOnFailure'
  is set to 1.  If that happens, the file `$out/nix-support/failed' is
  created to mark the build result as bad.  This is useful for release
  management systems that might want to publish failed releases.

svn path=/nixpkgs/trunk/; revision=1163
-rw-r--r--pkgs/stdenv/generic-branch/setup.sh49
1 files changed, 38 insertions, 11 deletions
diff --git a/pkgs/stdenv/generic-branch/setup.sh b/pkgs/stdenv/generic-branch/setup.sh
index 237ae21fa960..e98151122b27 100644
--- a/pkgs/stdenv/generic-branch/setup.sh
+++ b/pkgs/stdenv/generic-branch/setup.sh
@@ -37,6 +37,29 @@ if test -f $NIX_GCC/nix-support/setup-hook; then
 fi
 
     
+# Called when some build action fails.  If $succeedOnFailure is set,
+# create the file `$out/nix-support/failed' to signal failure, and
+# exit normally.  Otherwise, exit with failure.
+fail() {
+    exitCode=$?
+    if test "$succeedOnFailure" = 1; then
+        ensureDir "$out/nix-support"
+        touch "$out/nix-support/failed"
+        exit 0
+    else
+        exit $?
+    fi
+}
+
+
+# Allow the caller to augment buildInputs (it's not always possible to
+# do this before the call to setup.sh, since the PATH is empty at that
+# point; here we have a basic Unix environment).
+if test -n "$addInputsHook"; then
+    $addInputsHook
+fi
+
+
 # Recursively find all build inputs.
 findInputs()
 {
@@ -76,6 +99,11 @@ addToEnv()
 {
     local pkg=$1
 
+    if test "$ignoreFailedInputs" != "1" -a -e $1/nix-support/failed; then
+        echo "failed input $1" >&2
+        fail
+    fi
+
     if test -d $1/bin; then
         export _PATH=$_PATH${_PATH:+:}$1/bin
     fi
@@ -245,7 +273,7 @@ unpackFile() {
     esac
 
     header "unpacking source archive $file (using $cmd)" 3
-    $cmd
+    $cmd || fail
     stopNest
 }
 
@@ -339,7 +367,7 @@ patchW() {
 
     for i in $patches; do
         header "applying patch $i" 3
-        patch -p1 < $i
+        patch -p1 < $i || fail
         stopNest
     done
 }
@@ -399,7 +427,7 @@ configureW() {
     fi
 
     echo "configure flags: $configureFlags"
-    $configureScript $configureFlags
+    $configureScript $configureFlags || fail
 
     if test -n "$postConfigure"; then
         $postConfigure
@@ -423,7 +451,7 @@ buildW() {
     fi
 
     echo "make flags: $makeFlags"
-    make $makeFlags
+    make $makeFlags || fail
 }
 
 
@@ -450,7 +478,7 @@ checkW() {
     fi
 
     echo "check flags: $checkFlags"
-    make $checkFlags $checkTarget
+    make $checkFlags $checkTarget || fail
 }
 
 
@@ -480,16 +508,16 @@ installW() {
     
     if test -z "$dontMakeInstall"; then
         echo "install flags: $installFlags"
-        make install $installFlags
+        make install $installFlags || fail
     fi
 
     if test -z "$dontStrip" -a "$NIX_STRIP_DEBUG" = 1; then
-        find "$prefix" -name "*.a" -exec echo stripping {} \; -exec strip -S {} \;
+        find "$prefix" -name "*.a" -exec echo stripping {} \; \
+            -exec strip -S {} \; || fail
     fi
 
     if test -n "$propagatedBuildInputs"; then
-        ensureDir "$out"
-        if ! test -x "$/nix-support"; then mkdir "$out/nix-support"; fi
+        ensureDir "$out/nix-support"
         echo "$propagatedBuildInputs" > "$out/nix-support/propagated-build-inputs"
     fi
 
@@ -522,10 +550,9 @@ distW() {
     fi
 
     echo "dist flags: $distFlags"
-    make $distFlags $distTarget
+    make $distFlags $distTarget || fail
 
     if test "$dontCopyDist" != 1; then
-        ensureDir "$out"
         ensureDir "$out/tarballs"
 
         if test -z "$tarballs"; then