top-level/release.nix: use named constituents in aggregates (#555622)

This commit is contained in:
Jörg Thalheim
2026-08-24 11:40:04 +00:00
committed by GitHub
4 changed files with 133 additions and 145 deletions

View File

@@ -124,12 +124,16 @@ rec {
name,
constituents,
meta ? { },
# Interpret string constituents as fnmatch patterns matched
# against all job names of the jobset.
globConstituents ? false,
}:
pkgs.runCommand name
{
inherit constituents meta;
preferLocalBuild = true;
_hydraAggregate = true;
_hydraGlobConstituents = globConstituents;
}
''
mkdir -p $out/nix-support

View File

@@ -26,26 +26,6 @@ let
pkgs
;
# Helper function which traverses a (nested) set
# of derivations produced by mapTestOn and flattens
# it to a list of derivations suitable to be passed
# to `releaseTools.aggregate` as constituents.
# Removes all non derivations from the input jobList.
#
# accumulateDerivations :: [ Either Derivation AttrSet ] -> [ Derivation ]
#
# > accumulateDerivations [ drv1 "string" { foo = drv2; bar = { baz = drv3; }; } ]
# [ drv1 drv2 drv3 ]
accumulateDerivations =
jobList:
lib.concatMap (
attrs:
if lib.isDerivation attrs then
[ attrs ]
else
lib.optionals (lib.isAttrs attrs) (accumulateDerivations (lib.attrValues attrs))
) jobList;
# names of all subsets of `pkgs.haskell.packages`
#
# compilerNames looks like the following:
@@ -632,34 +612,35 @@ let
'';
teams = [ lib.teams.haskell ];
};
constituents = accumulateDerivations [
globConstituents = true;
constituents = [
# haskell specific tests
jobs.tests.haskell
"tests.haskell.*"
# important top-level packages
jobs.cabal-install
jobs.cabal2nix
jobs.cachix
jobs.darcs
jobs.haskell-language-server
jobs.hledger
jobs.hledger-ui
jobs.hpack
jobs.niv
jobs.pandoc
jobs.stack
jobs.stylish-haskell
jobs.shellcheck
"cabal-install.*"
"cabal2nix.*"
"cachix.*"
"darcs.*"
"haskell-language-server.*"
"hledger.*"
"hledger-ui.*"
"hpack.*"
"niv.*"
"pandoc.*"
"stack.*"
"stylish-haskell.*"
"shellcheck.*"
# important haskell (library) packages
jobs.haskellPackages.cabal-plan
jobs.haskellPackages.distribution-nixpkgs
jobs.haskellPackages.hackage-db
jobs.haskellPackages.xmonad
jobs.haskellPackages.xmonad-contrib
"haskellPackages.cabal-plan.*"
"haskellPackages.distribution-nixpkgs.*"
"haskellPackages.hackage-db.*"
"haskellPackages.xmonad.*"
"haskellPackages.xmonad-contrib.*"
# haskell packages maintained by @peti
# imported from the old hydra jobset
jobs.haskellPackages.hopenssl
jobs.haskellPackages.hsemail
jobs.haskellPackages.hsyslog
"haskellPackages.hopenssl.*"
"haskellPackages.hsemail.*"
"haskellPackages.hsyslog.*"
];
};
maintained = pkgs.releaseTools.aggregate {
@@ -668,9 +649,8 @@ let
description = "Aggregate jobset of all haskell packages with a maintainer";
teams = [ lib.teams.haskell ];
};
constituents = accumulateDerivations (
map (name: jobs.haskellPackages."${name}") (maintainedPkgNames pkgs.haskellPackages)
);
globConstituents = true;
constituents = map (name: "haskellPackages.${name}.*") (maintainedPkgNames pkgs.haskellPackages);
};
muslGHCs = pkgs.releaseTools.aggregate {
@@ -681,9 +661,10 @@ let
nh2
];
};
constituents = accumulateDerivations [
jobs.pkgsMusl.haskell.compiler.ghcHEAD
jobs.pkgsMusl.haskell.compiler.native-bignum.ghcHEAD
globConstituents = true;
constituents = [
"pkgsMusl.haskell.compiler.ghcHEAD.*"
"pkgsMusl.haskell.compiler.native-bignum.ghcHEAD.*"
];
};
@@ -696,9 +677,10 @@ let
lib.maintainers.rnhmjoj
];
};
constituents = accumulateDerivations [
jobs.pkgsStatic.haskell.packages.native-bignum.ghc948 # non-hadrian
jobs.pkgsStatic.haskellPackages
globConstituents = true;
constituents = [
"pkgsStatic.haskell.packages.native-bignum.ghc948.*" # non-hadrian
"pkgsStatic.haskellPackages.*"
];
};
}

