Author: simons
Date: Thu Aug  5 18:37:30 2010
New Revision: 22969
URL: https://svn.nixos.org/websvn/nix/?rev=22969&sc=1

Log:
Enable parallel building of gcc, glibc, gmp, mpfr, coreutils, perl, git, and 
qt4.

If a build expressions has set "enableParallelBuilding = true", then the
generic builder may utilize more than one CPU core to build that particular
expression. This feature works out of the box for GNU Make. Expressions that
use other build drivers like Boost.Jam or SCons have to specify appropriate
flags such as "-j${NIX_BUILD_CORES}" themselves.

Modified:
   
nixpkgs/branches/parallel-building-merger/pkgs/applications/version-management/git-and-tools/git/default.nix
   
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-4.3/default.nix
   
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-4.4/default.nix
   
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-4.5/default.nix
   
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-apple/default.nix
   
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-apple64/default.nix
   
nixpkgs/branches/parallel-building-merger/pkgs/development/interpreters/perl-5.10/default.nix
   
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.11/builder.sh
   
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.11/builder2.sh
   
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.11/common.nix
   
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.5/builder.sh
   
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.5/default.nix
   
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/gmp/4.3.1.nix
   
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/gmp/default.nix
   
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/mpfr/default.nix
   
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/qt-4.x/4.5/default.nix
   
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/qt-4.x/4.6/default.nix
   
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/qt-4.x/4.7/default.nix
   nixpkgs/branches/parallel-building-merger/pkgs/stdenv/generic/setup.sh
   
nixpkgs/branches/parallel-building-merger/pkgs/tools/misc/coreutils/default.nix

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/applications/version-management/git-and-tools/git/default.nix
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/applications/version-management/git-and-tools/git/default.nix
        Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/applications/version-management/git-and-tools/git/default.nix
        Thu Aug  5 18:37:30 2010        (r22969)
@@ -116,6 +116,8 @@
 
      '';
 
+  enableParallelBuilding = true;
+
   meta = {
     license = "GPLv2";
     homepage = http://git-scm.com/;

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-4.3/default.nix
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-4.3/default.nix
    Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-4.3/default.nix
    Thu Aug  5 18:37:30 2010        (r22969)
@@ -127,6 +127,8 @@
   passthru = { inherit langC langCC langFortran langVhdl langTreelang
       enableMultilib; };
 
+  enableParallelBuilding = true;
+
   meta = {
     homepage = "http://gcc.gnu.org/";;
     license = "GPL/LGPL";

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-4.4/default.nix
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-4.4/default.nix
    Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-4.4/default.nix
    Thu Aug  5 18:37:30 2010        (r22969)
@@ -201,6 +201,8 @@
   passthru = { inherit langC langCC langAda langFortran langTreelang langVhdl
       enableMultilib version; };
 
+  enableParallelBuilding = true;
+
   meta = {
     homepage = http://gcc.gnu.org/;
     license = "GPLv3+";  # runtime support libraries are typically LGPLv3+

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-4.5/default.nix
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-4.5/default.nix
    Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-4.5/default.nix
    Thu Aug  5 18:37:30 2010        (r22969)
@@ -289,6 +289,8 @@
   passthru = { inherit langC langCC langAda langFortran langTreelang langVhdl
       enableMultilib version; };
 
+  enableParallelBuilding = true;
+
   meta = {
     homepage = http://gcc.gnu.org/;
     license = "GPLv3+";  # runtime support libraries are typically LGPLv3+

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-apple/default.nix
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-apple/default.nix
  Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-apple/default.nix
  Thu Aug  5 18:37:30 2010        (r22969)
@@ -21,6 +21,8 @@
       sha256 = 
"a7d8041e50e110f5a503e188a05cb217f0c99c51f248a0a1387cc07a0b6f167f";
     }) ;
 
+  enableParallelBuilding = true;
+
   sourceRoot = "gcc_42-5574/";
   patches =
     [./pass-cxxcpp.patch ./debug_list.patch]

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-apple64/default.nix
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-apple64/default.nix
        Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/compilers/gcc-apple64/default.nix
        Thu Aug  5 18:37:30 2010        (r22969)
@@ -21,6 +21,8 @@
       sha256 = "1fy6j41rhxdsm19sib9wygjl5l54g8pm13c6y5x13f40mavw1mma";
     }) ;
 
