47 lines
1.2 KiB
Nix
47 lines
1.2 KiB
Nix
# This file works in tandem with ../../ci/eval/default.nix
|
|
# It turns ./release-outpaths.nix into chunks of a fixed size
|
|
{
|
|
lib ? import ../../lib,
|
|
path ? ../..,
|
|
# The file containing all available attribute paths, which are split into chunks here
|
|
attrpathFile,
|
|
chunkSize,
|
|
myChunk,
|
|
checkMeta,
|
|
includeBroken,
|
|
systems,
|
|
}:
|
|
|
|
let
|
|
attrpaths = lib.importJSON attrpathFile;
|
|
myAttrpaths = lib.sublist (chunkSize * myChunk) chunkSize attrpaths;
|
|
|
|
unfiltered = import ./release-outpaths.nix {
|
|
inherit path;
|
|
inherit checkMeta includeBroken systems;
|
|
};
|
|
|
|
# Turns the unfiltered recursive attribute set into one that is limited to myAttrpaths
|
|
filtered =
|
|
let
|
|
recurse =
|
|
index: paths: attrs:
|
|
lib.mapAttrs (
|
|
name: values:
|
|
if attrs ? ${name} then
|
|
if lib.any (value: lib.length value <= index + 1) values then
|
|
attrs.${name}
|
|
else
|
|
recurse (index + 1) values attrs.${name}
|
|
# Make sure nix-env recurses as well
|
|
// {
|
|
recurseForDerivations = true;
|
|
}
|
|
else
|
|
null
|
|
) (lib.groupBy (a: lib.elemAt a index) paths);
|
|
in
|
|
recurse 0 myAttrpaths unfiltered;
|
|
|
|
in
|
|
filtered
|