2024-06-24 10:51:25 -07:00
|
|
|
{
|
|
|
|
lib,
|
|
|
|
config,
|
|
|
|
}: let
|
2024-06-14 07:01:18 -07:00
|
|
|
cfg = config.builders.basic;
|
|
|
|
|
|
|
|
lib' = config.lib;
|
|
|
|
|
|
|
|
inherit (config) foundation;
|
2024-06-24 10:51:25 -07:00
|
|
|
in {
|
2024-06-14 07:01:18 -07:00
|
|
|
config.builders = {
|
|
|
|
basic = {
|
|
|
|
executable = "${foundation.stage2-bash}/bin/bash";
|
|
|
|
|
2024-06-24 10:51:25 -07:00
|
|
|
build = package: let
|
|
|
|
phases = lib.dag.apply.defaults package.phases {
|
|
|
|
unpack = lib.dag.entry.before ["patch"] "";
|
|
|
|
|
|
|
|
patch = lib.dag.entry.between ["configure"] ["unpack"] "";
|
|
|
|
|
|
|
|
configure = lib.dag.entry.between ["build"] ["patch"] "";
|
|
|
|
|
|
|
|
build = lib.dag.entry.between ["install"] ["configure"] "";
|
|
|
|
|
|
|
|
install = lib.dag.entry.after ["build"] "";
|
|
|
|
};
|
|
|
|
sorted = lib.dag.sort.topographic phases;
|
|
|
|
|
|
|
|
script =
|
|
|
|
lib.strings.concatMapSep "\n" (
|
|
|
|
entry:
|
|
|
|
if builtins.isFunction entry.value
|
|
|
|
then entry.value package
|
|
|
|
else entry.value
|
|
|
|
)
|
|
|
|
sorted.result;
|
|
|
|
|
|
|
|
system = package.platform.build.double;
|
|
|
|
|
|
|
|
built = builtins.derivation (
|
|
|
|
package.env
|
|
|
|
// {
|
|
|
|
inherit (package) name;
|
|
|
|
inherit script system;
|
|
|
|
|
|
|
|
passAsFile = ["script"];
|
|
|
|
|
|
|
|
SHELL = cfg.executable;
|
|
|
|
|
|
|
|
PATH = let
|
|
|
|
bins = lib.paths.bin (
|
|
|
|
(lib'.packages.dependencies.getPackages package.deps.build.host)
|
|
|
|
++ [
|
|
|
|
foundation.stage2-bash
|
|
|
|
foundation.stage2-coreutils
|
|
|
|
]
|
|
|
|
);
|
|
|
|
in
|
|
|
|
builtins.concatStringsSep ":" (
|
|
|
|
[bins] ++ (lib.lists.when (package.env ? PATH) [package.env.PATH])
|
|
|
|
);
|
|
|
|
|
|
|
|
builder = cfg.executable;
|
|
|
|
|
|
|
|
args = [
|
|
|
|
"-e"
|
|
|
|
(builtins.toFile "bash-builder.sh" ''
|
|
|
|
export CONFIG_SHELL=$SHELL
|
|
|
|
|
|
|
|
# Normalize the NIX_BUILD_CORES variable. The value might be 0, which
|
|
|
|
# means that we're supposed to try and auto-detect the number of
|
|
|
|
# available CPU cores at run-time.
|
|
|
|
NIX_BUILD_CORES="''${NIX_BUILD_CORES:-1}"
|
|
|
|
if ((NIX_BUILD_CORES <= 0)); then
|
|
|
|
guess=$(nproc 2>/dev/null || true)
|
|
|
|
((NIX_BUILD_CORES = guess <= 0 ? 1 : guess))
|
|
|
|
fi
|
|
|
|
export NIX_BUILD_CORES
|
|
|
|
|
|
|
|
bash -eux $scriptPath
|
|
|
|
'')
|
|
|
|
];
|
|
|
|
}
|
|
|
|
);
|
|
|
|
in
|
|
|
|
built // {inherit (package) meta;};
|
2024-06-14 07:01:18 -07:00
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|