diff --git a/.github/workflows/eval.yml b/.github/workflows/eval.yml index 022bc62236ec..2ea3c91eef61 100644 --- a/.github/workflows/eval.yml +++ b/.github/workflows/eval.yml @@ -312,6 +312,12 @@ jobs: script: | const { readFile } = require('node:fs/promises') const changed = JSON.parse(await readFile('comparison/changed-paths.json', 'utf-8')) + const removedByKernel = Object.fromEntries( + Object.entries(changed.attrdiffByKernel ?? {}).map(([kernel, diff]) => [ + kernel, + diff.removed.length, + ]), + ) const description = 'Package: ' + [ `added ${changed.attrdiff.added.length}`, @@ -321,7 +327,15 @@ jobs: ' — Rebuild: ' + [ `linux ${changed.rebuildCountByKernel.linux}`, `darwin ${changed.rebuildCountByKernel.darwin}` - ].join(', ') + ].join(', ') + + ( + Object.values(removedByKernel).some((count) => count > 0) + ? ' — Removed: ' + [ + `linux ${removedByKernel.linux ?? 0}`, + `darwin ${removedByKernel.darwin ?? 0}` + ].join(', ') + : '' + ) const { serverUrl, repo, runId, payload } = context const target_url = diff --git a/ci/eval/compare/default.nix b/ci/eval/compare/default.nix index 1717911f5c52..2ed6c577ecb4 100644 --- a/ci/eval/compare/default.nix +++ b/ci/eval/compare/default.nix @@ -74,9 +74,38 @@ let { attrdiff: { added: ["package1"], - changed: ["package2", "package3"], + changed: ["package2", "package3", "package4"], removed: ["package4"], }, + attrdiffByKernel: { + darwin: { + added: [], + changed: ["package2", "package4"], + removed: ["package4"], + }, + linux: { + added: ["package1"], + changed: ["package3", "package4"], + removed: [], + }, + }, + attrdiffByPlatform: { + aarch64-darwin: { + added: [], + changed: ["package2"], + removed: ["package4"], + }, + aarch64-linux: { + added: ["package1"], + changed: ["package3"], + removed: [], + }, + x86_64-linux: { + added: [], + changed: ["package4"], + removed: [], + }, + }, labels: { "10.rebuild-darwin: 1-10": true, "10.rebuild-linux: 1-10": true @@ -113,6 +142,8 @@ let inherit (import ./utils.nix { inherit lib; }) groupByKernel convertToPackagePlatformAttrs + groupAttrdiffByKernel + groupAttrdiffByPlatform groupByPlatform extractPackageNames getLabels @@ -127,6 +158,15 @@ let changed-paths = let + attrdiff = lib.mapAttrs (_: extractPackageNames) { + inherit (diffAttrs) added changed removed; + }; + attrdiffByPlatform = groupAttrdiffByPlatform { + inherit (diffAttrs) added changed removed; + }; + attrdiffByKernel = groupAttrdiffByKernel { + inherit (diffAttrs) added changed removed; + }; rebuildsByPlatform = groupByPlatform rebuildsPackagePlatformAttrs; rebuildsByKernel = groupByKernel rebuildsPackagePlatformAttrs; rebuildCountByKernel = lib.mapAttrs ( @@ -135,7 +175,7 @@ let in writeText "changed-paths.json" ( builtins.toJSON { - attrdiff = lib.mapAttrs (_: extractPackageNames) { inherit (diffAttrs) added changed removed; }; + inherit attrdiff attrdiffByKernel attrdiffByPlatform; inherit rebuildsByPlatform rebuildsByKernel diff --git a/ci/eval/compare/test.nix b/ci/eval/compare/test.nix index aaaff6ec9581..1b4c6f15bede 100644 --- a/ci/eval/compare/test.nix +++ b/ci/eval/compare/test.nix @@ -7,6 +7,7 @@ }: let fun = import ./maintainers.nix { inherit lib; }; + utils = import ./utils.nix { inherit lib; }; mockPkgs = { @@ -226,6 +227,83 @@ let ]; }; }; + testGroupAttrdiffByPlatform = { + expr = utils.groupAttrdiffByPlatform { + added = [ + "new-tool.aarch64-linux" + "new-tool.x86_64-darwin" + ]; + changed = [ + "updated-tool.x86_64-darwin" + "shared-tool.x86_64-darwin" + ]; + removed = [ + "removed-tool.aarch64-darwin" + "shared-tool.aarch64-darwin" + ]; + }; + expected = { + aarch64-darwin = { + added = [ ]; + changed = [ ]; + removed = [ + "removed-tool" + "shared-tool" + ]; + }; + aarch64-linux = { + added = [ "new-tool" ]; + changed = [ ]; + removed = [ ]; + }; + x86_64-darwin = { + added = [ "new-tool" ]; + changed = [ + "shared-tool" + "updated-tool" + ]; + removed = [ ]; + }; + }; + }; + testGroupAttrdiffByKernel = { + expr = + let + grouped = utils.groupAttrdiffByKernel { + added = [ + "new-tool.aarch64-linux" + "new-tool.x86_64-darwin" + ]; + changed = [ + "updated-tool.x86_64-darwin" + "shared-tool.x86_64-darwin" + ]; + removed = [ + "removed-tool.aarch64-darwin" + "shared-tool.aarch64-darwin" + ]; + }; + in + lib.mapAttrs (_: diff: lib.mapAttrs (_: lib.sort lib.lessThan) diff) grouped; + expected = { + darwin = { + added = [ "new-tool" ]; + changed = [ + "shared-tool" + "updated-tool" + ]; + removed = [ + "removed-tool" + "shared-tool" + ]; + }; + linux = { + added = [ "new-tool" ]; + changed = [ ]; + removed = [ ]; + }; + }; + }; }; in { diff --git a/ci/eval/compare/utils.nix b/ci/eval/compare/utils.nix index 969622ee16f1..dc7f4b651db7 100644 --- a/ci/eval/compare/utils.nix +++ b/ci/eval/compare/utils.nix @@ -150,6 +150,50 @@ rec { in lib.genAttrs [ "linux" "darwin" ] filterKernel; + /* + Group an attrdiff-style mapping by a derived key such as platform or kernel. + + Turns + { + added = [ "new-tool.aarch64-linux" "new-tool.x86_64-darwin" ]; + changed = [ "updated-tool.x86_64-darwin" "shared-tool.x86_64-darwin" ]; + removed = [ "removed-tool.aarch64-darwin" "shared-tool.aarch64-darwin" ]; + } + into + { + aarch64-darwin = { + added = [ ]; + changed = [ ]; + removed = [ "removed-tool" "shared-tool" ]; + }; + aarch64-linux = { + added = [ "new-tool" ]; + changed = [ ]; + removed = [ ]; + }; + x86_64-darwin = { + added = [ "new-tool" ]; + changed = [ "shared-tool" "updated-tool" ]; + removed = [ ]; + }; + } + when used with `groupByPlatform`. + */ + groupAttrdiffBy = + grouper: attrdiff: + let + groupedByKind = lib.mapAttrs ( + _: packagePlatformPaths: + grouper (convertToPackagePlatformAttrs (uniqueStrings packagePlatformPaths)) + ) attrdiff; + groups = uniqueStrings (lib.flatten (map builtins.attrNames (lib.attrValues groupedByKind))); + in + lib.genAttrs groups (group: lib.mapAttrs (_: byGroup: byGroup.${group} or [ ]) groupedByKind); + + groupAttrdiffByPlatform = groupAttrdiffBy groupByPlatform; + + groupAttrdiffByKernel = groupAttrdiffBy groupByKernel; + /* Maps an attrs of `kernel - rebuild counts` mappings to an attrs of labels diff --git a/ci/github-script/check-target-branch.js b/ci/github-script/check-target-branch.js index 46101adcf200..9b47a946b889 100644 --- a/ci/github-script/check-target-branch.js +++ b/ci/github-script/check-target-branch.js @@ -25,6 +25,16 @@ async function checkTargetBranch({ github, context, core, dry }) { * changed: string[], * removed: string[], * }, + * attrdiffByKernel: Record, + * attrdiffByPlatform: Record, * labels: Record, * rebuildCountByKernel: Record, * rebuildsByKernel: Record, diff --git a/pkgs/by-name/bc/bcachefs-tools/kernel-module.nix b/pkgs/by-name/bc/bcachefs-tools/kernel-module.nix index 6889353cec9c..ad9e4a9c5483 100644 --- a/pkgs/by-name/bc/bcachefs-tools/kernel-module.nix +++ b/pkgs/by-name/bc/bcachefs-tools/kernel-module.nix @@ -44,6 +44,6 @@ stdenv.mkDerivation { platforms ; - broken = !(lib.versionAtLeast kernel.version "6.16" && lib.versionOlder kernel.version "6.20"); + broken = !(lib.versionAtLeast kernel.version "6.16" && lib.versionOlder kernel.version "7.1"); }; } diff --git a/pkgs/by-name/cu/cubeb/package.nix b/pkgs/by-name/cu/cubeb/package.nix index 3881d45dd5e4..d23d91f68f0d 100644 --- a/pkgs/by-name/cu/cubeb/package.nix +++ b/pkgs/by-name/cu/cubeb/package.nix @@ -24,13 +24,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "cubeb"; - version = "0-unstable-2026-03-25"; + version = "0-unstable-2026-04-06"; src = fetchFromGitHub { owner = "mozilla"; repo = "cubeb"; - rev = "774182f2c1b6d5e0d8ce975f2ed9f58fab7f1da2"; - hash = "sha256-Wh/yKAritCLg0FGbM4i+iorgOZvmFysLlDxpuZH7NjI="; + rev = "626d7d9f906e9f3cfb70be9e58af0f5a5f399a74"; + hash = "sha256-qo3gVlYGxKef7RVGngFDKuSODoVbSCaFZwoKY4RDaAk="; }; outputs = [