Commit Graph

42 Commits

Author SHA1 Message Date
dramforever
ce70a9e6b4 ci/eval/compare/maintainers: Handle nonexistent attribute in changedByNameAttrPaths
This could happen if a new package was added in pkgs/by-name
2026-03-14 14:10:56 +08:00
Silvan Mosberger
ca6ce52e6a ci/eval/compare: Fix wrong Nixpkgs being used
See https://github.com/NixOS/nixpkgs/pull/488014#issuecomment-4009775318
and https://github.com/NixOS/nixpkgs/issues/497110
2026-03-13 16:53:43 +01:00
Silvan Mosberger
b513ab8192 Reapply "ci: module maintainer review requests; nixos/modules: init meta.teams"
This reverts commit 2cc2e0225f.
2026-03-13 16:53:28 +01:00
Silvan Mosberger
2cc2e0225f Revert "ci: module maintainer review requests; nixos/modules: init meta.teams" 2026-03-06 08:41:24 +01:00
Silvan Mosberger
7fe44998ab ci/eval/compare/maintainers.nix: Refactor
Was more complicated than needed.
Tests still succeed
2026-03-02 10:59:25 +01:00
Silvan Mosberger
ee016757f5 ci/eval/compare/maintainers.nix: Add tests 2026-03-02 10:59:22 +01:00
Silvan Mosberger
c0d434bf40 ci/eval/compare/maintainers.nix: Improve interface and document 2026-03-02 10:59:18 +01:00
Silvan Mosberger
5991eab94f modules/generic/meta-maintainers.nix: Introduce meta.teams
And trigger review requests for it
2026-03-02 10:59:07 +01:00
Silvan Mosberger
b486dfb1ab modules/generic/meta-maintainers.nix: Remove Nixpkgs prefix from module path
This is a functional change, but there's no known consumer of this
interface, and if we want to trigger review request for PRs it's
convenient for these paths to be absolute

ci: Trigger review requests for module maintainers
2026-03-02 10:58:24 +01:00
luojiyin
dbb1854400 fix: typo packge -> package in maintainers.nix 2026-03-01 14:00:07 +08:00
Silvan Mosberger
b0b2c24be9 ci: First-class team package maintainer review requests
Co-Authored-By: Alexander Bantyev <alexander.bantyev@tweag.io>
2026-02-07 13:52:46 +01:00
Michael Daniels
0d74c65927 Revert "ci: First-class team package maintainer review requests"
This reverts commit 193deb8533.
2026-02-05 21:50:27 -05:00
Silvan Mosberger
193deb8533 ci: First-class team package maintainer review requests
Co-Authored-By: Alexander Bantyev <alexander.bantyev@tweag.io>
2026-02-05 14:52:47 +01:00
Michael Daniels
3711d8fc80 ci/eval/compare: don't try to get the attr of pkgs/by-name/README.md 2026-01-24 15:24:56 -05:00
Wolfgang Walther
6b5e6cbbee ci/github-script/labels: set maintainer labels from latest maintainer map
Instead of setting the maintainer-related labels based entirely on Eval
results, this uses the new maintainer map from the target branch. This
allows labeling PRs correctly, that had been created *before* a
contributor became a maintainer of the respective package.
2025-11-01 10:36:23 +01:00
Wolfgang Walther
b5af85e10e Revert "First-class GitHub team reviews" 2025-10-28 07:38:20 +00:00
Silvan Mosberger
e6c822f51f workflows/reviewers: First-class team package maintainer review requests 2025-10-28 01:35:25 +01:00
Matt Sturgeon
9ea88ca354 ci/eval/compare/maintainers: simplify meta.position predicate 2025-10-22 21:11:19 +01:00
Wolfgang Walther
6d564102b7 ci/eval/compare/maintainers: fix maintainer pings without meta.position
In a recent change, the path matching was simplified in maintainers.nix.
This revealed a pre-existing logic bug: Packages without `meta.position`
would get an empty string as their file name. The change would then
cause this empty string to always be matched, which lead to maintainer
pings for these packages in seemingly random PRs, when some of their
dependencies were changed.
2025-10-22 21:06:53 +02:00
Wolfgang Walther
6a26c66335 ci/eval/compare/maintainers: disable aliases
We should never try to ping maintainers through package aliases, this
can only lead to errors. One example case is, where an attribute is a
throw alias, but then re-introduced in a PR. This would trigger the
throw. By disabling aliases, we can fallback gracefully.
2025-10-22 13:33:41 +02:00
Wolfgang Walther
f33892fcc9 ci/eval/compare/maintainers: ping by-name reviewers for pure refactors
This allows requesting reviewers for pure refactor PRs, which don't
cause a rebuild of the package. This is only possible for by-name,
because only here the package names can be inferred from the filenames.
2025-10-17 16:37:14 +02:00
Wolfgang Walther
0a5ffcdf31 ci/eval/compare/maintainers: ping by-name reviewers for all rebuilds
This adds support to ping maintainers when arbitrary files in by-name
are changed, as long as they still cause a rebuild. For example, this is
the case when changing .json files with version metadata. These were
previously not detected as belonging to the package, and didn't cause
maintainer pings.
2025-10-17 16:37:09 +02:00
Wolfgang Walther
7c865ddd46 ci/eval/compare/maintainers: refactor path matching
The only reason for the additional `lib.hasSuffix` check was, that the
`lib.removePrefix` was broken - it was never adjusted when porting this
from ofborg, so the relative path was wrong and no prefix ever removed,
since no packages are in `ci/`.

