diff --git a/ci/eval/compare/default.nix b/ci/eval/compare/default.nix index 0c55b01c7160..b844d45f5902 100644 --- a/ci/eval/compare/default.nix +++ b/ci/eval/compare/default.nix @@ -69,7 +69,6 @@ let groupByPlatform extractPackageNames getLabels - uniqueStrings ; getAttrs = dir: builtins.fromJSON (builtins.readFile "${dir}/outpaths.json"); @@ -81,7 +80,7 @@ let # - values: lists of `packagePlatformPath`s diffAttrs = diff beforeAttrs afterAttrs; - rebuilds = uniqueStrings (diffAttrs.added ++ diffAttrs.changed); + rebuilds = diffAttrs.added ++ diffAttrs.changed; rebuildsPackagePlatformAttrs = convertToPackagePlatformAttrs rebuilds; changed-paths = @@ -110,7 +109,7 @@ let ); maintainers = import ./maintainers.nix { - changedattrs = lib.unique (map (a: a.packagePath) rebuildsPackagePlatformAttrs); + changedattrs = lib.attrNames (lib.groupBy (a: a.name) rebuildsPackagePlatformAttrs); changedpathsjson = touchedFilesJson; }; in diff --git a/ci/eval/compare/maintainers.nix b/ci/eval/compare/maintainers.nix index 188d8b635729..64025c066f96 100644 --- a/ci/eval/compare/maintainers.nix +++ b/ci/eval/compare/maintainers.nix @@ -11,17 +11,13 @@ let changedpaths = builtins.fromJSON (builtins.readFile changedpathsjson); anyMatchingFile = - filename: - let - matching = builtins.filter (changed: lib.strings.hasSuffix changed filename) changedpaths; - in - (builtins.length matching) > 0; + filename: builtins.any (changed: lib.strings.hasSuffix changed filename) changedpaths; - anyMatchingFiles = files: (builtins.length (builtins.filter anyMatchingFile files)) > 0; + anyMatchingFiles = files: builtins.any anyMatchingFile files; - enrichedAttrs = builtins.map (path: { - path = path; - name = builtins.concatStringsSep "." path; + enrichedAttrs = builtins.map (name: { + path = lib.splitString "." name; + name = name; }) changedattrs; validPackageAttributes = builtins.filter ( @@ -80,27 +76,16 @@ let attrsWithModifiedFiles = builtins.filter (pkg: anyMatchingFiles pkg.filenames) attrsWithFilenames; - listToPing = lib.lists.flatten ( - builtins.map ( - pkg: - builtins.map (maintainer: { - id = maintainer.githubId; - packageName = pkg.name; - dueToFiles = pkg.filenames; - }) pkg.maintainers - ) attrsWithModifiedFiles - ); - - byMaintainer = lib.lists.foldr ( - ping: collector: - collector - // { - "${toString ping.id}" = [ - { inherit (ping) packageName dueToFiles; } - ] ++ (collector."${toString ping.id}" or [ ]); - } - ) { } listToPing; + listToPing = lib.concatMap ( + pkg: + builtins.map (maintainer: { + id = maintainer.githubId; + packageName = pkg.name; + dueToFiles = pkg.filenames; + }) pkg.maintainers + ) attrsWithModifiedFiles; + byMaintainer = lib.groupBy (ping: toString ping.id) listToPing; packagesPerMaintainer = lib.attrsets.mapAttrs ( maintainer: packages: builtins.map (pkg: pkg.packageName) packages