View File

@@ -53,14 +53,14 @@ let
name = "python-tested";
meta.description = "Release-critical packages from the python package sets";
constituents = [
jobs.nixos-render-docs.x86_64-linux # Used in nixos manual
jobs.remarshal.x86_64-linux # Used in pkgs.formats.yaml_1_1
jobs.python313Packages.afdko.x86_64-linux # Used in noto-fonts-color-emoji
jobs.python313Packages.buildcatrust.x86_64-linux # Used in pkgs.cacert
jobs.python313Packages.colorama.x86_64-linux # Used in nixos test-driver
jobs.python313Packages.ptpython.x86_64-linux # Used in nixos test-driver
jobs.python313Packages.requests.x86_64-linux # Almost ubiquous package
jobs.python313Packages.sphinx.x86_64-linux # Document creation for many packages
"nixos-render-docs.x86_64-linux" # Used in nixos manual
"remarshal.x86_64-linux" # Used in pkgs.formats.yaml_1_1
"python313Packages.afdko.x86_64-linux" # Used in noto-fonts-color-emoji
"python313Packages.buildcatrust.x86_64-linux" # Used in pkgs.cacert
"python313Packages.colorama.x86_64-linux" # Used in nixos test-driver
"python313Packages.ptpython.x86_64-linux" # Used in nixos test-driver
"python313Packages.requests.x86_64-linux" # Almost ubiquous package
"python313Packages.sphinx.x86_64-linux" # Document creation for many packages
];
};

View File

