[Nix-dev] When will stdenv-updates be merged to trunk? (again)

Lluís Batlle i Rossell viriketo at gmail.com
Tue Aug 3 12:58:49 CEST 2010


On Tue, Aug 03, 2010 at 12:48:14PM +0200, Peter Simons wrote:
> 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?
Having that in trunk causes a stdenv rebuild, so a rebuild of all
stdenv.mkDerivation packages. We would have to announce such a thing.

I'm working these days in the stdenv-updates branches trying to get new
platforms for NixOS. All looks promising, so maybe I will not need many more
days. I'm not sure I will have that totally finished by next week, though.

I updated gcc to 4.5.1 and seems to work quite well. We may want to update the
glibc to 2.12 whenever it's out.

What do you think, glibc 2.12 and gcc 4.5.1 for the new stdenv? If that can be
agreed, we can go on stabilizing stdenv-updates for a later merge.

Regards,
Lluís.

> >From e0a638af5a747eb1462ce22468fe69fc0bcea9a5 Mon Sep 17 00:00:00 2001
> From: Peter Simons <simons at cryp.to>
> 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 ${makeFlagsArray[@]} $buildFlags ${buildFlagsArray[@]}"
>      make ${makefile:+-f $makefile} \
> +        ${enableParallelBuilding:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}} \
>          $makeFlags "${makeFlagsArray[@]}" \
>          $buildFlags "${buildFlagsArray[@]}"
>  
> @@ -615,6 +633,7 @@ checkPhase() {
>  
>      echo "check flags: $makeFlags ${makeFlagsArray[@]} $checkFlags ${checkFlagsArray[@]}"
>      make ${makefile:+-f $makefile} \
> +        ${enableParallelBuilding:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}} \
>          $makeFlags "${makeFlagsArray[@]}" \
>          $checkFlags "${checkFlagsArray[@]}" ${checkTarget:-check}
>  
> -- 
> 1.7.2.1
> 

> >From 79d3ec303998da5f292ac3f2abc14d77345283d6 Mon Sep 17 00:00:00 2001
> From: Peter Simons <simons at cryp.to>
> 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
> nix-dev at cs.uu.nl
> https://mail.cs.uu.nl/mailman/listinfo/nix-dev




More information about the nix-dev mailing list