Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.
48 lines
1.2 KiB
Nix
48 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
|