diff options
author | Vladimír Čunát <vcunat@gmail.com> | 2014-08-30 08:33:10 +0200 |
---|---|---|
committer | Vladimír Čunát <vcunat@gmail.com> | 2014-08-30 08:33:10 +0200 |
commit | 031baae714f2219f33fa713e4ed5a8926e620f79 (patch) | |
tree | e02f50390d7f2b469070bf313d017fe3221796b6 | |
parent | a70180ba73553e66d4f5555d2b4d232b4990718b (diff) | |
parent | 60902b97fe4a96d370bc0c5e3690fa45da77d78d (diff) | |
download | nixlib-031baae714f2219f33fa713e4ed5a8926e620f79.tar nixlib-031baae714f2219f33fa713e4ed5a8926e620f79.tar.gz nixlib-031baae714f2219f33fa713e4ed5a8926e620f79.tar.bz2 nixlib-031baae714f2219f33fa713e4ed5a8926e620f79.tar.lz nixlib-031baae714f2219f33fa713e4ed5a8926e620f79.tar.xz nixlib-031baae714f2219f33fa713e4ed5a8926e620f79.tar.zst nixlib-031baae714f2219f33fa713e4ed5a8926e620f79.zip |
Merge branch 'staging' into v/modular
Conflicts (as in p/modular-stdenv): pkgs/stdenv/linux/default.nix
-rw-r--r-- | pkgs/applications/editors/ed/default.nix | 15 | ||||
-rw-r--r-- | pkgs/development/compilers/gcc/4.8/default.nix | 16 | ||||
-rw-r--r-- | pkgs/development/compilers/gcc/4.9/default.nix | 13 | ||||
-rw-r--r-- | pkgs/stdenv/linux/default.nix | 287 |
4 files changed, 143 insertions, 188 deletions
diff --git a/pkgs/applications/editors/ed/default.nix b/pkgs/applications/editors/ed/default.nix index d3e9a4c46794..b1b9616eaab3 100644 --- a/pkgs/applications/editors/ed/default.nix +++ b/pkgs/applications/editors/ed/default.nix @@ -1,11 +1,12 @@ -{ fetchurl, stdenv }: +{ fetchurl, stdenv, lzip }: stdenv.mkDerivation rec { - name = "ed-1.9"; + version = "1.10"; + name = "ed-${version}"; src = fetchurl { - url = "mirror://gnu/ed/${name}.tar.gz"; - sha256 = "122syihsx2hwzj75mkf5a9ssiky2xby748kp4cc00wzhmp7p5cym"; + url = "mirror://gnu/ed/${name}.tar.lz"; + sha256 = "16kycdm5fcvpdr41hxb2da8da6jzs9dqznsg5552z6rh28n0jh4m"; }; /* FIXME: Tests currently fail on Darwin: @@ -23,6 +24,8 @@ stdenv.mkDerivation rec { compileFlags = [ "CC=${stdenv.cross.config}-gcc" ]; }; + buildInputs = [ lzip ]; + meta = { description = "GNU ed, an implementation of the standard Unix editor"; @@ -38,9 +41,7 @@ stdenv.mkDerivation rec { ''; license = stdenv.lib.licenses.gpl3Plus; - homepage = http://www.gnu.org/software/ed/; - - maintainers = [ ]; + maintainers = with stdenv.lib.maintainers; [ fuuzetsu ]; }; } diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index fbd5f4332de1..91f60726666a 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -13,7 +13,7 @@ , perl ? null # optional, for texi2pod (then pod2man); required for Java , gmp, mpfr, mpc, gettext, which , libelf # optional, for link-time optimizations (LTO) -, ppl ? null, cloog ? null, isl ? null # optional, for the Graphite optimization framework. +, cloog ? null, isl ? null # optional, for the Graphite optimization framework. , zlib ? null, boehmgc ? null , zip ? null, unzip ? null, pkgconfig ? null, gtk ? null, libart_lgpl ? null , libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null @@ -283,7 +283,6 @@ stdenv.mkDerivation ({ ++ (optional javaAwtGtk pkgconfig); buildInputs = [ gmp mpfr mpc libelf ] - ++ (optional (ppl != null) ppl) ++ (optional (cloog != null) cloog) ++ (optional (isl != null) isl) ++ (optional (zlib != null) zlib) @@ -300,15 +299,7 @@ stdenv.mkDerivation ({ NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isSunOS "-lm -ldl"; - preConfigure = '' - configureFlagsArray=( - ${stdenv.lib.optionalString (ppl != null && ppl ? dontDisableStatic && ppl.dontDisableStatic) - "'--with-host-libstdcxx=-lstdc++ -lgcc_s'"} - ${stdenv.lib.optionalString (ppl != null && stdenv.isSunOS) - "\"--with-host-libstdcxx=-Wl,-rpath,\$prefix/lib/amd64 -lstdc++\" - \"--with-boot-ldflags=-L../prev-x86_64-pc-solaris2.11/libstdc++-v3/src/.libs\""} - ); - '' + stdenv.lib.optionalString (stdenv.isSunOS && stdenv.is64bit) '' + preConfigure = stdenv.lib.optionalString (stdenv.isSunOS && stdenv.is64bit) '' export NIX_LDFLAGS=`echo $NIX_LDFLAGS | sed -e s~$prefix/lib~$prefix/lib/amd64~g` export LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET" export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET" @@ -336,7 +327,6 @@ stdenv.mkDerivation ({ ${if enableMultilib then "--disable-libquadmath" else "--disable-multilib"} ${if enableShared then "" else "--disable-shared"} ${if enablePlugin then "--enable-plugin" else "--disable-plugin"} - ${if ppl != null then "--with-ppl=${ppl} --disable-ppl-version-check" else ""} ${optionalString (isl != null) "--with-isl=${isl}"} ${optionalString (cloog != null) "--with-cloog=${cloog} --disable-cloog-version-check --enable-cloog-backend=isl"} ${if langJava then @@ -419,7 +409,6 @@ stdenv.mkDerivation ({ configureFlags = '' ${if enableMultilib then "" else "--disable-multilib"} ${if enableShared then "" else "--disable-shared"} - ${if ppl != null then "--with-ppl=${ppl.crossDrv}" else ""} ${if cloog != null then "--with-cloog=${cloog.crossDrv} --enable-cloog-backend=isl" else ""} ${if langJava then "--with-ecj-jar=${javaEcj.crossDrv}" else ""} ${if javaAwtGtk then "--enable-java-awt=gtk" else ""} @@ -528,7 +517,6 @@ stdenv.mkDerivation ({ maintainers = with stdenv.lib.maintainers; [ ludo viric shlevy simons ]; - # Volunteers needed for the {Cyg,Dar}win ports of *PPL. # gnatboot is not available out of linux platforms, so we disable the darwin build # for the gnat (ada compiler). platforms = diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index 3254071f5ede..ae6bf077a2a2 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -11,7 +11,7 @@ , perl ? null # optional, for texi2pod (then pod2man); required for Java , gmp, mpfr, mpc, gettext, which , libelf # optional, for link-time optimizations (LTO) -, ppl ? null, cloog ? null, isl ? null # optional, for the Graphite optimization framework. +, cloog ? null, isl ? null # optional, for the Graphite optimization framework. , zlib ? null, boehmgc ? null , zip ? null, unzip ? null, pkgconfig ? null, gtk ? null, libart_lgpl ? null , libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null @@ -273,7 +273,6 @@ stdenv.mkDerivation ({ ++ (optional javaAwtGtk pkgconfig); buildInputs = [ gmp mpfr mpc libelf ] - ++ (optional (ppl != null) ppl) ++ (optional (cloog != null) cloog) ++ (optional (isl != null) isl) ++ (optional (zlib != null) zlib) @@ -291,13 +290,6 @@ stdenv.mkDerivation ({ NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isSunOS "-lm -ldl"; preConfigure = '' - configureFlagsArray=( - ${stdenv.lib.optionalString (ppl != null && ppl ? dontDisableStatic && ppl.dontDisableStatic) - "'--with-host-libstdcxx=-lstdc++ -lgcc_s'"} - ${stdenv.lib.optionalString (ppl != null && stdenv.isSunOS) - "\"--with-host-libstdcxx=-Wl,-rpath,\$prefix/lib/amd64 -lstdc++\" - \"--with-boot-ldflags=-L../prev-x86_64-pc-solaris2.11/libstdc++-v3/src/.libs\""} - ); ${stdenv.lib.optionalString (stdenv.isSunOS && stdenv.is64bit) '' export NIX_LDFLAGS=`echo $NIX_LDFLAGS | sed -e s~$prefix/lib~$prefix/lib/amd64~g` @@ -319,7 +311,6 @@ stdenv.mkDerivation ({ ${if enableMultilib then "--disable-libquadmath" else "--disable-multilib"} ${if enableShared then "" else "--disable-shared"} ${if enablePlugin then "--enable-plugin" else "--disable-plugin"} - ${if ppl != null then "--with-ppl=${ppl} --disable-ppl-version-check" else ""} ${optionalString (isl != null) "--with-isl=${isl}"} ${optionalString (cloog != null) "--with-cloog=${cloog} --disable-cloog-version-check --enable-cloog-backend=isl"} ${if langJava then @@ -400,7 +391,6 @@ stdenv.mkDerivation ({ configureFlags = '' ${if enableMultilib then "" else "--disable-multilib"} ${if enableShared then "" else "--disable-shared"} - ${if ppl != null then "--with-ppl=${ppl.crossDrv}" else ""} ${if cloog != null then "--with-cloog=${cloog.crossDrv} --enable-cloog-backend=isl" else ""} ${if langJava then "--with-ecj-jar=${javaEcj.crossDrv}" else ""} ${if javaAwtGtk then "--enable-java-awt=gtk" else ""} @@ -507,7 +497,6 @@ stdenv.mkDerivation ({ maintainers = with stdenv.lib.maintainers; [ ludo viric shlevy simons ]; - # Volunteers needed for the {Cyg,Dar}win ports of *PPL. # gnatboot is not available out of linux platforms, so we disable the darwin build # for the gnat (ada compiler). platforms = diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index a2a971589470..6b15808285b0 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -32,8 +32,8 @@ rec { # The bootstrap process proceeds in several steps. - # 1) Create a standard environment by downloading pre-built binaries - # of coreutils, GCC, etc. + # Create a standard environment by downloading pre-built binaries of + # coreutils, GCC, etc. # Download and unpack the bootstrap tools (coreutils, GCC, Glibc, ...). @@ -63,137 +63,136 @@ rec { }; - # This function builds the various standard environments used during - # the bootstrap. - stdenvBootFun = - { gcc, extraAttrs ? {}, overrides ? (pkgs: {}), extraBuildInputs ? [], fetchurl }: - - import ../generic { - inherit system config extraBuildInputs; - name = "stdenv-linux-boot"; - preHook = - '' - # Don't patch #!/interpreter because it leads to retained - # dependencies on the bootstrapTools in the final stdenv. - dontPatchShebangs=1 - ${commonPreHook} - ''; - shell = "${bootstrapTools}/bin/sh"; - initialPath = [ bootstrapTools ]; - fetchurlBoot = fetchurl; - inherit gcc; - # Having the proper 'platform' in all the stdenvs allows getting proper - # linuxHeaders for example. - extraAttrs = extraAttrs // { inherit platform; }; - overrides = pkgs: (overrides pkgs) // { - inherit fetchurl; - }; - }; + # A helper function to call gcc-wrapper. + wrapGCC = + { gcc, libc, binutils, coreutils, name }: - # Build a dummy stdenv with no GCC or working fetchurl. This is - # because we need a stdenv to build the GCC wrapper and fetchurl. - stdenvLinuxBoot0 = stdenvBootFun { - gcc = "/no-such-path"; - fetchurl = null; - }; + lib.makeOverridable (import ../../build-support/gcc-wrapper) { + nativeTools = false; + nativeLibc = false; + inherit gcc binutils coreutils libc name; + stdenv = stage0.stdenv; + }; - fetchurl = import ../../build-support/fetchurl { - stdenv = stdenvLinuxBoot0; - curl = bootstrapTools; - }; + # This function builds the various standard environments used during + # the bootstrap. In all stages, we build an stdenv and the package + # set that can be built with that stdenv. + stageFun = + {gcc, extraAttrs ? {}, overrides ? (pkgs: {}), extraPath ? []}: + + let + + thisStdenv = import ../generic { + inherit system config; + name = "stdenv-linux-boot"; + preHook = + '' + # Don't patch #!/interpreter because it leads to retained + # dependencies on the bootstrapTools in the final stdenv. + dontPatchShebangs=1 + ${commonPreHook} + ''; + shell = "${bootstrapTools}/bin/sh"; + initialPath = [bootstrapTools] ++ extraPath; + fetchurlBoot = import ../../build-support/fetchurl { + stdenv = stage0.stdenv; + curl = bootstrapTools; + }; + inherit gcc; + # Having the proper 'platform' in all the stdenvs allows getting proper + # linuxHeaders for example. + extraAttrs = extraAttrs // { inherit platform; }; + overrides = pkgs: (overrides pkgs) // { fetchurl = thisStdenv.fetchurlBoot; }; + }; + thisPkgs = allPackages { + inherit system platform; + bootStdenv = thisStdenv; + }; - # The Glibc include directory cannot have the same prefix as the GCC - # include directory, since GCC gets confused otherwise (it will - # search the Glibc headers before the GCC headers). So create a - # dummy Glibc. - bootstrapGlibc = stdenvLinuxBoot0.mkDerivation { - name = "bootstrap-glibc"; - buildCommand = '' - mkdir -p $out - ln -s ${bootstrapTools}/lib $out/lib - ln -s ${bootstrapTools}/include-glibc $out/include - ''; - }; + in { stdenv = thisStdenv; pkgs = thisPkgs; }; - # A helper function to call gcc-wrapper. - wrapGCC = - { gcc ? bootstrapTools, libc, binutils, coreutils, shell ? "", name ? "bootstrap-gcc-wrapper" }: + # Build a dummy stdenv with no GCC or working fetchurl. This is + # because we need a stdenv to build the GCC wrapper and fetchurl. + stage0 = stageFun { + gcc = "/no-such-path"; - lib.makeOverridable (import ../../build-support/gcc-wrapper) { - nativeTools = false; - nativeLibc = false; - inherit gcc binutils coreutils libc shell name; - stdenv = stdenvLinuxBoot0; + overrides = pkgs: { + # The Glibc include directory cannot have the same prefix as the + # GCC include directory, since GCC gets confused otherwise (it + # will search the Glibc headers before the GCC headers). So + # create a dummy Glibc here, which will be used in the stdenv of + # stage1. + glibc = stage0.stdenv.mkDerivation { + name = "bootstrap-glibc"; + buildCommand = '' + mkdir -p $out + ln -s ${bootstrapTools}/lib $out/lib + ln -s ${bootstrapTools}/include-glibc $out/include + ''; + }; }; + }; # Create the first "real" standard environment. This one consists # of bootstrap tools only, and a minimal Glibc to keep the GCC # configure script happy. - stdenvLinuxBoot1 = stdenvBootFun { + # + # For clarity, we only use the previous stage when specifying these + # stages. So stageN should only ever have references for stage{N-1}. + # + # If we ever need to use a package from more than one stage back, we + # simply re-export those packages in the middle stage(s) using the + # overrides attribute and the inherit syntax. + stage1 = stageFun { gcc = wrapGCC { - libc = bootstrapGlibc; + gcc = bootstrapTools; + libc = stage0.pkgs.glibc; binutils = bootstrapTools; coreutils = bootstrapTools; + name = "bootstrap-gcc-wrapper"; + }; + # Rebuild binutils to use from stage2 onwards. + overrides = pkgs: { + binutils = pkgs.binutils.override { gold = false; }; + inherit (stage0.pkgs) glibc; }; - inherit fetchurl; - }; - - - # 2) These are the packages that we can build with the first - # stdenv. We only need binutils, because recent Glibcs - # require recent Binutils, and those in bootstrap-tools may - # be too old. - stdenvLinuxBoot1Pkgs = allPackages { - inherit system platform; - bootStdenv = stdenvLinuxBoot1; }; - binutils1 = stdenvLinuxBoot1Pkgs.binutils.override { gold = false; }; - - # 3) 2nd stdenv that we will use to build only Glibc. - stdenvLinuxBoot2 = stdenvBootFun { + # 2nd stdenv that contains our own rebuilt binutils and is used for + # compiling our own Glibc. + stage2 = stageFun { gcc = wrapGCC { - libc = bootstrapGlibc; - binutils = binutils1; + gcc = bootstrapTools; + libc = stage1.pkgs.glibc; + binutils = stage1.pkgs.binutils; coreutils = bootstrapTools; + name = "bootstrap-gcc-wrapper"; }; overrides = pkgs: { - inherit (stdenvLinuxBoot1Pkgs) perl; + inherit (stage1.pkgs) perl binutils paxctl; + # This also contains the full, dynamically linked, final Glibc. }; - inherit fetchurl; - }; - - - # 4) These are the packages that we can build with the 2nd - # stdenv. - stdenvLinuxBoot2Pkgs = allPackages { - inherit system platform; - bootStdenv = stdenvLinuxBoot2; }; - # 5) Build Glibc with the bootstrap tools. The result is the full, - # dynamically linked, final Glibc. - stdenvLinuxGlibc = stdenvLinuxBoot2Pkgs.glibc; - - - # 6) Construct a third stdenv identical to the 2nd, except that this - # one uses the Glibc built in step 3. It still uses the recent - # binutils and the rest of the bootstrap tools, including GCC. - stdenvLinuxBoot3 = stdenvBootFun { + # Construct a third stdenv identical to the 2nd, except that this + # one uses the rebuilt Glibc from stage2. It still uses the recent + # binutils and rest of the bootstrap tools, including GCC. + stage3 = stageFun { gcc = wrapGCC { - binutils = binutils1; + gcc = bootstrapTools; + libc = stage2.pkgs.glibc; + binutils = stage2.pkgs.binutils; coreutils = bootstrapTools; - libc = stdenvLinuxGlibc; + name = "bootstrap-gcc-wrapper"; }; overrides = pkgs: { - glibc = stdenvLinuxGlibc; - inherit (stdenvLinuxBoot1Pkgs) perl; + inherit (stage2.pkgs) binutils glibc perl; # Link GCC statically against GMP etc. This makes sense because # these builds of the libraries are only used by GCC, so it # reduces the size of the stdenv closure. @@ -205,54 +204,36 @@ rec { ppl = pkgs.ppl.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; }; }; extraAttrs = { - glibc = stdenvLinuxGlibc; # Required by gcc47 build + glibc = stage2.pkgs.glibc; # Required by gcc47 build }; - extraBuildInputs = [ stdenvLinuxBoot2Pkgs.patchelf stdenvLinuxBoot1Pkgs.paxctl ]; - inherit fetchurl; - }; - - - # 7) The packages that can be built using the third stdenv. - stdenvLinuxBoot3Pkgs = allPackages { - inherit system platform; - bootStdenv = stdenvLinuxBoot3; + extraPath = [ stage2.pkgs.patchelf stage2.pkgs.paxctl ]; }; - # 8) Construct a fourth stdenv identical to the second, except that - # this one uses the new GCC from step 7. The other tools - # (e.g. coreutils) are still from the bootstrap tools. - stdenvLinuxBoot4 = stdenvBootFun { - gcc = wrapGCC rec { - binutils = binutils1; + # Construct a fourth stdenv that uses the new GCC. But coreutils is + # still from the bootstrap tools. + stage4 = stageFun { + gcc = wrapGCC { + gcc = stage3.pkgs.gcc.gcc; + libc = stage3.pkgs.glibc; + binutils = stage3.pkgs.binutils; coreutils = bootstrapTools; - libc = stdenvLinuxGlibc; - gcc = stdenvLinuxBoot3Pkgs.gcc.gcc; name = ""; }; - extraBuildInputs = [ stdenvLinuxBoot2Pkgs.patchelf stdenvLinuxBoot3Pkgs.xz.bin ]; + extraPath = [ stage2.pkgs.patchelf stage3.pkgs.xz ]; overrides = pkgs: { - inherit (stdenvLinuxBoot1Pkgs) perl; - inherit (stdenvLinuxBoot3Pkgs) gettext gnum4 gmp; + inherit (stage3.pkgs) gettext gnum4 gmp perl glibc; }; - inherit fetchurl; - }; - - - # 9) The packages that can be built using the fourth stdenv. - stdenvLinuxBoot4Pkgs = allPackages { - inherit system platform; - bootStdenv = stdenvLinuxBoot4; }; - # 10) Construct the final stdenv. It uses the Glibc and GCC, and - # adds in a new binutils that doesn't depend on bootstrap-tools, - # as well as dynamically linked versions of all other tools. + # Construct the final stdenv. It uses the Glibc and GCC, and adds + # in a new binutils that doesn't depend on bootstrap-tools, as well + # as dynamically linked versions of all other tools. # - # When updating stdenvLinux, make sure that the result has no - # dependency (`nix-store -qR') on bootstrapTools or the - # first binutils built. + # When updating stdenvLinux, make sure that the result has no + # dependency (`nix-store -qR') on bootstrapTools or the first + # binutils built. stdenvLinux = import ../generic rec { inherit system config; @@ -265,37 +246,33 @@ rec { ''; initialPath = - ((import ../common-path.nix) {pkgs = stdenvLinuxBoot4Pkgs;}); + ((import ../common-path.nix) {pkgs = stage4.pkgs;}); - extraBuildInputs = - [ stdenvLinuxBoot4Pkgs.patchelf stdenvLinuxBoot4Pkgs.paxctl ]; + extraBuildInputs = [ stage4.pkgs.patchelf stage4.pkgs.paxctl ]; - gcc = wrapGCC rec { - inherit (stdenvLinuxBoot4Pkgs) binutils coreutils; - libc = stdenvLinuxGlibc; - gcc = stdenvLinuxBoot4.gcc.gcc; - shell = stdenvLinuxBoot4Pkgs.bash + "/bin/bash"; - name = ""; - }; + shell = stage4.pkgs.bash + "/bin/bash"; - shell = stdenvLinuxBoot4Pkgs.bash + "/bin/bash"; + gcc = (wrapGCC rec { + gcc = stage4.stdenv.gcc.gcc; + libc = stage4.pkgs.glibc; + inherit (stage4.pkgs) binutils coreutils; + name = ""; + }).override { inherit shell; }; - fetchurlBoot = fetchurl; + inherit (stage4.stdenv) fetchurlBoot; extraAttrs = { - glibc = stdenvLinuxGlibc; + inherit (stage4.pkgs) glibc; inherit platform bootstrapTools; - shellPackage = stdenvLinuxBoot4Pkgs.bash; + shellPackage = stage4.pkgs.bash; }; overrides = pkgs: { inherit gcc; - inherit (stdenvLinuxBoot3Pkgs) glibc; - inherit (stdenvLinuxBoot4Pkgs) binutils; - inherit (stdenvLinuxBoot4Pkgs) - gzip bzip2 xz bash coreutils diffutils findutils gawk - gnumake gnused gnutar gnugrep gnupatch patchelf - attr acl pcre paxctl; + inherit (stage4.pkgs) + gzip bzip2 xz bash binutils coreutils diffutils findutils gawk + glibc gnumake gnused gnutar gnugrep gnupatch patchelf + attr acl paxctl; }; }; |