diff options
author | Eelco Dolstra | 2004-02-19 16:33:10 +0000 |
---|---|---|
committer | Eelco Dolstra | 2004-02-19 16:33:10 +0000 |
commit | 16c004757571692a0f517df6e260ad95bc5ca4b3 (patch) | |
tree | 5e5df6ae442fb0d04c4f330afc522a7f06702a0b /pkgs/system/all-packages.nix | |
parent | 08dbd48e8dbd16002cd4ee836ebf7e0c52ed2117 (diff) |
* Use a 2-stage bootstrap for creating the standard build environment
(stdenv) on Linux. The previous 1-stage bootstrap was insufficient, because the tools in stdenv where built by native tools. For instance, the Nix bash had a reference to /lib/libncurses. This doesn't happen with a 2-stage bootstrap, since the bash built in stage 2 will be built with the gcc built in stage 1, which doesn't search in the "standard" locations. Motto: "Disparaging the boot is a bootable offense." svn path=/nixpkgs/trunk/; revision=809
Diffstat (limited to 'pkgs/system/all-packages.nix')
-rw-r--r-- | pkgs/system/all-packages.nix | 53 |
1 files changed, 5 insertions, 48 deletions
diff --git a/pkgs/system/all-packages.nix b/pkgs/system/all-packages.nix index 70feb66a4361..f1a0c917f718 100644 --- a/pkgs/system/all-packages.nix +++ b/pkgs/system/all-packages.nix @@ -1,60 +1,17 @@ # This file evaluates to a function that, when supplied with a system # identifier, returns the set of all packages provided by the Nix # Package Collection. It does this by supplying -# `all-packages-generic.nix' with a standard build environment. -# -# On Linux systems, the standard build environment consists of -# Nix-built instances glibc and the `standard' Unix tools, i.e., the -# Posix utilities, the GNU C compiler, and so on. On other systems, -# we use the native C library. +# `all-packages-generic.nix' with one of the standard build +# environments defined in `stdenvs.nix'. {system}: let { allPackages = import ./all-packages-generic.nix; - - # The native (i.e., impure) build environment. This one uses the - # tools installed on the system outside of the Nix environment, - # i.e., the stuff in /bin, /usr/bin, etc. This environment should - # be used with care, since many Nix packages will not build properly - # with it (e.g., because they require GNU Make). - stdenvNative = (import ../stdenv/native) {system = system;}; - stdenvNativePkgs = allPackages {system = system; stdenv = stdenvNative;}; - - - # The Nix build environment. - stdenvNix = (import ../stdenv/nix) { - bootStdenv = stdenvNative; - pkgs = stdenvNativePkgs; - }; - stdenvNixPkgs = allPackages {system = system; stdenv = stdenvNix;}; - - - # The Linux build environment consists of the Nix build environment - # built against the GNU C Library. - stdenvLinuxGlibc = stdenvNativePkgs.glibc; - stdenvLinuxBoot = (import ../stdenv/nix-linux/boot.nix) { - system = system; - glibc = stdenvLinuxGlibc; - }; - stdenvLinuxBootPkgs = allPackages {system = system; stdenv = stdenvLinuxBoot;}; - - stdenvLinux = (import ../stdenv/nix-linux) { - bootStdenv = stdenvLinuxBoot; - pkgs = stdenvLinuxBootPkgs; - glibc = stdenvLinuxGlibc; - }; - stdenvLinuxPkgs = - allPackages {system = system; stdenv = stdenvLinux;} // - {inherit (stdenvLinuxBootPkgs) - gzip bzip2 /* bash */ binutils coreutils diffutils findutils gawk gcc - gnumake gnused gnutar gnugrep wget; - } // - {glibc = stdenvLinuxGlibc;}; - + stdenvs = import ./stdenvs.nix {inherit system allPackages;}; # Select the right instantiation. body = if system == "i686-linux" - then stdenvLinuxPkgs - else stdenvNixPkgs; + then stdenvs.stdenvLinuxPkgs + else stdenvs.stdenvNixPkgs; } |