labs/tidepool/src/builders/basic.nix

93 lines
2.6 KiB
Nix
Raw Normal View History

2024-07-04 18:01:33 -07:00
{ lib, config }:
let
2024-06-14 07:01:18 -07:00
cfg = config.builders.basic;
lib' = config.lib;
inherit (config) foundation;
2024-07-04 18:01:33 -07:00
in
{
2024-06-14 07:01:18 -07:00
config.builders = {
basic = {
executable = "${foundation.stage2-bash}/bin/bash";
2024-07-04 18:01:33 -07:00
build =
package:
let
phases = lib.dag.apply.defaults package.phases {
unpack = lib.dag.entry.before [ "patch" ] "";
2024-07-04 18:01:33 -07:00
patch = lib.dag.entry.between [ "configure" ] [ "unpack" ] "";
2024-07-04 18:01:33 -07:00
configure = lib.dag.entry.between [ "build" ] [ "patch" ] "";
2024-07-04 18:01:33 -07:00
build = lib.dag.entry.between [ "install" ] [ "configure" ] "";
2024-07-04 18:01:33 -07:00
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
2024-07-03 00:35:21 -07:00
built
// {
inherit (package) meta;
extras = {
inherit package;
};
};
2024-06-14 07:01:18 -07:00
};
};
}