for my $p (keys %prov) {
push @{$provides{$_}}, $p for unify(@{$prov{$p}});
}
+ my @ors = grep {/\|/} map {@$_} values %requires;
+ @ors = unify(@ors) if @ors > 1;
+ for my $or (@ors) {
+ my @p = map {@{$provides{$_} || []}} split(/\|/, $or);
+ @p = unify(@p) if @p > 1;
+ $provides{$or} = \@p;
+ }
$config->{'providesh'} = \%provides;
$config->{'requiresh'} = \%requires;
}
@q = @pq;
}
}
+ if (@q > 1 && $r =~ /\|/) {
+ # choice op, implicit prefer of first match...
+ my %pq = map {$_ => 1} @q;
+ for my $rr (split(/\|/, $r)) {
+ next unless $provides->{$rr};
+ my @pq = grep {$pq{$_}} @{$provides->{$rr}};
+ next unless @pq;
+ @q = @pq;
+ last;
+ }
+ }
if (@q > 1) {
if ($r ne $p) {
push @error, "have choice for $r needed by $p: @q";
}
$lastt = $tdt;
my @gm = gmtime($tdt);
+ # rpm can't hande dates < 1997, so we fold everything to
+ # Thu Jan 02 1997
+ @gm = (0, 0, 0, 2, 0, 97, 4) if $gm[5] < 97 || ($gm[5] == 97 && $gm[3] <= 1);
printf("* %s %s %2d %4d %s\n", $wday[$gm[6]], $mon[$gm[4]], $gm[3], $gm[5] + 1900, $who);
$ok = 1;
next;