summary refs log tree commit diff
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2014-08-25 15:30:46 +0200
committerVladimír Čunát <vcunat@gmail.com>2014-08-25 15:30:46 +0200
commit3ec413ceced044131825c090f29a48768b562797 (patch)
tree0cf224d9559ad15d8dc2519a9430c383f78de140
parent77da5efc780e5b296f965c5e28ff25865fa53533 (diff)
downloadnixpkgs-3ec413ceced044131825c090f29a48768b562797.tar
nixpkgs-3ec413ceced044131825c090f29a48768b562797.tar.gz
nixpkgs-3ec413ceced044131825c090f29a48768b562797.tar.bz2
nixpkgs-3ec413ceced044131825c090f29a48768b562797.tar.lz
nixpkgs-3ec413ceced044131825c090f29a48768b562797.tar.xz
nixpkgs-3ec413ceced044131825c090f29a48768b562797.tar.zst
nixpkgs-3ec413ceced044131825c090f29a48768b562797.zip
WIP
-rw-r--r--pkgs/build-support/setup-hooks/move-docs.sh29
-rw-r--r--pkgs/build-support/setup-hooks/multiple-outputs.sh47
-rw-r--r--pkgs/development/compilers/gcc/4.6/default.nix2
-rw-r--r--pkgs/development/compilers/gcc/4.8/default.nix2
-rw-r--r--pkgs/development/interpreters/perl/5.16/default.nix2
-rw-r--r--pkgs/development/libraries/glibc/2.19/common.nix5
-rw-r--r--pkgs/development/libraries/glibc/2.19/default.nix2
-rw-r--r--pkgs/development/tools/misc/patchelf/default.nix2
-rw-r--r--pkgs/development/tools/misc/texinfo/5.2.nix2
-rw-r--r--pkgs/stdenv/generic/setup.sh36
-rw-r--r--pkgs/tools/compression/xz/default.nix3
11 files changed, 76 insertions, 56 deletions
diff --git a/pkgs/build-support/setup-hooks/move-docs.sh b/pkgs/build-support/setup-hooks/move-docs.sh
index c819ee12a9c..ef31dcdce27 100644
--- a/pkgs/build-support/setup-hooks/move-docs.sh
+++ b/pkgs/build-support/setup-hooks/move-docs.sh
@@ -2,7 +2,7 @@
 # $out/share/man to $man/share/man; and moves $out/share/doc to
 # $man/share/doc.
 
