[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: AudoDepWait also for "==", not only ">="?



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


Reply to: