From 30dbdffcb51730949cb03cb483fac32163658861 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Thu, 17 Feb 2022 12:21:31 +0100 Subject: [PATCH] maintainers/scripts/update.nix: Fix deduplication for unstableGitUpdater Some updaters like `unstableGitUpdater` rely solely `UPDATE_NIX_ATTR_PATH` environment variable to find out package attribute so they all have the same `passthru.updateScript`. This means we cannot rely on that attribute to filter out aliased packages because it would consider all packages using `unstableGitUpdater` the same. We need to use different criterion to distinguish them. `meta.position` is a reasonable candidate but we cannot always utilize it since it might not be available or it might be shared among multiple packages (e.g. when using custom mkDerivation wrapper). Combination of the two attributes should distinguish most cases. Fixes: https://github.com/NixOS/nixpkgs/issues/112583 --- maintainers/scripts/update.nix | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/maintainers/scripts/update.nix b/maintainers/scripts/update.nix index d881d68301ba..1217d10999c7 100755 --- a/maintainers/scripts/update.nix +++ b/maintainers/scripts/update.nix @@ -48,7 +48,17 @@ let let result = builtins.tryEval pathContent; - dedupResults = lst: nubOn ({ package, attrPath }: package.updateScript) (lib.concatLists lst); + somewhatUniqueRepresentant = + { package, attrPath }: { + inherit (package) updateScript; + # Some updaters use the same `updateScript` value for all packages. + # Also compare `meta.description`. + position = package.meta.position or null; + # We cannot always use `meta.position` since it might not be available + # or it might be shared among multiple packages. + }; + + dedupResults = lst: nubOn somewhatUniqueRepresentant (lib.concatLists lst); in if result.success then let