-preFixupHooks+=(_moveDocs)
+preFixupHooks+=(_moveToShare)
 
 _moveToShare() {
     forceShare=${forceShare:=man doc info}
@@ -21,30 +21,3 @@ _moveToShare() {
     done
 }
 
-_moveToOutput() {
-    local d="$1"
-    local dst="$2"
-    if [ -z "$dst" -a ! -e $dst/$d ]; then return; fi
-    local output
-    for output in $outputs; do
-        if [ "${!output}" = "$dst" ]; then continue; fi
-        if [ -d "${!output}/$d" ]; then
-            echo "moving ${!output}/$d to $dst/$d"
-            mkdir -p $dst/share
-            mv ${!output}/$d $dst/$d
-            break
-        fi
-    done
-}
-
-_moveDocs() {
-    _moveToShare
-    _moveToOutput share/man "$man"
-    _moveToOutput share/info "$info"
-    _moveToOutput share/doc "$doc"
-
-    # Remove empty share directory.
-    if [ -d "$out/share" ]; then
-        rmdir $out/share 2> /dev/null || true
-    fi
-}
diff --git a/pkgs/build-support/setup-hooks/multiple-outputs.sh b/pkgs/build-support/setup-hooks/multiple-outputs.sh
index 72cef7cf032..1589ecd3734 100644
--- a/pkgs/build-support/setup-hooks/multiple-outputs.sh
+++ b/pkgs/build-support/setup-hooks/multiple-outputs.sh
@@ -1,4 +1,7 @@
 preConfigureHooks+=(_multioutConfig)
+preFixupHooks+=(_multioutDocs)
+postFixupHooks+=(_multioutPropagateDev)
+
 
 # Assign the first nonempty string to variable named $1
 _assignFirst() {
@@ -28,14 +31,17 @@ _assignFirst outputDoc "$outputDoc" "$doc" "$out"
 _assignFirst outputMan "$outputMan" "$man" "$outputBin"
 _assignFirst outputInfo "$outputInfo" "$info" "$outputMan"
 
+# put propagated*BuildInputs into $outputDev instead of $out
+propagateIntoOutput="$outputDev"
+
 # Add standard flags to put files into the desired outputs.
 _multioutConfig() {
     if [ -n "${setOutputFlags-1}" ]; then
         configureFlags="\
-            --bindir=$outputBin/bin --sbindir=$outputBin/sbin --libexecdir=$outputBin/libexec \
+            --bindir=$outputBin/bin --sbindir=$outputBin/sbin \
             --includedir=$outputInclude/include --oldincludedir=$outputInclude/include \
             --mandir=$outputMan/share/man --infodir=$outputInfo/share/info --docdir=$outputDoc/share/doc \
-            --libdir=$outputLib/lib \
+            --libdir=$outputLib/lib --libexecdir=$outputLib/libexec \
             $configureFlags"
 
         installFlags="\
@@ -49,3 +55,40 @@ _multioutConfig() {
 _addRpathPrefix "$outputLib"
 NIX_NO_SELF_RPATH=1
 
+_multioutDocs() {
+    _moveToOutput share/man "$outputMan"
+    _moveToOutput share/info "$outputInfo"
+    _moveToOutput share/doc "$outputDoc"
+
+    # Remove empty share directory.
+    if [ -d "$out/share" ]; then
+        rmdir "$out/share" 2> /dev/null || true
+    fi
+}
+_moveToOutput() {
+    local d="$1"
+    local dst="$2"
+    if [ -z "$dst" -a ! -e $dst/$d ]; then return; fi
+    local output
+    for output in $outputs; do
+        if [ "${!output}" = "$dst" ]; then continue; fi
+        if [ -d "${!output}/$d" ]; then
+            echo "moving ${!output}/$d to $dst/$d"
+            mkdir -p $dst/share
+            mv ${!output}/$d $dst/$d
+            break
+        fi
+    done
+}
+
+_multioutPropagateDev() {
+    if [ "$outputInclude" != "$outputDev" ]; then
+        mkdir -p "$outputDev"/nix-support
+        echo "$outputInclude" >> "$outputDev"/nix-support/propagated-build-inputs
+    fi
+    if [ "$outputLib" != "$outputDev" ]; then
+        mkdir -p "$outputDev"/nix-support
+        echo "$outputLib" >> "$outputDev"/nix-support/propagated-build-inputs
+    fi
+}
+
diff --git a/pkgs/development/compilers/gcc/4.6/default.nix b/pkgs/development/compilers/gcc/4.6/default.nix
index 23a67d8d533..79aea01e175 100644
--- a/pkgs/development/compilers/gcc/4.6/default.nix
+++ b/pkgs/development/compilers/gcc/4.6/default.nix
@@ -262,7 +262,7 @@ stdenv.mkDerivation ({
     ++ (optional (perl != null) perl)
     ++ (optional javaAwtGtk pkgconfig);
 
-  buildInputs = [ gmp mpfr mpc libelf ]
+  buildInputs = [ stdenv.hookLib.multiout gmp mpfr mpc libelf ]
     ++ (optional (ppl != null) ppl)
     ++ (optional (cloog != null) cloog)
     ++ (optional (zlib != null) zlib)
diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix
index 205fa0750e6..7197aa22b1d 100644
--- a/pkgs/development/compilers/gcc/4.8/default.nix
+++ b/pkgs/development/compilers/gcc/4.8/default.nix
@@ -282,7 +282,7 @@ stdenv.mkDerivation ({
     ++ (optional (perl != null) perl)
     ++ (optional javaAwtGtk pkgconfig);
 
-  buildInputs = [ gmp mpfr mpc libelf ]
+  buildInputs = [ stdenv.hookLib.multiout gmp mpfr mpc libelf ]
     ++ (optional (ppl != null) ppl)
     ++ (optional (cloog != null) cloog)
     ++ (optional (isl != null) isl)
diff --git a/pkgs/development/interpreters/perl/5.16/default.nix b/pkgs/development/interpreters/perl/5.16/default.nix
index bc9a0f0f4dd..bf0f2b91482 100644
--- a/pkgs/development/interpreters/perl/5.16/default.nix
+++ b/pkgs/development/interpreters/perl/5.16/default.nix
@@ -20,6 +20,8 @@ stdenv.mkDerivation rec {
 
   # TODO: Add a "dev" output containing the header files.
   outputs = [ "out" "man" ];
+  buildInputs = [ stdenv.hookLib.multiout ];
+  setOutputFlags = false;
 
   setOutputConfigureFlags = false;
 
diff --git a/pkgs/development/libraries/glibc/2.19/common.nix b/pkgs/development/libraries/glibc/2.19/common.nix
index cd1ba747d7c..78f4131b76a 100644
--- a/pkgs/development/libraries/glibc/2.19/common.nix
+++ b/pkgs/development/libraries/glibc/2.19/common.nix
@@ -106,7 +106,10 @@ stdenv.mkDerivation ({
 
   installFlags = [ "sysconfdir=$(out)/etc" ];
 
-  buildInputs = stdenv.lib.optionals (cross != null) [ gccCross ]
+  outputs = [ "out" "dev" "bin" "static" ];
+
+  buildInputs = [ stdenv.hookLib.multiout ]
+    ++ stdenv.lib.optionals (cross != null) [ gccCross ]
     ++ stdenv.lib.optional (mig != null) mig
     ++ stdenv.lib.optionals withGd [ gd libpng ];
 
diff --git a/pkgs/development/libraries/glibc/2.19/default.nix b/pkgs/development/libraries/glibc/2.19/default.nix
index ace043a250c..6cfbcd47da9 100644
--- a/pkgs/development/libraries/glibc/2.19/default.nix
+++ b/pkgs/development/libraries/glibc/2.19/default.nix
@@ -25,8 +25,6 @@ in
 
     builder = ./builder.sh;
 
-    outputs = [ "out" "dev" "bin" "static" ];
-
     # When building glibc from bootstrap-tools, we need libgcc_s at RPATH for
     # any program we run, because the gcc will have been placed at a new
     # store path than that determined when built (as a source for the
diff --git a/pkgs/development/tools/misc/patchelf/default.nix b/pkgs/development/tools/misc/patchelf/default.nix
index 1c1245a29c9..b3121ac7944 100644
--- a/pkgs/development/tools/misc/patchelf/default.nix
+++ b/pkgs/development/tools/misc/patchelf/default.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
 
   setupHook = [ ./setup-hook.sh ];
 
-  doCheck = true;
+  #doCheck = true; # problems when loading libc.so.6
 
   meta = {
     homepage = http://nixos.org/patchelf.html;
diff --git a/pkgs/development/tools/misc/texinfo/5.2.nix b/pkgs/development/tools/misc/texinfo/5.2.nix
index 804e7a2527f..dde979f532b 100644
--- a/pkgs/development/tools/misc/texinfo/5.2.nix
+++ b/pkgs/development/tools/misc/texinfo/5.2.nix
@@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
     sha256 = "1njfwh2z34r2c4r0iqa7v24wmjzvsfyz4vplzry8ln3479lfywal";
   };
 
-  buildInputs = [ perl xz ]
+  buildInputs = [ perl xz.bin ]
     ++ stdenv.lib.optional interactive ncurses;
 
   preInstall = ''
diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh
index 6291f4a367b..74dad2c895b 100644
--- a/pkgs/stdenv/generic/setup.sh
+++ b/pkgs/stdenv/generic/setup.sh
@@ -144,6 +144,20 @@ ensureDir() {
 }
 
 
+# Add $1/lib* into rpaths.
+# The function is used in multiple-outputs.sh hook,
+# so it is defined here but tried after the hook.
+_addRpathPrefix() {
+    if [ "$NIX_NO_SELF_RPATH" != 1 ]; then
+        export NIX_LDFLAGS="-rpath $1/lib $NIX_LDFLAGS"
+        if [ -n "$NIX_LIB64_IN_SELF_RPATH" ]; then
+            export NIX_LDFLAGS="-rpath $1/lib64 $NIX_LDFLAGS"
+        fi
+        if [ -n "$NIX_LIB32_IN_SELF_RPATH" ]; then
+            export NIX_LDFLAGS="-rpath $1/lib32 $NIX_LDFLAGS"
+        fi
+    fi
+}
 
 ######################################################################
 # Initialisation.
@@ -259,18 +273,6 @@ for i in $crossPkgs; do
 done
 
 
-# Add $1/lib* into rpaths.
-_addRpathPrefix() {
-    if [ "$NIX_NO_SELF_RPATH" != 1 ]; then
-        export NIX_LDFLAGS="-rpath $1/lib $NIX_LDFLAGS"
-        if [ -n "$NIX_LIB64_IN_SELF_RPATH" ]; then
-            export NIX_LDFLAGS="-rpath $1/lib64 $NIX_LDFLAGS"
-        fi
-        if [ -n "$NIX_LIB32_IN_SELF_RPATH" ]; then
-            export NIX_LDFLAGS="-rpath $1/lib32 $NIX_LDFLAGS"
-        fi
-    fi
-}
 _addRpathPrefix "$out"
 
 
@@ -614,7 +616,7 @@ configurePhase() {
         done
     fi
 
-    if [ -z "$dontAddPrefix" ]; then
+    if [ -z "$dontAddPrefix" -a -n "$prefix" ]; then
         configureFlags="${prefixKey:---prefix=}$prefix $configureFlags"
     fi
 
@@ -676,7 +678,9 @@ checkPhase() {
 installPhase() {
     runHook preInstall
 
-    mkdir -p "$prefix"
+    if [ -n "$prefix" ]; then
+        mkdir -p "$prefix"
+    fi
 
     installTargets=${installTargets:-install}
     echo "install flags: $installTargets $makeFlags ${makeFlagsArray[@]} $installFlags ${installFlagsArray[@]}"
@@ -780,8 +784,6 @@ showPhaseHeader() {
 
 
 genericBuild() {
-    header "building $out"
-
     if [ -n "$buildCommand" ]; then
         eval "$buildCommand"
         return
@@ -825,8 +827,6 @@ genericBuild() {
 
         stopNest
     done
-
-    stopNest
 }
 
 
diff --git a/pkgs/tools/compression/xz/default.nix b/pkgs/tools/compression/xz/default.nix
index c9b57bc4669..293d832345b 100644
--- a/pkgs/tools/compression/xz/default.nix
+++ b/pkgs/tools/compression/xz/default.nix
@@ -8,7 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "1404i59bp6rzxya0br1q9njdv32z4sggyfrkjr7vq695hk94hv0n";
   };
 
-  outputs = [ "out" "dev" "man" "doc" ];
+  outputs = [ "dev" "out" "bin" "man" "doc" ];
+  buildInputs = [ stdenv.hookLib.multiout ];
 
   doCheck = true;