summary refs log tree commit diff
path: root/pkgs/stdenv
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2010-08-06 10:34:34 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2010-08-06 10:34:34 +0000
commita1e834e85ade13317ed51853b600d5df5a870d50 (patch)
treebff6ce9d58075b6281c53487cd40644854c61233 /pkgs/stdenv
parentd8ba69a16eebb64328287ac997e7f6d3019476a5 (diff)
downloadnixpkgs-a1e834e85ade13317ed51853b600d5df5a870d50.tar
nixpkgs-a1e834e85ade13317ed51853b600d5df5a870d50.tar.gz
nixpkgs-a1e834e85ade13317ed51853b600d5df5a870d50.tar.bz2
nixpkgs-a1e834e85ade13317ed51853b600d5df5a870d50.tar.lz
nixpkgs-a1e834e85ade13317ed51853b600d5df5a870d50.tar.xz
nixpkgs-a1e834e85ade13317ed51853b600d5df5a870d50.tar.zst
nixpkgs-a1e834e85ade13317ed51853b600d5df5a870d50.zip
* Get rid of the ugly `useFromStdenv' hack in all-packages.nix.
  Instead, use the generic package override mechanism to use packages
  from earlier bootstrap phases.
* Don't rely on the existence of attributes such as
  `stdenv.coreutils'.

svn path=/nixpkgs/trunk/; revision=22991
Diffstat (limited to 'pkgs/stdenv')
-rw-r--r--pkgs/stdenv/generic/default.nix3
-rw-r--r--pkgs/stdenv/linux/default.nix23
-rw-r--r--pkgs/stdenv/mingw/default.nix2
3 files changed, 18 insertions, 10 deletions
diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix
index 4b988ef524a..585bb2f7fe1 100644
--- a/pkgs/stdenv/generic/default.nix
+++ b/pkgs/stdenv/generic/default.nix
@@ -1,6 +1,6 @@
 { system, name, preHook ? null, postHook ? null, initialPath, gcc, shell
 , param1 ? "", param2 ? "", param3 ? "", param4 ? "", param5 ? ""
-, extraAttrs ? {}
+, extraAttrs ? {}, overrides ? {}
 
 , # The `fetchurl' to use for downloading curl and its dependencies
   # (see all-packages.nix).
@@ -118,6 +118,7 @@ let
 
         inherit fetchurlBoot;
 
+        inherit overrides;
       }
 
       # Propagate any extra attributes.  For instance, we use this to
diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix
index dd5647bec45..71aee5912e7 100644
--- a/pkgs/stdenv/linux/default.nix
+++ b/pkgs/stdenv/linux/default.nix
@@ -73,7 +73,7 @@ rec {
   # This function builds the various standard environments used during
   # the bootstrap.
   stdenvBootFun =
-    {gcc, extraAttrs ? {}, extraPath ? [], fetchurl}:
+    {gcc, extraAttrs ? {}, overrides ? {}, extraPath ? [], fetchurl}:
 
     import ../generic {
       inherit system;
@@ -89,8 +89,10 @@ rec {
       shell = "${bootstrapTools}/bin/sh";
       initialPath = [bootstrapTools] ++ extraPath;
       fetchurlBoot = fetchurl;
-      inherit gcc;
-      extraAttrs = extraAttrs // {inherit fetchurl;};
+      inherit gcc extraAttrs;
+      overrides = overrides // {
+        inherit fetchurl;
+      };
     };
 
   # Build a dummy stdenv with no GCC or working fetchurl.  This is
@@ -168,7 +170,7 @@ rec {
       coreutils = bootstrapTools;
       libc = stdenvLinuxGlibc;
     };
-    extraAttrs = {
+    overrides = {
       glibc = stdenvLinuxGlibc;
       inherit (stdenvLinuxBoot1Pkgs) perl;
     };
@@ -195,7 +197,7 @@ rec {
       gcc = stdenvLinuxBoot2Pkgs.gcc.gcc;
       name = "";
     };
-    extraAttrs = {
+    overrides = {
       inherit (stdenvLinuxBoot1Pkgs) perl;
     };
     inherit fetchurl;
@@ -215,7 +217,7 @@ rec {
   #
   #    When updating stdenvLinux, make sure that the result has no
   #    dependency (`nix-store -qR') on bootstrapTools.
-  stdenvLinux = import ../generic {
+  stdenvLinux = import ../generic rec {
     name = "stdenv-linux";
     
     inherit system;
@@ -240,10 +242,15 @@ rec {
     fetchurlBoot = fetchurl;
     
     extraAttrs = {
-      inherit (stdenvLinuxBoot2Pkgs) binutils /* gcc */ glibc;
+      inherit (stdenvLinuxBoot2Pkgs) glibc;
+    };
+
+    overrides = {
+      inherit gcc;
+      inherit (stdenvLinuxBoot2Pkgs) binutils glibc;
       inherit (stdenvLinuxBoot3Pkgs)
         gzip bzip2 bash coreutils diffutils findutils gawk
-        gnumake gnused gnutar gnugrep patch patchelf
+        gnumake gnused gnutar gnugrep gnupatch patchelf
         attr acl;
     };
   };
diff --git a/pkgs/stdenv/mingw/default.nix b/pkgs/stdenv/mingw/default.nix
index bedf3986d17..71c974cfad8 100644
--- a/pkgs/stdenv/mingw/default.nix
+++ b/pkgs/stdenv/mingw/default.nix
@@ -62,7 +62,7 @@ let {
       body =
         stdenv // mkDerivationFun // {
           inherit fetchurl;
-          pkgconfig = pkgconfigBin;
+          overrides.pkgconfig = pkgconfigBin;
         };
 
       shell =