top-level: Normalize stdenv booting
Introduce new abstraction, `stdenv/booter.nix` for composing bootstraping stages, and use it everywhere for consistency. See that file for more doc. Stdenvs besides Linux and Darwin are completely refactored to utilize this. Those two, due to their size and complexity, are minimally edited for easier reviewing. No hashes should be changed.
This commit is contained in:
@@ -1,65 +1,86 @@
|
||||
{ lib, allPackages
|
||||
{ lib
|
||||
, system, platform, crossSystem, config
|
||||
}:
|
||||
|
||||
assert crossSystem == null;
|
||||
|
||||
rec {
|
||||
inherit allPackages;
|
||||
|
||||
bootstrapTools = derivation {
|
||||
inherit system;
|
||||
[
|
||||
|
||||
name = "trivial-bootstrap-tools";
|
||||
builder = "/usr/local/bin/bash";
|
||||
args = [ ./trivial-bootstrap.sh ];
|
||||
({}: {
|
||||
__raw = true;
|
||||
|
||||
mkdir = "/bin/mkdir";
|
||||
ln = "/bin/ln";
|
||||
};
|
||||
bootstrapTools = derivation {
|
||||
inherit system;
|
||||
|
||||
name = "trivial-bootstrap-tools";
|
||||
builder = "/usr/local/bin/bash";
|
||||
args = [ ./trivial-bootstrap.sh ];
|
||||
|
||||
mkdir = "/bin/mkdir";
|
||||
ln = "/bin/ln";
|
||||
};
|
||||
})
|
||||
|
||||
({ bootstrapTools, ... }: rec {
|
||||
__raw = true;
|
||||
|
||||
inherit bootstrapTools;
|
||||
|
||||
fetchurl = import ../../build-support/fetchurl {
|
||||
inherit stdenv;
|
||||
curl = bootstrapTools;
|
||||
};
|
||||
|
||||
fetchurl = import ../../build-support/fetchurl {
|
||||
stdenv = import ../generic {
|
||||
name = "stdenv-freebsd-boot-1";
|
||||
inherit system config;
|
||||
|
||||
initialPath = [ "/" "/usr" ];
|
||||
shell = "${bootstrapTools}/bin/bash";
|
||||
initialPath = [ "/" "/usr" ];
|
||||
shell = "${bootstrapTools}/bin/bash";
|
||||
fetchurlBoot = null;
|
||||
cc = null;
|
||||
};
|
||||
curl = bootstrapTools;
|
||||
};
|
||||
|
||||
stdenvFreeBSD = import ../generic {
|
||||
name = "stdenv-freebsd-boot-3";
|
||||
|
||||
inherit system config;
|
||||
|
||||
initialPath = [ bootstrapTools ];
|
||||
shell = "${bootstrapTools}/bin/bash";
|
||||
fetchurlBoot = fetchurl;
|
||||
|
||||
cc = import ../../build-support/cc-wrapper {
|
||||
nativeTools = true;
|
||||
nativePrefix = "/usr";
|
||||
nativeLibc = true;
|
||||
stdenv = import ../generic {
|
||||
inherit system config;
|
||||
name = "stdenv-freebsd-boot-0";
|
||||
initialPath = [ bootstrapTools ];
|
||||
shell = stdenvFreeBSD.shell;
|
||||
fetchurlBoot = fetchurl;
|
||||
cc = null;
|
||||
overrides = self: super: {
|
||||
};
|
||||
cc = {
|
||||
name = "clang-9.9.9";
|
||||
cc = "/usr";
|
||||
outPath = "/usr";
|
||||
};
|
||||
isClang = true;
|
||||
};
|
||||
})
|
||||
|
||||
preHook = ''export NIX_NO_SELF_RPATH=1'';
|
||||
};
|
||||
}
|
||||
(prevStage: {
|
||||
__raw = true;
|
||||
|
||||
stdenv = import ../generic {
|
||||
name = "stdenv-freebsd-boot-0";
|
||||
inherit system config;
|
||||
initialPath = [ prevStage.bootstrapTools ];
|
||||
inherit (prevStage.stdenv) shell;
|
||||
fetchurlBoot = prevStage.fetchurl;
|
||||
cc = null;
|
||||
};
|
||||
})
|
||||
|
||||
(prevStage: {
|
||||
inherit system crossSystem platform config;
|
||||
stdenv = import ../generic {
|
||||
name = "stdenv-freebsd-boot-3";
|
||||
inherit system config;
|
||||
|
||||
inherit (prevStage.stdenv)
|
||||
initialPath shell fetchurlBoot;
|
||||
|
||||
cc = import ../../build-support/cc-wrapper {
|
||||
nativeTools = true;
|
||||
nativePrefix = "/usr";
|
||||
nativeLibc = true;
|
||||
inherit (prevStage) stdenv;
|
||||
cc = {
|
||||
name = "clang-9.9.9";
|
||||
cc = "/usr";
|
||||
outPath = "/usr";
|
||||
};
|
||||
isClang = true;
|
||||
};
|
||||
|
||||
preHook = ''export NIX_NO_SELF_RPATH=1'';
|
||||
};
|
||||
})
|
||||
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user