summary refs log tree commit diff
path: root/pkgs/system/all-packages.nix
diff options
context:
space:
mode:
authorEelco Dolstra2004-02-19 16:33:10 +0000
committerEelco Dolstra2004-02-19 16:33:10 +0000
commit16c004757571692a0f517df6e260ad95bc5ca4b3 (patch)
tree5e5df6ae442fb0d04c4f330afc522a7f06702a0b /pkgs/system/all-packages.nix
parent08dbd48e8dbd16002cd4ee836ebf7e0c52ed2117 (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.nix53
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;
 }