On Fri, Nov 05, 2010 at 05:55:34PM -0700, Kees Cook wrote:
> Package: sbuild
> Version: 0.60.2-1
> Severity: normal
> User: ubuntu-de...@lists.ubuntu.com
> Usertags: origin-ubuntu natty
> 
> It seems that the ESSENTIAL dep resolution breaks me (at least on Ubuntu).
> I had to "exit 1" from install_essential() to restore my ability to build
> (0.60.0 was working fine).

That attached patch is a crude attempt to find and eliminate
provided virtual packages before we try to install them.
If you could try it (against current git master), that would
be great.

I could still do with the debug output and other tests from
my earlier mails, though.


Thanks,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linux             http://people.debian.org/~rleigh/
 `. `'   Printing on GNU/Linux?       http://gutenprint.sourceforge.net/
   `-    GPG Public Key: 0x25BFB848   Please GPG sign your mail.
diff --git a/lib/Sbuild/InternalResolver.pm b/lib/Sbuild/InternalResolver.pm
index 697e933..ef144f5 100644
--- a/lib/Sbuild/InternalResolver.pm
+++ b/lib/Sbuild/InternalResolver.pm
@@ -113,7 +113,7 @@ sub install_deps {
     if ($self->get_conf('RESOLVE_VIRTUAL')) {
 	debug("Finding virtual packages\n");
 	if (!$self->virtual_dependencies(\...@positive)) {
-	    $builder->log("Package installation not possible\n");
+	    $builder->log("Package installation not possible: failed to find virtual dependencies\n");
 	    return 0;
 	}
     }
@@ -315,6 +315,21 @@ sub filter_dependencies {
 		($d->{'Package'}, $d->{'Rel'}, $d->{'Version'});
 	    my $stat = $status->{$name};
 	    if (!$stat->{'Installed'}) {
+		my @virtuals = $self->get_virtual($name);
+		my $vstatus = $self->get_dpkg_status(@virtuals);
+		foreach my $vpkg (@virtuals) {
+		    my $vstat = $vstatus->{$vpkg};
+		    if ($vpkg ne $name &&
+			$vstat->{'Installed'}) {
+			debug("$name: pos dep, provided by $vpkg\n");
+			$builder->log("$name: provided by $vpkg\n");
+			$is_satisfied = 1;
+			last;
+		    }
+		}
+
+		last if ($is_satisfied);
+
 		debug("$name: pos dep, not installed\n");
 		$builder->log("$name: missing\n");
 

Attachment: signature.asc
Description: Digital signature

Reply via email to