+  enableParallelBuilding = true;
+
   libstdcxx = "libstdcxx-39";
   sourceRoot = "gcc-5646/";
   patches =

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/interpreters/perl-5.10/default.nix
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/interpreters/perl-5.10/default.nix
       Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/interpreters/perl-5.10/default.nix
       Thu Aug  5 18:37:30 2010        (r22969)
@@ -39,6 +39,8 @@
 
   dontAddPrefix = true;
 
+  enableParallelBuilding = true;
+
   preConfigure =
     ''
       configureFlags="$configureFlags -Dprefix=$out 
-Dman1dir=$out/share/man/man1 -Dman3dir=$out/share/man/man3"

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.11/builder.sh
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.11/builder.sh
  Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.11/builder.sh
  Thu Aug  5 18:37:30 2010        (r22969)
@@ -17,7 +17,7 @@
 
 postInstall() {
     if test -n "$installLocales"; then
-        make localedata/install-locales
+        make -j${NIX_BUILD_CORES:-1} -l${NIX_BUILD_CORES:-1} 
localedata/install-locales
     fi
     
     test -f $out/etc/ld.so.cache && rm $out/etc/ld.so.cache

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.11/builder2.sh
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.11/builder2.sh
 Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.11/builder2.sh
 Thu Aug  5 18:37:30 2010        (r22969)
@@ -20,7 +20,7 @@
 
 postInstall() {
     if test -n "$installLocales"; then
-        make localedata/install-locales
+        make -j${NIX_BUILD_CORES:-1} -l${NIX_BUILD_CORES:-1} 
localedata/install-locales
     fi
     
     test -f $out/etc/ld.so.cache && rm $out/etc/ld.so.cache

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.11/common.nix
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.11/common.nix
  Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.11/common.nix
  Thu Aug  5 18:37:30 2010        (r22969)
@@ -30,6 +30,8 @@
 
   inherit (stdenv) is64bit;
 
+  enableParallelBuilding = true;
+
   patches =
     stdenv.lib.optional (fetchgit == null)
     /* Fix for NIXPKGS-79: when doing host name lookups, when

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.5/builder.sh
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.5/builder.sh
   Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.5/builder.sh
   Thu Aug  5 18:37:30 2010        (r22969)
@@ -38,7 +38,7 @@
 
 postInstall() {
     if test -n "$installLocales"; then
-        make localedata/install-locales
+        make -j${NIX_BUILD_CORES:-1} -l${NIX_BUILD_CORES:-1} 
localedata/install-locales
     fi
     rm $out/etc/ld.so.cache
     (cd $out/include && ln -s $kernelHeaders/include/* .) || exit 1

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.5/default.nix
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.5/default.nix
  Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/glibc-2.5/default.nix
  Thu Aug  5 18:37:30 2010        (r22969)
@@ -30,6 +30,8 @@
   # the symbol __i686.get_pc_thunk.dx to be mangled.
   NIX_CFLAGS_COMPILE = "-U__i686";
 
+  enableParallelBuilding = true;
+
   meta = {
     homepage = http://www.gnu.org/software/libc/;
     description = "The GNU C Library";

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/gmp/4.3.1.nix
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/gmp/4.3.1.nix
  Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/gmp/4.3.1.nix
  Thu Aug  5 18:37:30 2010        (r22969)
@@ -16,6 +16,8 @@
 
   doCheck = true;
 
+  enableParallelBuilding = true;
+
   meta = {
     description = "A free library for arbitrary precision arithmetic, 
operating on signed integers, rational numbers, and floating point numbers";
     homepage = http://gmplib.org/;

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/gmp/default.nix
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/gmp/default.nix
        Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/gmp/default.nix
        Thu Aug  5 18:37:30 2010        (r22969)
@@ -16,6 +16,8 @@
 
   doCheck = true;
 
+  enableParallelBuilding = true;
+
   meta = {
     description = "A free library for arbitrary precision arithmetic, 
operating on signed integers, rational numbers, and floating point numbers";
     homepage = http://gmplib.org/;

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/mpfr/default.nix
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/mpfr/default.nix
       Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/mpfr/default.nix
       Thu Aug  5 18:37:30 2010        (r22969)
@@ -12,6 +12,8 @@
 
   doCheck = true;
 
+  enableParallelBuilding = true;
+
   meta = {
     homepage = http://www.mpfr.org/;
     description = "GNU MPFR, a library for multiple-precision floating-point 
arithmetic";

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/qt-4.x/4.5/default.nix
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/qt-4.x/4.5/default.nix
 Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/qt-4.x/4.5/default.nix
 Thu Aug  5 18:37:30 2010        (r22969)
@@ -74,6 +74,8 @@
     ${if keepDocumentation == false then "rm -rf $out/doc" else ""}
   '';
 
+  enableParallelBuilding = true;
+
   meta = {
     homepage = 
http://www.qtsoftware.com/downloads/opensource/appdev/linux-x11-cpp;
     description = "A cross-platform application framework for C++";

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/qt-4.x/4.6/default.nix
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/qt-4.x/4.6/default.nix
 Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/qt-4.x/4.6/default.nix
 Thu Aug  5 18:37:30 2010        (r22969)
@@ -89,6 +89,8 @@
 
   postInstall = if useDocs then "rm -rf $out/share/doc/${name}/{html,src}" 
else "";
 
+  enableParallelBuilding = true;
+
   meta = {
     homepage = http://qt.nokia.com/products;
     description = "A cross-platform application framework for C++";

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/qt-4.x/4.7/default.nix
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/qt-4.x/4.7/default.nix
 Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/development/libraries/qt-4.x/4.7/default.nix
 Thu Aug  5 18:37:30 2010        (r22969)
@@ -99,6 +99,8 @@
 
   postInstall = if useDocs then "rm -rf $out/share/doc/${name}/{html,src}" 
else "";
 
+  enableParallelBuilding = true;
+
   meta = with stdenv.lib; {
     homepage = http://qt.nokia.com/products;
     description = "A cross-platform application framework for C++";

Modified: nixpkgs/branches/parallel-building-merger/pkgs/stdenv/generic/setup.sh
==============================================================================
--- nixpkgs/branches/parallel-building-merger/pkgs/stdenv/generic/setup.sh      
Thu Aug  5 18:24:33 2010        (r22968)
+++ nixpkgs/branches/parallel-building-merger/pkgs/stdenv/generic/setup.sh      
Thu Aug  5 18:37:30 2010        (r22969)
@@ -269,6 +269,23 @@
 export NIX_INDENT_MAKE=1
 
 
+# Normalize the NIX_BUILD_CORES variable. The value might be 0, which
+# means that we're supposed to try and auto-detect the number of
+# available CPU cores at run-time.
+
+if test -z "${NIX_BUILD_CORES:-}"; then
+  NIX_BUILD_CORES="1"
+elif test "$NIX_BUILD_CORES" -le 0; then
+  NIX_BUILD_CORES=$(nproc 2>/dev/null || true)
+  if expr >/dev/null 2>&1 "$NIX_BUILD_CORES" : "^[0-9][0-9]*$"; then
+    :
+  else
+    NIX_BUILD_CORES="1"
+  fi
+fi
+export NIX_BUILD_CORES
+
+
 ######################################################################
 # Misc. helper functions.
 
@@ -603,6 +620,7 @@
 
     echo "make flags: $makeFlags ${makeflagsarr...@]} $buildFlags 
${buildflagsarr...@]}"
     make ${makefile:+-f $makefile} \
+        ${enableParallelBuilding:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}} \
         $makeFlags "${makeflagsarr...@]}" \
         $buildFlags "${buildflagsarr...@]}"
 
@@ -615,6 +633,7 @@
 
     echo "check flags: $makeFlags ${makeflagsarr...@]} $checkFlags 
${checkflagsarr...@]}"
     make ${makefile:+-f $makefile} \
+        ${enableParallelBuilding:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}} \
         $makeFlags "${makeflagsarr...@]}" \
         $checkFlags "${checkflagsarr...@]}" ${checkTarget:-check}
 

Modified: 
nixpkgs/branches/parallel-building-merger/pkgs/tools/misc/coreutils/default.nix
==============================================================================
--- 
nixpkgs/branches/parallel-building-merger/pkgs/tools/misc/coreutils/default.nix 
    Thu Aug  5 18:24:33 2010        (r22968)
+++ 
nixpkgs/branches/parallel-building-merger/pkgs/tools/misc/coreutils/default.nix 
    Thu Aug  5 18:37:30 2010        (r22969)
@@ -24,6 +24,8 @@
   # and {Open,Free}BSD.
   doCheck = (stdenv ? glibc) && (cross == null);
 
+  enableParallelBuilding = true;
+
   meta = {
     homepage = http://www.gnu.org/software/coreutils/;
     description = "The basic file, shell and text manipulation utilities of 
the GNU operating system";
_______________________________________________
nix-commits mailing list
[email protected]
http://mail.cs.uu.nl/mailman/listinfo/nix-commits

Reply via email to