Aggregate constituents are derivations. However there can be multiple builds in an evaluation that have the same derivation, i.e. they can alias each other (e.g. "emacs", "emacs24" and "emacs24Packages.emacs" in Nixpkgs). Previously we picked a build arbitrarily for the AggregateConstituents table. Now we pick the one with the shortest name (e.g. "emacs").
JCJJKRWQN7XLV65FQEW4YBGI24IP6PFILISCMDWPXT7YEMEMDUAAC JTHWA6AM6UU4ZVWBH2JKUVFR743LVIMRU7IMDUVDLN4M3K7MR4XQC RXVJFQ5AV3WME4HDVBPSRCALQTXROT4KQPOQVO6KTWTBNZIZZGPAC FTPCV25MOLQUNR5CAR453W7T7QTUZRLPLEOSDZ5HSDFAXQZVHOYQC OOQ2D3KCLFPYNAN253PHWLBQMB6OMO2KYQWQXLTP65SQAYZWQ5LAC 3XTHEUMP2ZOMPQWE3S5QWHIHCEJNEXGDPQB3JUVZFPS3RFMY455QC N22GPKYTOLZLBGTGDATQDVZ4R5APZEAOIA7L32X4UXBH4XNI7MWAC while (my ($id, $x) = each %buildMap) {$ev->jobsetevalmembers->create({ build => $id, isnew => $x->{new} });}# Create AggregateConstituents mappings. Since there can# be jobs that alias each other, if there are multiple# builds for the same derivation, pick the one with the# shortest name.
$ev->jobsetevalmembers->create({ build => $id, isnew => $x->{new} });$drvPathToId{$x->{drvPath}} = $id;
my $y = $drvPathToId{$x->{drvPath}};if (defined $y) {next if length $x->{jobName} > length $y->{jobName};next if length $x->{jobName} == length $y->{jobName} && $x->{jobName} ge $y->{jobName};}$drvPathToId{$x->{drvPath}} = $x;