This additionally strips the leading `/`, so that `relevantFilenames`
will then have paths starting with `pkgs/...`, similar to how git
reports those paths in the `changedpathsjson` file. This allows simple
equality comparison.
2025-10-17 16:37:04 +02:00
Wolfgang Walther
79029e39a4 ci/eval/compare/maintainers: refactor using lib
Removes unused code and comments, uses shorter lib over builtins and
switches to `lib.importJSON`.

Readability is key.
2025-10-17 16:37:00 +02:00
Wolfgang Walther
44e4c1ba9f maintainers/scripts/get-maintainer-pings-between: drop
This has been broken for months, since all the interface to `ci/eval`
changed. Nobody noticed, so nobody is using it.
2025-10-16 13:36:42 +02:00
NAHO
dec908b169 treewide: remove optional builtins prefixes from prelude functions
Remove optional builtins prefixes from prelude functions by running:

    builtins=(
      abort
      baseNameOf
      break
      derivation
      derivationStrict
      dirOf
      false
      fetchGit
      fetchMercurial
      fetchTarball
      fetchTree
      fromTOML
      import
      isNull
      map
      null
      placeholder
      removeAttrs
      scopedImport
      throw
      toString
      true
    )

    fd --type file --exec-batch sed --in-place --regexp-extended "
      s/\<builtins\.($(
        printf '%s\n' "${builtins[@]}" |
          paste --delimiter '|' --serial -
      ))\>/\1/g
    "

    nix fmt
