forked from mirrors/nixpkgs
Merge branch 'staging' into v/modular
Conflicts (as in p/modular-stdenv): pkgs/stdenv/linux/default.nix
This commit is contained in:
commit
031baae714
|
@ -1,11 +1,12 @@
|
||||||
{ fetchurl, stdenv }:
|
{ fetchurl, stdenv, lzip }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "ed-1.9";
|
version = "1.10";
|
||||||
|
name = "ed-${version}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnu/ed/${name}.tar.gz";
|
url = "mirror://gnu/ed/${name}.tar.lz";
|
||||||
sha256 = "122syihsx2hwzj75mkf5a9ssiky2xby748kp4cc00wzhmp7p5cym";
|
sha256 = "16kycdm5fcvpdr41hxb2da8da6jzs9dqznsg5552z6rh28n0jh4m";
|
||||||
};
|
};
|
||||||
|
|
||||||
/* FIXME: Tests currently fail on Darwin:
|
/* FIXME: Tests currently fail on Darwin:
|
||||||
|
@ -23,6 +24,8 @@ stdenv.mkDerivation rec {
|
||||||
compileFlags = [ "CC=${stdenv.cross.config}-gcc" ];
|
compileFlags = [ "CC=${stdenv.cross.config}-gcc" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
buildInputs = [ lzip ];
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "GNU ed, an implementation of the standard Unix editor";
|
description = "GNU ed, an implementation of the standard Unix editor";
|
||||||
|
|
||||||
|
@ -38,9 +41,7 @@ stdenv.mkDerivation rec {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
license = stdenv.lib.licenses.gpl3Plus;
|
license = stdenv.lib.licenses.gpl3Plus;
|
||||||
|
|
||||||
homepage = http://www.gnu.org/software/ed/;
|
homepage = http://www.gnu.org/software/ed/;
|
||||||
|
maintainers = with stdenv.lib.maintainers; [ fuuzetsu ];
|
||||||
maintainers = [ ];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
, perl ? null # optional, for texi2pod (then pod2man); required for Java
|
, perl ? null # optional, for texi2pod (then pod2man); required for Java
|
||||||
, gmp, mpfr, mpc, gettext, which
|
, gmp, mpfr, mpc, gettext, which
|
||||||
, libelf # optional, for link-time optimizations (LTO)
|
, 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
|
, zlib ? null, boehmgc ? null
|
||||||
, zip ? null, unzip ? null, pkgconfig ? null, gtk ? null, libart_lgpl ? null
|
, zip ? null, unzip ? null, pkgconfig ? null, gtk ? null, libart_lgpl ? null
|
||||||
, libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null
|
, libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null
|
||||||
|
@ -283,7 +283,6 @@ stdenv.mkDerivation ({
|
||||||
++ (optional javaAwtGtk pkgconfig);
|
++ (optional javaAwtGtk pkgconfig);
|
||||||
|
|
||||||
buildInputs = [ gmp mpfr mpc libelf ]
|
buildInputs = [ gmp mpfr mpc libelf ]
|
||||||
++ (optional (ppl != null) ppl)
|
|
||||||
++ (optional (cloog != null) cloog)
|
++ (optional (cloog != null) cloog)
|
||||||
++ (optional (isl != null) isl)
|
++ (optional (isl != null) isl)
|
||||||
++ (optional (zlib != null) zlib)
|
++ (optional (zlib != null) zlib)
|
||||||
|
@ -300,15 +299,7 @@ stdenv.mkDerivation ({
|
||||||
|
|
||||||
NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isSunOS "-lm -ldl";
|
NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isSunOS "-lm -ldl";
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = stdenv.lib.optionalString (stdenv.isSunOS && stdenv.is64bit) ''
|
||||||
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`
|
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 LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET"
|
||||||
export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_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 enableMultilib then "--disable-libquadmath" else "--disable-multilib"}
|
||||||
${if enableShared then "" else "--disable-shared"}
|
${if enableShared then "" else "--disable-shared"}
|
||||||
${if enablePlugin then "--enable-plugin" else "--disable-plugin"}
|
${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 (isl != null) "--with-isl=${isl}"}
|
||||||
${optionalString (cloog != null) "--with-cloog=${cloog} --disable-cloog-version-check --enable-cloog-backend=isl"}
|
${optionalString (cloog != null) "--with-cloog=${cloog} --disable-cloog-version-check --enable-cloog-backend=isl"}
|
||||||
${if langJava then
|
${if langJava then
|
||||||
|
@ -419,7 +409,6 @@ stdenv.mkDerivation ({
|
||||||
configureFlags = ''
|
configureFlags = ''
|
||||||
${if enableMultilib then "" else "--disable-multilib"}
|
${if enableMultilib then "" else "--disable-multilib"}
|
||||||
${if enableShared then "" else "--disable-shared"}
|
${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 cloog != null then "--with-cloog=${cloog.crossDrv} --enable-cloog-backend=isl" else ""}
|
||||||
${if langJava then "--with-ecj-jar=${javaEcj.crossDrv}" else ""}
|
${if langJava then "--with-ecj-jar=${javaEcj.crossDrv}" else ""}
|
||||||
${if javaAwtGtk then "--enable-java-awt=gtk" else ""}
|
${if javaAwtGtk then "--enable-java-awt=gtk" else ""}
|
||||||
|
@ -528,7 +517,6 @@ stdenv.mkDerivation ({
|
||||||
|
|
||||||
maintainers = with stdenv.lib.maintainers; [ ludo viric shlevy simons ];
|
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
|
# gnatboot is not available out of linux platforms, so we disable the darwin build
|
||||||
# for the gnat (ada compiler).
|
# for the gnat (ada compiler).
|
||||||
platforms =
|
platforms =
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
, perl ? null # optional, for texi2pod (then pod2man); required for Java
|
, perl ? null # optional, for texi2pod (then pod2man); required for Java
|
||||||
, gmp, mpfr, mpc, gettext, which
|
, gmp, mpfr, mpc, gettext, which
|
||||||
, libelf # optional, for link-time optimizations (LTO)
|
, 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
|
, zlib ? null, boehmgc ? null
|
||||||
, zip ? null, unzip ? null, pkgconfig ? null, gtk ? null, libart_lgpl ? null
|
, zip ? null, unzip ? null, pkgconfig ? null, gtk ? null, libart_lgpl ? null
|
||||||
, libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null
|
, libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null
|
||||||
|
@ -273,7 +273,6 @@ stdenv.mkDerivation ({
|
||||||
++ (optional javaAwtGtk pkgconfig);
|
++ (optional javaAwtGtk pkgconfig);
|
||||||
|
|
||||||
buildInputs = [ gmp mpfr mpc libelf ]
|
buildInputs = [ gmp mpfr mpc libelf ]
|
||||||
++ (optional (ppl != null) ppl)
|
|
||||||
++ (optional (cloog != null) cloog)
|
++ (optional (cloog != null) cloog)
|
||||||
++ (optional (isl != null) isl)
|
++ (optional (isl != null) isl)
|
||||||
++ (optional (zlib != null) zlib)
|
++ (optional (zlib != null) zlib)
|
||||||
|
@ -291,13 +290,6 @@ stdenv.mkDerivation ({
|
||||||
NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isSunOS "-lm -ldl";
|
NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isSunOS "-lm -ldl";
|
||||||
|
|
||||||
preConfigure = ''
|
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)
|
${stdenv.lib.optionalString (stdenv.isSunOS && stdenv.is64bit)
|
||||||
''
|
''
|
||||||
export NIX_LDFLAGS=`echo $NIX_LDFLAGS | sed -e s~$prefix/lib~$prefix/lib/amd64~g`
|
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 enableMultilib then "--disable-libquadmath" else "--disable-multilib"}
|
||||||
${if enableShared then "" else "--disable-shared"}
|
${if enableShared then "" else "--disable-shared"}
|
||||||
${if enablePlugin then "--enable-plugin" else "--disable-plugin"}
|
${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 (isl != null) "--with-isl=${isl}"}
|
||||||
${optionalString (cloog != null) "--with-cloog=${cloog} --disable-cloog-version-check --enable-cloog-backend=isl"}
|
${optionalString (cloog != null) "--with-cloog=${cloog} --disable-cloog-version-check --enable-cloog-backend=isl"}
|
||||||
${if langJava then
|
${if langJava then
|
||||||
|
@ -400,7 +391,6 @@ stdenv.mkDerivation ({
|
||||||
configureFlags = ''
|
configureFlags = ''
|
||||||
${if enableMultilib then "" else "--disable-multilib"}
|
${if enableMultilib then "" else "--disable-multilib"}
|
||||||
${if enableShared then "" else "--disable-shared"}
|
${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 cloog != null then "--with-cloog=${cloog.crossDrv} --enable-cloog-backend=isl" else ""}
|
||||||
${if langJava then "--with-ecj-jar=${javaEcj.crossDrv}" else ""}
|
${if langJava then "--with-ecj-jar=${javaEcj.crossDrv}" else ""}
|
||||||
${if javaAwtGtk then "--enable-java-awt=gtk" else ""}
|
${if javaAwtGtk then "--enable-java-awt=gtk" else ""}
|
||||||
|
@ -507,7 +497,6 @@ stdenv.mkDerivation ({
|
||||||
|
|
||||||
maintainers = with stdenv.lib.maintainers; [ ludo viric shlevy simons ];
|
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
|
# gnatboot is not available out of linux platforms, so we disable the darwin build
|
||||||
# for the gnat (ada compiler).
|
# for the gnat (ada compiler).
|
||||||
platforms =
|
platforms =
|
||||||
|
|
|
@ -32,8 +32,8 @@ rec {
|
||||||
# The bootstrap process proceeds in several steps.
|
# The bootstrap process proceeds in several steps.
|
||||||
|
|
||||||
|
|
||||||
# 1) Create a standard environment by downloading pre-built binaries
|
# Create a standard environment by downloading pre-built binaries of
|
||||||
# of coreutils, GCC, etc.
|
# coreutils, GCC, etc.
|
||||||
|
|
||||||
|
|
||||||
# Download and unpack the bootstrap tools (coreutils, GCC, Glibc, ...).
|
# 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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# 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;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
fetchurl = import ../../build-support/fetchurl {
|
|
||||||
stdenv = stdenvLinuxBoot0;
|
|
||||||
curl = bootstrapTools;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
# 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
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
# A helper function to call gcc-wrapper.
|
# A helper function to call gcc-wrapper.
|
||||||
wrapGCC =
|
wrapGCC =
|
||||||
{ gcc ? bootstrapTools, libc, binutils, coreutils, shell ? "", name ? "bootstrap-gcc-wrapper" }:
|
{ gcc, libc, binutils, coreutils, name }:
|
||||||
|
|
||||||
lib.makeOverridable (import ../../build-support/gcc-wrapper) {
|
lib.makeOverridable (import ../../build-support/gcc-wrapper) {
|
||||||
nativeTools = false;
|
nativeTools = false;
|
||||||
nativeLibc = false;
|
nativeLibc = false;
|
||||||
inherit gcc binutils coreutils libc shell name;
|
inherit gcc binutils coreutils libc name;
|
||||||
stdenv = stdenvLinuxBoot0;
|
stdenv = stage0.stdenv;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
# 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;
|
||||||
|
};
|
||||||
|
|
||||||
|
in { stdenv = thisStdenv; pkgs = thisPkgs; };
|
||||||
|
|
||||||
|
|
||||||
|
# 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";
|
||||||
|
|
||||||
|
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
|
# Create the first "real" standard environment. This one consists
|
||||||
# of bootstrap tools only, and a minimal Glibc to keep the GCC
|
# of bootstrap tools only, and a minimal Glibc to keep the GCC
|
||||||
# configure script happy.
|
# 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 {
|
gcc = wrapGCC {
|
||||||
libc = bootstrapGlibc;
|
gcc = bootstrapTools;
|
||||||
|
libc = stage0.pkgs.glibc;
|
||||||
binutils = bootstrapTools;
|
binutils = bootstrapTools;
|
||||||
coreutils = 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
|
# 2nd stdenv that contains our own rebuilt binutils and is used for
|
||||||
# stdenv. We only need binutils, because recent Glibcs
|
# compiling our own Glibc.
|
||||||
# require recent Binutils, and those in bootstrap-tools may
|
stage2 = stageFun {
|
||||||
# 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 {
|
|
||||||
gcc = wrapGCC {
|
gcc = wrapGCC {
|
||||||
libc = bootstrapGlibc;
|
gcc = bootstrapTools;
|
||||||
binutils = binutils1;
|
libc = stage1.pkgs.glibc;
|
||||||
|
binutils = stage1.pkgs.binutils;
|
||||||
coreutils = bootstrapTools;
|
coreutils = bootstrapTools;
|
||||||
|
name = "bootstrap-gcc-wrapper";
|
||||||
};
|
};
|
||||||
overrides = pkgs: {
|
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
|
# Construct a third stdenv identical to the 2nd, except that this
|
||||||
# stdenv.
|
# one uses the rebuilt Glibc from stage2. It still uses the recent
|
||||||
stdenvLinuxBoot2Pkgs = allPackages {
|
# binutils and rest of the bootstrap tools, including GCC.
|
||||||
inherit system platform;
|
stage3 = stageFun {
|
||||||
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 {
|
|
||||||
gcc = wrapGCC {
|
gcc = wrapGCC {
|
||||||
binutils = binutils1;
|
gcc = bootstrapTools;
|
||||||
|
libc = stage2.pkgs.glibc;
|
||||||
|
binutils = stage2.pkgs.binutils;
|
||||||
coreutils = bootstrapTools;
|
coreutils = bootstrapTools;
|
||||||
libc = stdenvLinuxGlibc;
|
name = "bootstrap-gcc-wrapper";
|
||||||
};
|
};
|
||||||
overrides = pkgs: {
|
overrides = pkgs: {
|
||||||
glibc = stdenvLinuxGlibc;
|
inherit (stage2.pkgs) binutils glibc perl;
|
||||||
inherit (stdenvLinuxBoot1Pkgs) perl;
|
|
||||||
# Link GCC statically against GMP etc. This makes sense because
|
# Link GCC statically against GMP etc. This makes sense because
|
||||||
# these builds of the libraries are only used by GCC, so it
|
# these builds of the libraries are only used by GCC, so it
|
||||||
# reduces the size of the stdenv closure.
|
# reduces the size of the stdenv closure.
|
||||||
|
@ -205,54 +204,36 @@ rec {
|
||||||
ppl = pkgs.ppl.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; };
|
ppl = pkgs.ppl.override { stdenv = pkgs.makeStaticLibraries pkgs.stdenv; };
|
||||||
};
|
};
|
||||||
extraAttrs = {
|
extraAttrs = {
|
||||||
glibc = stdenvLinuxGlibc; # Required by gcc47 build
|
glibc = stage2.pkgs.glibc; # Required by gcc47 build
|
||||||
};
|
};
|
||||||
extraBuildInputs = [ stdenvLinuxBoot2Pkgs.patchelf stdenvLinuxBoot1Pkgs.paxctl ];
|
extraPath = [ stage2.pkgs.patchelf stage2.pkgs.paxctl ];
|
||||||
inherit fetchurl;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
# 7) The packages that can be built using the third stdenv.
|
# Construct a fourth stdenv that uses the new GCC. But coreutils is
|
||||||
stdenvLinuxBoot3Pkgs = allPackages {
|
# still from the bootstrap tools.
|
||||||
inherit system platform;
|
stage4 = stageFun {
|
||||||
bootStdenv = stdenvLinuxBoot3;
|
gcc = wrapGCC {
|
||||||
};
|
gcc = stage3.pkgs.gcc.gcc;
|
||||||
|
libc = stage3.pkgs.glibc;
|
||||||
|
binutils = stage3.pkgs.binutils;
|
||||||
# 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;
|
|
||||||
coreutils = bootstrapTools;
|
coreutils = bootstrapTools;
|
||||||
libc = stdenvLinuxGlibc;
|
|
||||||
gcc = stdenvLinuxBoot3Pkgs.gcc.gcc;
|
|
||||||
name = "";
|
name = "";
|
||||||
};
|
};
|
||||||
extraBuildInputs = [ stdenvLinuxBoot2Pkgs.patchelf stdenvLinuxBoot3Pkgs.xz.bin ];
|
extraPath = [ stage2.pkgs.patchelf stage3.pkgs.xz ];
|
||||||
overrides = pkgs: {
|
overrides = pkgs: {
|
||||||
inherit (stdenvLinuxBoot1Pkgs) perl;
|
inherit (stage3.pkgs) gettext gnum4 gmp perl glibc;
|
||||||
inherit (stdenvLinuxBoot3Pkgs) gettext gnum4 gmp;
|
|
||||||
};
|
};
|
||||||
inherit fetchurl;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
# 9) The packages that can be built using the fourth stdenv.
|
# Construct the final stdenv. It uses the Glibc and GCC, and adds
|
||||||
stdenvLinuxBoot4Pkgs = allPackages {
|
# in a new binutils that doesn't depend on bootstrap-tools, as well
|
||||||
inherit system platform;
|
# as dynamically linked versions of all other tools.
|
||||||
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.
|
|
||||||
#
|
#
|
||||||
# When updating stdenvLinux, make sure that the result has no
|
# When updating stdenvLinux, make sure that the result has no
|
||||||
# dependency (`nix-store -qR') on bootstrapTools or the
|
# dependency (`nix-store -qR') on bootstrapTools or the first
|
||||||
# first binutils built.
|
# binutils built.
|
||||||
stdenvLinux = import ../generic rec {
|
stdenvLinux = import ../generic rec {
|
||||||
inherit system config;
|
inherit system config;
|
||||||
|
|
||||||
|
@ -265,37 +246,33 @@ rec {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
initialPath =
|
initialPath =
|
||||||
((import ../common-path.nix) {pkgs = stdenvLinuxBoot4Pkgs;});
|
((import ../common-path.nix) {pkgs = stage4.pkgs;});
|
||||||
|
|
||||||
extraBuildInputs =
|
extraBuildInputs = [ stage4.pkgs.patchelf stage4.pkgs.paxctl ];
|
||||||
[ stdenvLinuxBoot4Pkgs.patchelf stdenvLinuxBoot4Pkgs.paxctl ];
|
|
||||||
|
|
||||||
gcc = wrapGCC rec {
|
shell = stage4.pkgs.bash + "/bin/bash";
|
||||||
inherit (stdenvLinuxBoot4Pkgs) binutils coreutils;
|
|
||||||
libc = stdenvLinuxGlibc;
|
gcc = (wrapGCC rec {
|
||||||
gcc = stdenvLinuxBoot4.gcc.gcc;
|
gcc = stage4.stdenv.gcc.gcc;
|
||||||
shell = stdenvLinuxBoot4Pkgs.bash + "/bin/bash";
|
libc = stage4.pkgs.glibc;
|
||||||
|
inherit (stage4.pkgs) binutils coreutils;
|
||||||
name = "";
|
name = "";
|
||||||
};
|
}).override { inherit shell; };
|
||||||
|
|
||||||
shell = stdenvLinuxBoot4Pkgs.bash + "/bin/bash";
|
inherit (stage4.stdenv) fetchurlBoot;
|
||||||
|
|
||||||
fetchurlBoot = fetchurl;
|
|
||||||
|
|
||||||
extraAttrs = {
|
extraAttrs = {
|
||||||
glibc = stdenvLinuxGlibc;
|
inherit (stage4.pkgs) glibc;
|
||||||
inherit platform bootstrapTools;
|
inherit platform bootstrapTools;
|
||||||
shellPackage = stdenvLinuxBoot4Pkgs.bash;
|
shellPackage = stage4.pkgs.bash;
|
||||||
};
|
};
|
||||||
|
|
||||||
overrides = pkgs: {
|
overrides = pkgs: {
|
||||||
inherit gcc;
|
inherit gcc;
|
||||||
inherit (stdenvLinuxBoot3Pkgs) glibc;
|
inherit (stage4.pkgs)
|
||||||
inherit (stdenvLinuxBoot4Pkgs) binutils;
|
gzip bzip2 xz bash binutils coreutils diffutils findutils gawk
|
||||||
inherit (stdenvLinuxBoot4Pkgs)
|
glibc gnumake gnused gnutar gnugrep gnupatch patchelf
|
||||||
gzip bzip2 xz bash coreutils diffutils findutils gawk
|
attr acl paxctl;
|
||||||
gnumake gnused gnutar gnugrep gnupatch patchelf
|
|
||||||
attr acl pcre paxctl;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue