mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-25 16:33:15 +00:00
fbbe972898
Motivated by ofborg struggling [1] and its evaluations taking too long, inspired by Jörg's initial PR [2] and Adam's previous attempt to parallelise Nixpkgs evaluation [3], this PR contains initial work to relief ofborg from its evaluation duty by using GitHub Actions to evaluate Nixpkgs. For now this doesn't take care of all of what ofborg does, such as requesting appropriate reviewers or labeling mass rebuilds, but this can be follow-up work. [1]: https://discourse.nixos.org/t/infrastructure-announcement-the-future-of-ofborg-your-help-needed/56025?u=infinisil [2]: https://github.com/NixOS/nixpkgs/pull/352808 [3]: https://github.com/NixOS/nixpkgs/pull/269403 Co-Authored-By: Jörg Thalheim <joerg@thalheim.io> Co-Authored-By: Adam Joseph <adam@westernsemico.com>
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
|