2025-09-30 09:05:08 +02:00
Wolfgang Walther
5c4608656e top-level/release-outpaths: move to ci/eval & refactor (#439221) 2025-09-03 16:27:37 +00:00
Wolfgang Walther
f2ca5796de ci/eval/compare: handle missing packages
Not all packages that are reported as changed will actually exist on the
platform that the maintainers are colleted on.

This is the case for some attributes that are only available on Darwin
or explicitly set to `null` on Linux. By filtering out packages without
maintainers, these are ignored - and we should potentially get a small
performance improvement as well.
2025-09-01 15:50:05 +02:00
Wolfgang Walther
2aae142529 ci/eval: remove ofborg references
By now, these files have been changed enough to not need the "vendored
from" notes anymore. These links would still be there when going through
the history of the file, but today GHA CI has not many similarities
anymore to what ofborg did, so these are not really helpful.
2025-08-31 12:15:06 +02:00
Wolfgang Walther
4126ef7e00 ci/eval/compare: refactor
Simplification after the last step.
2025-08-30 17:56:35 +02:00
Wolfgang Walther
e88dd3a8b2 ci/eval/compare: only check changed attrpaths
It makes no sense to check newly added attrpaths for maintainers on the
target branch - by definition these attrpaths won't exist, yet. We can
avoid falling back to `null` for these etc.
2025-08-30 17:56:30 +02:00
Wolfgang Walther
0753aa4580 ci/eval/compare: remove package validity check
This should not be necessary anymore, because packages that fail to
evaluate should already be filtered out by the attrpath generation step
in main eval.
2025-08-30 17:56:27 +02:00
Wolfgang Walther
540e188796 ci/eval/compare: ping maintainers of removed packages
This change pings maintainers of actually removed packages, aka where
the package's expression is deleted.

This will not ping maintainers of packages that become invisible,
because a (transitive) dependency of them is marked as insecure or
broken.
2025-08-30 15:24:13 +02:00
Wolfgang Walther
d87d760dfa ci/eval.compare: use lib from pinned nixpkgs
compare/maintainers.nix needs to access the current checkout to check
attrpaths, but makes the mistake of using lib from that checkout as
well. All other code in ci/ uses the pinned nixpkgs instance, so
maintainers.nix should do so as well.
2025-05-24 12:36:15 +02:00
Morgan Jones
92bd743239 ci/eval: use correct maintainer and team positions
We need to pass through the maintainers and teams positions from the
original meta so pings work correctly, since check-meta clobbers the
original attribute positions in them.

Tested with `maintainers/scripts/get-maintainer-pings-between.sh` on a
handful of major packages maintained by both individuals and teams.
2025-05-05 23:45:13 -07:00
Morgan Jones
e5306ea0ae ci/eval/compare: support optional byName argument
Sometimes it is quite useful to output names instead of GitHub IDs, e.g.
for maintainer scripts that show you who you would ping. Add this as an
option, but keep the existing default.
2025-04-17 23:54:29 -07:00
Tristan Ross
a71ef34c09 ci/eval/compare: add meta.teams 2025-04-17 23:54:29 -07:00
Silvan Mosberger
799273bf13 ci/eval/compare: Ignore null packages
CI can fail to evaluate if a package is null:
https://github.com/NixOS/nixpkgs/actions/runs/13209876145/job/36881335314?pr=380228
2025-02-11 21:24:28 +01:00
Silvan Mosberger
80e011146b ci/eval/compare: Improve performance and avoid large stacks
Various improvements such as:
1. Avoiding deduplications when there can't be any duplicates
2. Avoiding O(n^2) deduplications
3. Using builtins.any to avoid list allocations
4. Using builtins.concatMap instead of lib.flatten when it's known that there's only one level of nesting
5. Using builtins.groupBy instead of folding with an accumulator

In particular 5. should fix CI exceeding the stack size on staging: https://github.com/NixOS/nixpkgs/actions/runs/12989244871/job/36240781244?pr=377253

While 2. in particular should make CI a lot faster.
2025-01-28 17:05:11 +01:00
Silvan Mosberger
0fe2e3f0e3 maintainers.nix: Remove unused code 2025-01-27 19:07:24 +01:00
Silvan Mosberger
b844cba4e6 workflows/eval: Use maintainer GitHub IDs for review requests of changed packages
The handles can change over time and there's nothing guaranteeing the
ones in the maintainer list are up-to-date. In comparison GitHub IDs
never change.
2024-12-18 22:13:48 +01:00
Silvan Mosberger
b9d800d468 workflows/eval: Request reviews from changed package maintainers
Currently we need to rely on ofborg requesting reviews from package
maintainers, which takes a while with ofborg's eval queue. Since
recently we're doing faster evaluations with GitHub Actions, which contain all
necessary information to determine reviewers of changed packages the
same way ofborg does. This PR takes advantage of that.
2024-12-18 22:13:37 +01:00