![John Ericson](/assets/img/avatar_default.png)
This commit changes the dependencies of stdenv, and clean-up the stdenv story by removing the `defaultStdenv` attribute as well as the `bootStdenv` parameter. Before, the final bootstrapping stage's stdenv was provided by all-packages, which was iterating multiple times over the top-level/default.nix expression, and non-final bootstrapping stages' stdenvs were explicitly specified with the `bootStdenv` parameter. Now, all stages' stdenvs are specified with the `stdenv` parameter. For non-final bootstrapping stages, this is a small change---basically just rename the parameter. For the final stage, top-level/default.nix takes the chosen stdenv and makes the final stage with it. `allPackages` is used to make all bootstrapping stages, final and non-final alike. It's basically the expression of `stage.nix` (along with a few partially-applied default arguments) Note, the make-bootstrap-tools scripts are temporarily broken
36 lines
1.3 KiB
Nix
36 lines
1.3 KiB
Nix
{ system, allPackages, platform, crossSystem, config, ... } @ args:
|
|
|
|
rec {
|
|
argClobber = {
|
|
crossSystem = null;
|
|
# Ignore custom stdenvs when cross compiling for compatability
|
|
config = builtins.removeAttrs config [ "replaceStdenv" ];
|
|
};
|
|
vanillaStdenv = (import ../. (args // argClobber // {
|
|
allPackages = args: allPackages (argClobber // args);
|
|
})) // {
|
|
# Needed elsewhere as a hacky way to pass the target
|
|
cross = crossSystem;
|
|
};
|
|
|
|
# For now, this is just used to build the native stdenv. Eventually, it should
|
|
# be used to build compilers and other such tools targeting the cross
|
|
# platform. Then, `forceNativeDrv` can be removed.
|
|
buildPackages = allPackages {
|
|
inherit system platform crossSystem config;
|
|
# It's OK to change the built-time dependencies
|
|
allowCustomOverrides = true;
|
|
stdenv = vanillaStdenv;
|
|
};
|
|
|
|
stdenvCross = buildPackages.makeStdenvCross
|
|
buildPackages.stdenv crossSystem
|
|
buildPackages.binutilsCross buildPackages.gccCrossStageFinal;
|
|
|
|
stdenvCrossiOS = let
|
|
inherit (buildPackages.darwin.ios-cross { prefix = crossSystem.config; inherit (crossSystem) arch; simulator = crossSystem.isiPhoneSimulator or false; }) cc binutils;
|
|
in buildPackages.makeStdenvCross
|
|
buildPackages.stdenv crossSystem
|
|
binutils cc;
|
|
}
|