Hi,

I would really like to have the parallel-building changes in trunk. Are
there any plans to merge the stdenv-updates branch into trunk any time
soon soon?

In case there aren't, does any object to committing those two check-ins
to trunk directly?

Take care,
Peter


>From e0a638af5a747eb1462ce22468fe69fc0bcea9a5 Mon Sep 17 00:00:00 2001
From: Peter Simons <[email protected]>
Date: Tue, 22 Jun 2010 13:12:27 +0200
Subject: [PATCH 1/2] pkgs/stdenv/generic/setup.sh: added support for 
enableParallelBuilding variable

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.
---
 pkgs/stdenv/generic/setup.sh |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh
index 5e2fc7b..948b6ca 100644
--- a/pkgs/stdenv/generic/setup.sh
+++ b/pkgs/stdenv/generic/setup.sh
@@ -269,6 +269,23 @@ fi
 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 @@ buildPhase() {
 
     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 @@ checkPhase() {
 
     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}
 
-- 
1.7.2.1

>From 79d3ec303998da5f292ac3f2abc14d77345283d6 Mon Sep 17 00:00:00 2001
From: Peter Simons <[email protected]>
Date: Tue, 22 Jun 2010 13:28:20 +0200
Subject: [PATCH 2/2] Enable parallel building of gcc, glibc, gmp, mpfr, 
coreutils, perl, git, and qt4.

---
 .../git-and-tools/git/default.nix                  |    2 ++
 pkgs/development/compilers/gcc-4.3/default.nix     |    2 ++
 pkgs/development/compilers/gcc-4.4/default.nix     |    2 ++
 pkgs/development/compilers/gcc-4.5/default.nix     |    2 ++
 pkgs/development/compilers/gcc-apple/default.nix   |    2 ++
 pkgs/development/compilers/gcc-apple64/default.nix |    2 ++
 .../development/interpreters/perl-5.10/default.nix |    2 ++
 pkgs/development/libraries/glibc-2.11/builder.sh   |    2 +-
 pkgs/development/libraries/glibc-2.11/builder2.sh  |    2 +-
 pkgs/development/libraries/glibc-2.11/common.nix   |    2 ++
 pkgs/development/libraries/glibc-2.5/builder.sh    |    2 +-
 pkgs/development/libraries/glibc-2.5/default.nix   |    2 ++
 pkgs/development/libraries/gmp/4.3.1.nix           |    2 ++
 pkgs/development/libraries/gmp/default.nix         |    2 ++
 pkgs/development/libraries/mpfr/default.nix        |    2 ++
 pkgs/development/libraries/qt-4.x/4.5/default.nix  |    2 ++
 pkgs/development/libraries/qt-4.x/4.6/default.nix  |    2 ++
 pkgs/development/libraries/qt-4.x/4.7/default.nix  |    2 ++
 pkgs/tools/misc/coreutils/default.nix              |    2 ++
 19 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/pkgs/applications/version-management/git-and-tools/git/default.nix 
b/pkgs/applications/version-management/git-and-tools/git/default.nix
index b7d3490..3cdf200 100644
--- a/pkgs/applications/version-management/git-and-tools/git/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git/default.nix
@@ -116,6 +116,8 @@ stdenv.mkDerivation rec {
 
      '';
 
+  enableParallelBuilding = true;
+
   meta = {
     license = "GPLv2";
     homepage = http://git-scm.com/;
diff --git a/pkgs/development/compilers/gcc-4.3/default.nix 
b/pkgs/development/compilers/gcc-4.3/default.nix
index 73caa15..b9d0d9b 100644
--- a/pkgs/development/compilers/gcc-4.3/default.nix
+++ b/pkgs/development/compilers/gcc-4.3/default.nix
@@ -127,6 +127,8 @@ stdenv.mkDerivation ({
   passthru = { inherit langC langCC langFortran langVhdl langTreelang
       enableMultilib; };
 
+  enableParallelBuilding = true;
+
   meta = {
     homepage = "http://gcc.gnu.org/";;
     license = "GPL/LGPL";
diff --git a/pkgs/development/compilers/gcc-4.4/default.nix 
b/pkgs/development/compilers/gcc-4.4/default.nix
index bdf2e58..e4206ca 100644
--- a/pkgs/development/compilers/gcc-4.4/default.nix
+++ b/pkgs/development/compilers/gcc-4.4/default.nix
@@ -201,6 +201,8 @@ stdenv.mkDerivation ({
   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+
diff --git a/pkgs/development/compilers/gcc-4.5/default.nix 
b/pkgs/development/compilers/gcc-4.5/default.nix
index 39232c4..38f4338 100644
--- a/pkgs/development/compilers/gcc-4.5/default.nix
+++ b/pkgs/development/compilers/gcc-4.5/default.nix
@@ -289,6 +289,8 @@ stdenv.mkDerivation ({
   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+
diff --git a/pkgs/development/compilers/gcc-apple/default.nix 
b/pkgs/development/compilers/gcc-apple/default.nix
index 8006bd4..3346a4e 100644
--- a/pkgs/development/compilers/gcc-apple/default.nix
+++ b/pkgs/development/compilers/gcc-apple/default.nix
@@ -21,6 +21,8 @@ stdenv.mkDerivation ({
       sha256 = 
"a7d8041e50e110f5a503e188a05cb217f0c99c51f248a0a1387cc07a0b6f167f";
     }) ;
 
+  enableParallelBuilding = true;
+
   sourceRoot = "gcc_42-5574/";
   patches =
     [./pass-cxxcpp.patch ./debug_list.patch]
diff --git a/pkgs/development/compilers/gcc-apple64/default.nix 
b/pkgs/development/compilers/gcc-apple64/default.nix
index b87cd59..ec16fae 100644
--- a/pkgs/development/compilers/gcc-apple64/default.nix
+++ b/pkgs/development/compilers/gcc-apple64/default.nix
@@ -21,6 +21,8 @@ stdenv.mkDerivation ({
       sha256 = "1fy6j41rhxdsm19sib9wygjl5l54g8pm13c6y5x13f40mavw1mma";
     }) ;
 
+  enableParallelBuilding = true;
+
   libstdcxx = "libstdcxx-39";
   sourceRoot = "gcc-5646/";
   patches =
diff --git a/pkgs/development/interpreters/perl-5.10/default.nix 
b/pkgs/development/interpreters/perl-5.10/default.nix
index 3116829..76928d1 100644
--- a/pkgs/development/interpreters/perl-5.10/default.nix
+++ b/pkgs/development/interpreters/perl-5.10/default.nix
@@ -39,6 +39,8 @@ stdenv.mkDerivation rec {
 
   dontAddPrefix = true;
 
+  enableParallelBuilding = true;
+
   preConfigure =
     ''
       configureFlags="$configureFlags -Dprefix=$out 
-Dman1dir=$out/share/man/man1 -Dman3dir=$out/share/man/man3"
diff --git a/pkgs/development/libraries/glibc-2.11/builder.sh 
b/pkgs/development/libraries/glibc-2.11/builder.sh
index f8da3b8..cbdb55b 100644
--- a/pkgs/development/libraries/glibc-2.11/builder.sh
+++ b/pkgs/development/libraries/glibc-2.11/builder.sh
@@ -17,7 +17,7 @@ postConfigure() {
 
 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
diff --git a/pkgs/development/libraries/glibc-2.11/builder2.sh 
b/pkgs/development/libraries/glibc-2.11/builder2.sh
index f156e64..7d1a051 100644
--- a/pkgs/development/libraries/glibc-2.11/builder2.sh
+++ b/pkgs/development/libraries/glibc-2.11/builder2.sh
@@ -20,7 +20,7 @@ postConfigure() {
 
 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
diff --git a/pkgs/development/libraries/glibc-2.11/common.nix 
b/pkgs/development/libraries/glibc-2.11/common.nix
index b792e84..00d9b99 100644
--- a/pkgs/development/libraries/glibc-2.11/common.nix
+++ b/pkgs/development/libraries/glibc-2.11/common.nix
@@ -30,6 +30,8 @@ stdenv.mkDerivation ({
 
   inherit (stdenv) is64bit;
 
+  enableParallelBuilding = true;
+
   patches =
     stdenv.lib.optional (fetchgit == null)
     /* Fix for NIXPKGS-79: when doing host name lookups, when
diff --git a/pkgs/development/libraries/glibc-2.5/builder.sh 
b/pkgs/development/libraries/glibc-2.5/builder.sh
index 695a3a1..4cd0132 100644
--- a/pkgs/development/libraries/glibc-2.5/builder.sh
+++ b/pkgs/development/libraries/glibc-2.5/builder.sh
@@ -38,7 +38,7 @@ postConfigure() {
 
 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
diff --git a/pkgs/development/libraries/glibc-2.5/default.nix 
b/pkgs/development/libraries/glibc-2.5/default.nix
index abfc3d0..83447d8 100644
--- a/pkgs/development/libraries/glibc-2.5/default.nix
+++ b/pkgs/development/libraries/glibc-2.5/default.nix
@@ -30,6 +30,8 @@ stdenv.mkDerivation {
   # 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";
diff --git a/pkgs/development/libraries/gmp/4.3.1.nix 
b/pkgs/development/libraries/gmp/4.3.1.nix
index 17455b9..5f83d9a 100644
--- a/pkgs/development/libraries/gmp/4.3.1.nix
+++ b/pkgs/development/libraries/gmp/4.3.1.nix
@@ -16,6 +16,8 @@ stdenv.mkDerivation rec {
 
   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/;
diff --git a/pkgs/development/libraries/gmp/default.nix 
b/pkgs/development/libraries/gmp/default.nix
index 0b608fb..ac20bc6 100644
--- a/pkgs/development/libraries/gmp/default.nix
+++ b/pkgs/development/libraries/gmp/default.nix
@@ -16,6 +16,8 @@ stdenv.mkDerivation rec {
 
   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/;
diff --git a/pkgs/development/libraries/mpfr/default.nix 
b/pkgs/development/libraries/mpfr/default.nix
index dea0113..1bfd144 100644
--- a/pkgs/development/libraries/mpfr/default.nix
+++ b/pkgs/development/libraries/mpfr/default.nix
@@ -12,6 +12,8 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
+  enableParallelBuilding = true;
+
   meta = {
     homepage = http://www.mpfr.org/;
     description = "GNU MPFR, a library for multiple-precision floating-point 
arithmetic";
diff --git a/pkgs/development/libraries/qt-4.x/4.5/default.nix 
b/pkgs/development/libraries/qt-4.x/4.5/default.nix
index 35960c4..3b29043 100644
--- a/pkgs/development/libraries/qt-4.x/4.5/default.nix
+++ b/pkgs/development/libraries/qt-4.x/4.5/default.nix
@@ -74,6 +74,8 @@ stdenv.mkDerivation {
     ${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++";
diff --git a/pkgs/development/libraries/qt-4.x/4.6/default.nix 
b/pkgs/development/libraries/qt-4.x/4.6/default.nix
index 9440765..3253e58 100644
--- a/pkgs/development/libraries/qt-4.x/4.6/default.nix
+++ b/pkgs/development/libraries/qt-4.x/4.6/default.nix
@@ -89,6 +89,8 @@ stdenv.mkDerivation rec {
 
   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++";
diff --git a/pkgs/development/libraries/qt-4.x/4.7/default.nix 
b/pkgs/development/libraries/qt-4.x/4.7/default.nix
index 2ab7c38..cc6d3c8 100644
--- a/pkgs/development/libraries/qt-4.x/4.7/default.nix
+++ b/pkgs/development/libraries/qt-4.x/4.7/default.nix
@@ -99,6 +99,8 @@ stdenv.mkDerivation rec {
 
   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++";
diff --git a/pkgs/tools/misc/coreutils/default.nix 
b/pkgs/tools/misc/coreutils/default.nix
index f4cf9fe..8052ce9 100644
--- a/pkgs/tools/misc/coreutils/default.nix
+++ b/pkgs/tools/misc/coreutils/default.nix
@@ -24,6 +24,8 @@ stdenv.mkDerivation (rec {
   # 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";
-- 
1.7.2.1

_______________________________________________
nix-dev mailing list
[email protected]
https://mail.cs.uu.nl/mailman/listinfo/nix-dev

Reply via email to