summaryrefslogtreecommitdiffstats
path: root/pkgs/stdenv
diff options
context:
space:
mode:
authorJohn Ericson <Ericson2314@Yahoo.com>2016-04-27 09:09:27 -0700
committerJohn Ericson <Ericson2314@Yahoo.com>2016-11-06 21:28:38 -0800
commit6bfe04277f40a0da27fa6373edfb24a6b139548b (patch)
tree222265464db294577bc8ea56b7a3c99c2847d6be /pkgs/stdenv
parentea7bf0226825e21555eda1fd57d93762b376188d (diff)
top-level: Make config-overriden stdenv bootstrap more normally
Diffstat (limited to 'pkgs/stdenv')
-rw-r--r--pkgs/stdenv/cross/default.nix8
-rw-r--r--pkgs/stdenv/custom/default.nix17
-rw-r--r--pkgs/stdenv/default.nix3
3 files changed, 26 insertions, 2 deletions
diff --git a/pkgs/stdenv/cross/default.nix b/pkgs/stdenv/cross/default.nix
index d78061db712e..93c5a21d9d5a 100644
--- a/pkgs/stdenv/cross/default.nix
+++ b/pkgs/stdenv/cross/default.nix
@@ -1,9 +1,13 @@
{ system, allPackages, platform, crossSystem, config, ... } @ args:
rec {
- vanillaStdenv = (import ../. (args // {
+ argClobber = {
crossSystem = null;
- allPackages = args: allPackages ({ crossSystem = null; } // args);
+ # Ignore custom stdenvs when cross compiling for compatability
+ config = builtins.removeAttrs config [ "replaceStdenv" ];
+ };
+ vanillaStdenv = (import ../. (args // argClobber // {
+ allPackages = args: allPackages (argClobber // args);
})).stdenv;
# Yeah this isn't so cleanly just build-time packages yet. Notice the
diff --git a/pkgs/stdenv/custom/default.nix b/pkgs/stdenv/custom/default.nix
new file mode 100644
index 000000000000..2f2f495b388b
--- /dev/null
+++ b/pkgs/stdenv/custom/default.nix
@@ -0,0 +1,17 @@
+{ system, allPackages, platform, crossSystem, config, ... } @ args:
+
+rec {
+ vanillaStdenv = (import ../. (args // {
+ # Remove config.replaceStdenv to ensure termination.
+ config = builtins.removeAttrs config [ "replaceStdenv" ];
+ })).stdenv;
+
+ buildPackages = allPackages {
+ # It's OK to change the built-time dependencies
+ allowCustomOverrides = true;
+ bootStdenv = vanillaStdenv;
+ inherit system platform crossSystem config;
+ };
+
+ stdenvCustom = config.replaceStdenv { pkgs = buildPackages; };
+}
diff --git a/pkgs/stdenv/default.nix b/pkgs/stdenv/default.nix
index 59088bfdf3bf..10086ee6a853 100644
--- a/pkgs/stdenv/default.nix
+++ b/pkgs/stdenv/default.nix
@@ -40,9 +40,12 @@ rec {
inherit (import ./cross { inherit system allPackages platform crossSystem config lib; }) stdenvCross;
+ inherit (import ./custom { inherit system allPackages platform crossSystem config lib; }) stdenvCustom;
+
# Select the appropriate stdenv for the platform `system'.
stdenv =
if crossSystem != null then stdenvCross else
+ if config ? replaceStdenv then stdenvCustom else
if system == "i686-linux" then stdenvLinux else
if system == "x86_64-linux" then stdenvLinux else
if system == "armv5tel-linux" then stdenvLinux else