Loading ci/eval/compare/default.nix +3 −4 Original line number Diff line number Diff line Loading @@ -73,12 +73,11 @@ let ; # Attrs # - keys: "added", "changed" and "removed" # - keys: "added", "changed", "removed" and "rebuilds" # - values: lists of `packagePlatformPath`s diffAttrs = builtins.fromJSON (builtins.readFile "${combinedDir}/combined-diff.json"); rebuilds = diffAttrs.added ++ diffAttrs.changed; rebuildsPackagePlatformAttrs = convertToPackagePlatformAttrs rebuilds; rebuildsPackagePlatformAttrs = convertToPackagePlatformAttrs diffAttrs.rebuilds; changed-paths = let Loading @@ -90,7 +89,7 @@ let in writeText "changed-paths.json" ( builtins.toJSON { attrdiff = lib.mapAttrs (_: extractPackageNames) diffAttrs; attrdiff = lib.mapAttrs (_: extractPackageNames) { inherit (diffAttrs) added changed removed; }; inherit rebuildsByPlatform rebuildsByKernel Loading ci/eval/default.nix +2 −1 Original line number Diff line number Diff line Loading @@ -218,7 +218,8 @@ let reduce .[] as $item ({}; { added: (.added + $item.added), changed: (.changed + $item.changed), removed: (.removed + $item.removed) removed: (.removed + $item.removed), rebuilds: (.rebuilds + $item.rebuilds) }) ' > $out/combined-diff.json Loading ci/eval/diff.nix +18 −1 Original line number Diff line number Diff line Loading @@ -18,13 +18,20 @@ let added: [ <keys only in the second object> ], removed: [ <keys only in the first object> ], changed: [ <keys with different values between the two objects> ], rebuilds: [ <keys in the second object with values not present at all in first object> ], } */ diff = old: new: let filterKeys = cond: attrs: lib.attrNames (lib.filterAttrs cond attrs); oldOutputs = lib.pipe old [ (lib.mapAttrsToList (_: lib.attrValues)) lib.concatLists (lib.flip lib.genAttrs (_: true)) ]; in old: new: { { added = filterKeys (n: _: !(old ? ${n})) new; removed = filterKeys (n: _: !(new ? ${n})) old; changed = filterKeys ( Loading @@ -35,6 +42,16 @@ let # Filter out attributes that are the same as the new value && (v != (new.${n})) ) old; # A "rebuild" is every attrpath ... rebuilds = filterKeys ( _: pkg: # ... that has at least one output ... lib.any ( output: # ... which has not been built in "old" already. !(oldOutputs ? ${output}) ) (lib.attrValues pkg) ) new; }; getAttrs = Loading Loading
ci/eval/compare/default.nix +3 −4 Original line number Diff line number Diff line Loading @@ -73,12 +73,11 @@ let ; # Attrs # - keys: "added", "changed" and "removed" # - keys: "added", "changed", "removed" and "rebuilds" # - values: lists of `packagePlatformPath`s diffAttrs = builtins.fromJSON (builtins.readFile "${combinedDir}/combined-diff.json"); rebuilds = diffAttrs.added ++ diffAttrs.changed; rebuildsPackagePlatformAttrs = convertToPackagePlatformAttrs rebuilds; rebuildsPackagePlatformAttrs = convertToPackagePlatformAttrs diffAttrs.rebuilds; changed-paths = let Loading @@ -90,7 +89,7 @@ let in writeText "changed-paths.json" ( builtins.toJSON { attrdiff = lib.mapAttrs (_: extractPackageNames) diffAttrs; attrdiff = lib.mapAttrs (_: extractPackageNames) { inherit (diffAttrs) added changed removed; }; inherit rebuildsByPlatform rebuildsByKernel Loading
ci/eval/default.nix +2 −1 Original line number Diff line number Diff line Loading @@ -218,7 +218,8 @@ let reduce .[] as $item ({}; { added: (.added + $item.added), changed: (.changed + $item.changed), removed: (.removed + $item.removed) removed: (.removed + $item.removed), rebuilds: (.rebuilds + $item.rebuilds) }) ' > $out/combined-diff.json Loading
ci/eval/diff.nix +18 −1 Original line number Diff line number Diff line Loading @@ -18,13 +18,20 @@ let added: [ <keys only in the second object> ], removed: [ <keys only in the first object> ], changed: [ <keys with different values between the two objects> ], rebuilds: [ <keys in the second object with values not present at all in first object> ], } */ diff = old: new: let filterKeys = cond: attrs: lib.attrNames (lib.filterAttrs cond attrs); oldOutputs = lib.pipe old [ (lib.mapAttrsToList (_: lib.attrValues)) lib.concatLists (lib.flip lib.genAttrs (_: true)) ]; in old: new: { { added = filterKeys (n: _: !(old ? ${n})) new; removed = filterKeys (n: _: !(new ? ${n})) old; changed = filterKeys ( Loading @@ -35,6 +42,16 @@ let # Filter out attributes that are the same as the new value && (v != (new.${n})) ) old; # A "rebuild" is every attrpath ... rebuilds = filterKeys ( _: pkg: # ... that has at least one output ... lib.any ( output: # ... which has not been built in "old" already. !(oldOutputs ? ${output}) ) (lib.attrValues pkg) ) new; }; getAttrs = Loading