tags 586275 + patch
thanks

I prepared a patch for this bug which seems to work at least for my
problem:

1. Grab libdatetime-perl_2:0.5900-1 from the archive.
2. Change
     libmodule-build-perl (>= 0.360100)
   to
     libmodule-build-perl (>= 0.360100) | perl (>= 5.12)
   in the Build-Depends field in debian/control.
3. Try to build the package with sbuild's internal resolver.

Expected behavior:
sbuild will be able to build the package and resolve dependencies in the
same way.

Observed behavior:
Building the package will abort with the following error message:

  perl: already installed (5.10.1-13)
  debhelper: missing
  Using default version 7.9.3
  libmodule-build-perl: non-matching version installed (~*=PROVIDED=*= ! >= 
0.360100)
  Using default version 0.360700-1
  perl: non-matching version installed (5.10.1-13 ! >= 5.12)
  Default version of perl not sufficient, Package installation not possible
  Source-dependencies not satisfied; skipping libdatetime-perl

After the patch is applied, sbuild is happy to only install the default
version of libmodule-build-perl and ignore the alternative dependency on
perl:

  perl: already installed (5.10.1-13)
  debhelper: missing
  Using default version 7.9.3
  libmodule-build-perl: non-matching version installed (~*=PROVIDED=*= ! >= 
0.360100)
  Using default version 0.360700-1
  perl: already installed (5.10.1-13 >= 5.10.1 is satisfied)
  libparams-validate-perl: missing
  libdatetime-locale-perl: missing
  Using default version 1:0.45-1
  libdatetime-timezone-perl: missing
  Using default version 1:1.19-1+2010j
  libtest-exception-perl: missing
  libtest-warn-perl: missing

Note that I have not looked at the code in all detail and thus the patch
might break in other cases.

Regards,
Ansgar
>From b9241c2d724d68399eb0d4923e109b1be503068f Mon Sep 17 00:00:00 2001
From: Ansgar Burchardt <ans...@43-1.org>
Date: Mon, 5 Jul 2010 17:35:27 +0900
Subject: [PATCH] Do not try other alternatives if installing default version is enough

When we encounter

  Build-Depends: pkg-a (>= 2) | pkg-b (>= 3)

and a lower version of pkg-a is already installed (or provided by
another package), sbuild would try to upgrade pkg-b as well.

This patch changes the behaviour of sbuild to not try satisfying
alternative dependencies if the dependency can be satisfied by
installing the default version.

Bug-Debian: http://bugs.debian.org/586275
Signed-off-by: Ansgar Burchardt <ans...@43-1.org>
---
 lib/Sbuild/InternalBuildDepSatisfier.pm |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/lib/Sbuild/InternalBuildDepSatisfier.pm b/lib/Sbuild/InternalBuildDepSatisfier.pm
index 335a03c..49f8e95 100644
--- a/lib/Sbuild/InternalBuildDepSatisfier.pm
+++ b/lib/Sbuild/InternalBuildDepSatisfier.pm
@@ -281,6 +281,8 @@ sub filter_dependencies {
 		    return 0;
 		} else {
 		    $builder->log("Using default version " . $policy->{$name}->{defversion} . "\n");
+		    $upgradeable = $name if !$upgradeable;
+		    last;
 		}
 		$upgradeable = $name if !$upgradeable;
 	    }
-- 
1.7.1

Reply via email to