diff options
author | John Ericson <Ericson2314@Yahoo.com> | 2016-04-27 09:09:27 -0700 |
---|---|---|
committer | John Ericson <Ericson2314@Yahoo.com> | 2016-11-06 21:28:38 -0800 |
commit | 6bfe04277f40a0da27fa6373edfb24a6b139548b (patch) | |
tree | 222265464db294577bc8ea56b7a3c99c2847d6be /pkgs/stdenv | |
parent | ea7bf0226825e21555eda1fd57d93762b376188d (diff) |
top-level: Make config-overriden stdenv bootstrap more normally
Diffstat (limited to 'pkgs/stdenv')
-rw-r--r-- | pkgs/stdenv/cross/default.nix | 8 | ||||
-rw-r--r-- | pkgs/stdenv/custom/default.nix | 17 | ||||
-rw-r--r-- | pkgs/stdenv/default.nix | 3 |
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 |