Hi,
I think I found a way to handle this gracefully in wanna-build:
Am Samstag, den 12.07.2008, 00:29 +0200 schrieb Luk Claes:
> > So I conclude that Dep-Wait on exact versions are cleared when the
> > appropriate binaries appear in the archive.
>
> Sure, that's not the problem. The problem appears when the appropriate
> binaries don't appear in the archive.
>
> For instance when xmonad 0.7-1 and xmonad-contrib 0.7-1 are initially in
> the archive, xmonad-contrib 0.7-2 gets uploaded, but has some issue so
> xmonad-contrib 0.7-3 is uploaded and xmonad 0.7-3 gets uploaded.
>
> In this case the dep-wait will still be xmonad == 0.7-2 which never got
> uploaded.
I assume this is because originally, Dep-Waits were set manually and
therefore should be sticky, i.e. not automatically overriden by new
uploads, which makes sense. But it is somewhat different with automatic
Dep-Waits: These are set by wanna-build, and therefore wanna-build
should update them when it knows better.
Manual and automatic Dep-Waits can easily be distinguished by the
existence of a 'Builder' field, recording who did the change. If that
does not exist, the Dep-Wait was set automatically and should be updated
on new source uploads.
Here are the required changes
--- ../wanna-build/wanna-build 2008-06-05 16:34:30.000000000 +0200
+++ wanna-build 2008-07-15 22:15:18.000000000 +0200
@@ -1447,7 +1447,9 @@
if (defined($pkg) &&
$pkg->{'State'} =~ /^Dep-Wait/ &&
- version_less( $pkg->{'Version'}, $version )) {
+ version_less( $pkg->{'Version'}, $version ) &&
+ exists($pkg->{'Builder'})) {
+ # We have a manual Dep-Wait, so lets keep that
change_state( \$pkg, 'Dep-Wait' );
$pkg->{'Version'} = $version;
delete $pkg->{'Binary-NMU-Version'};
@@ -2422,7 +2424,7 @@
my $dep = $$newdeps{$_};
# ensure we're not waiting on ourselves, or a package that has been removed
next if (not defined($merge_binsrc{$dep->{'Package'}})) or ($merge_binsrc{$dep->{'Package'}} eq $key);
- if ($dep->{'Rel'} =~ '^>') {
+ if ($dep->{'Rel'} =~ '^[>=]') {
$deplist->{$dep->{'Package'}} = $dep;
$change++;
}
I did some tests, and indeed it catches the case from above: After the
0.7-3 sources are uploaded, the Dep-Wait is changed from “xmonad ==
0.7-2” to “xmonad == 0.7-3”, even though a xmonad_0.7-2 has never been
seen.
What do you think?
Greetings,
Joachim
--
Joachim "nomeata" Breitner
Debian Developer
nomeata@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
JID: nomeata@joachim-breitner.de | http://people.debian.org/~nomeata
Attachment:
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil