- support for debian dependency choices
authorMichael Schröder <mls@suse.de>
Mon, 12 Feb 2007 19:22:34 +0000 (19:22 +0000)
committerMichael Schröder <mls@suse.de>
Mon, 12 Feb 2007 19:22:34 +0000 (19:22 +0000)
- do not create changelog dates < 1997

Build.pm
changelog2spec

index b21b0d9..b51f809 100644 (file)
--- a/Build.pm
+++ b/Build.pm
@@ -281,6 +281,13 @@ sub readrpmdeps {
   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;
 }
@@ -359,6 +366,17 @@ sub expand {
            @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";
index 60dac7b..1f6b18b 100755 (executable)
@@ -82,6 +82,9 @@ while (<>) {
     }
     $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;