@@ -77,13 +77,12 @@ let
inherit (release-lib) mapTestOn pkgs;
inherit (release-lib.lib)
collect
concatMap
elem
genAttrs
hasInfix
hasSuffix
id
isDerivation
optionals
;
@@ -113,49 +112,49 @@ let
name = "nixpkgs-darwin-${jobs.tarball.version}";
meta.description = "Release-critical builds for the Nixpkgs darwin channel";
constituents = [
jobs.tarball
jobs.release-checks
"tarball"
"release-checks"
]
++ optionals supportDarwin [
jobs.cabal2nix.aarch64-darwin
jobs.ghc.aarch64-darwin
jobs.git.aarch64-darwin
jobs.go.aarch64-darwin
jobs.mariadb.aarch64-darwin
jobs.nix.aarch64-darwin
jobs.nixpkgs-review.aarch64-darwin
jobs.nix-info.aarch64-darwin
jobs.nix-info-tested.aarch64-darwin
jobs.openssh.aarch64-darwin
jobs.openssl.aarch64-darwin
jobs.pandoc.aarch64-darwin
jobs.postgresql.aarch64-darwin
jobs.python3.aarch64-darwin
jobs.ruby.aarch64-darwin
jobs.rustc.aarch64-darwin
"cabal2nix.aarch64-darwin"
"ghc.aarch64-darwin"
"git.aarch64-darwin"
"go.aarch64-darwin"
"mariadb.aarch64-darwin"
"nix.aarch64-darwin"
"nixpkgs-review.aarch64-darwin"
"nix-info.aarch64-darwin"
"nix-info-tested.aarch64-darwin"
"openssh.aarch64-darwin"
"openssl.aarch64-darwin"
"pandoc.aarch64-darwin"
"postgresql.aarch64-darwin"
"python3.aarch64-darwin"
"ruby.aarch64-darwin"
"rustc.aarch64-darwin"
# blocking ofBorg CI 2020-02-28
# jobs.stack.aarch64-darwin
jobs.stdenv.aarch64-darwin
jobs.vim.aarch64-darwin
jobs.cachix.aarch64-darwin
jobs.darwin.linux-builder.aarch64-darwin
# "stack.aarch64-darwin"
"stdenv.aarch64-darwin"
"vim.aarch64-darwin"
"cachix.aarch64-darwin"
"darwin.linux-builder.aarch64-darwin"
# UI apps
# jobs.firefox-unwrapped.aarch64-darwin
jobs.qt5.qtmultimedia.aarch64-darwin
jobs.inkscape.aarch64-darwin
jobs.gimp2.aarch64-darwin # FIXME replace with gimp once https://github.com/NixOS/nixpkgs/issues/411189 is resolved
jobs.emacs.aarch64-darwin
jobs.wireshark.aarch64-darwin
# "firefox-unwrapped.aarch64-darwin"
"qt5.qtmultimedia.aarch64-darwin"
"inkscape.aarch64-darwin"
"gimp2.aarch64-darwin" # FIXME replace with gimp once https://github.com/NixOS/nixpkgs/issues/411189 is resolved
"emacs.aarch64-darwin"
"wireshark.aarch64-darwin"
# Tests
/*
jobs.tests.cc-wrapper.default.aarch64-darwin
jobs.tests.cc-wrapper.llvmPackages.clang.aarch64-darwin
jobs.tests.cc-wrapper.llvmPackages.libcxx.aarch64-darwin
jobs.tests.stdenv-inputs.aarch64-darwin
jobs.tests.macOSSierraShared.aarch64-darwin
jobs.tests.stdenv.hooks.patch-shebangs.aarch64-darwin
"tests.cc-wrapper.default.aarch64-darwin"
"tests.cc-wrapper.llvmPackages.clang.aarch64-darwin"
"tests.cc-wrapper.llvmPackages.libcxx.aarch64-darwin"
"tests.stdenv-inputs.aarch64-darwin"
"tests.macOSSierraShared.aarch64-darwin"
"tests.stdenv.hooks.patch-shebangs.aarch64-darwin"
*/
];
}
@@ -166,68 +165,71 @@ let
name = "nixpkgs-${jobs.tarball.version}";
meta.description = "Release-critical builds for the Nixpkgs unstable channel";
constituents = [
jobs.tarball
jobs.release-checks
jobs.metrics
jobs.manual
jobs.tests.lib-tests.x86_64-linux
jobs.tests.pkgs-lib.formats-tests.x86_64-linux
jobs.stdenv.x86_64-linux
jobs.cargo.x86_64-linux
jobs.go.x86_64-linux
jobs.linux.x86_64-linux
jobs.nix.x86_64-linux
jobs.pandoc.x86_64-linux
jobs.python3.x86_64-linux
"tarball"
"release-checks"
"metrics"
"manual"
"tests.lib-tests.x86_64-linux"
"tests.pkgs-lib.formats-tests.x86_64-linux"
"stdenv.x86_64-linux"
"cargo.x86_64-linux"
"go.x86_64-linux"
"linux.x86_64-linux"
"nix.x86_64-linux"
"pandoc.x86_64-linux"
"python3.x86_64-linux"
# Needed by contributors to test PRs (by inclusion of the PR template)
jobs.nixpkgs-review.x86_64-linux
"nixpkgs-review.x86_64-linux"
# Needed for support
jobs.nix-info.x86_64-linux
jobs.nix-info-tested.x86_64-linux
"nix-info.x86_64-linux"
"nix-info-tested.x86_64-linux"
# Ensure that X11/GTK are in order.
jobs.firefox-unwrapped.x86_64-linux
jobs.cachix.x86_64-linux
jobs.devenv.x86_64-linux
"firefox-unwrapped.x86_64-linux"
"cachix.x86_64-linux"
"devenv.x86_64-linux"
/*
TODO: re-add tests; context: https://github.com/NixOS/nixpkgs/commit/36587a587ab191eddd868179d63c82cdd5dee21b
jobs.tests.cc-wrapper.default.x86_64-linux
"tests.cc-wrapper.default.x86_64-linux"
# broken see issue #40038
jobs.tests.cc-wrapper.llvmPackages.clang.x86_64-linux
jobs.tests.cc-wrapper.llvmPackages.libcxx.x86_64-linux
jobs.tests.cc-multilib-gcc.x86_64-linux
jobs.tests.cc-multilib-clang.x86_64-linux
jobs.tests.stdenv-inputs.x86_64-linux
jobs.tests.stdenv.hooks.patch-shebangs.x86_64-linux
"tests.cc-wrapper.llvmPackages.clang.x86_64-linux"
"tests.cc-wrapper.llvmPackages.libcxx.x86_64-linux"
"tests.cc-multilib-gcc.x86_64-linux"
"tests.cc-multilib-clang.x86_64-linux"
"tests.stdenv-inputs.x86_64-linux"
"tests.stdenv.hooks.patch-shebangs.x86_64-linux"
*/
]
++ collect isDerivation jobs.stdenvBootstrapTools
++ concatMap (config: [
"stdenvBootstrapTools.${config}.build"
"stdenvBootstrapTools.${config}.test"
]) bootstrapConfigs
++ optionals supportDarwin [
jobs.stdenv.aarch64-darwin
jobs.cargo.aarch64-darwin
jobs.cachix.aarch64-darwin
jobs.devenv.aarch64-darwin
jobs.go.aarch64-darwin
jobs.python3.aarch64-darwin
jobs.nixpkgs-review.aarch64-darwin
jobs.nix.aarch64-darwin
jobs.nix-info.aarch64-darwin
jobs.nix-info-tested.aarch64-darwin
jobs.git.aarch64-darwin
jobs.mariadb.aarch64-darwin
jobs.vim.aarch64-darwin
jobs.inkscape.aarch64-darwin
jobs.qt5.qtmultimedia.aarch64-darwin
jobs.darwin.linux-builder.aarch64-darwin
"stdenv.aarch64-darwin"
"cargo.aarch64-darwin"
"cachix.aarch64-darwin"
"devenv.aarch64-darwin"
"go.aarch64-darwin"
"python3.aarch64-darwin"
"nixpkgs-review.aarch64-darwin"
"nix.aarch64-darwin"
"nix-info.aarch64-darwin"
"nix-info-tested.aarch64-darwin"
"git.aarch64-darwin"
"mariadb.aarch64-darwin"
"vim.aarch64-darwin"
"inkscape.aarch64-darwin"
"qt5.qtmultimedia.aarch64-darwin"
"darwin.linux-builder.aarch64-darwin"
/*
jobs.tests.cc-wrapper.default.aarch64-darwin
jobs.tests.cc-wrapper.llvmPackages.clang.aarch64-darwin
jobs.tests.cc-wrapper.llvmPackages.libcxx.aarch64-darwin
jobs.tests.stdenv-inputs.aarch64-darwin
jobs.tests.stdenv.hooks.patch-shebangs.aarch64-darwin
"tests.cc-wrapper.default.aarch64-darwin"
"tests.cc-wrapper.llvmPackages.clang.aarch64-darwin"
"tests.cc-wrapper.llvmPackages.libcxx.aarch64-darwin"
"tests.stdenv-inputs.aarch64-darwin"
"tests.stdenv.hooks.patch-shebangs.aarch64-darwin"
*/
];
};