]> git.saurik.com Git - apt.git/commitdiff
do not ignore differently versioned self-provides
authorDavid Kalnischkies <david@kalnischkies.de>
Sun, 13 Sep 2015 09:58:53 +0000 (11:58 +0200)
committerDavid Kalnischkies <david@kalnischkies.de>
Mon, 14 Sep 2015 13:22:19 +0000 (15:22 +0200)
Reported-By: Konomi on IRC
apt-pkg/pkgcachegen.cc
test/integration/test-bug-758153-versioned-provides-support

index 89b4c4bae2475d6aa5726bbe3fb02258a4fe5efd..69c8fd105f67122b8b0371241140a0a9f917164e 100644 (file)
@@ -1070,7 +1070,8 @@ bool pkgCacheListParser::NewProvides(pkgCache::VerIterator &Ver,
 
    // We do not add self referencing provides
    if (Ver.ParentPkg().Name() == PkgName && (PkgArch == Ver.ParentPkg().Arch() ||
-       (PkgArch == "all" && strcmp((Cache.StrP + Cache.HeaderP->Architecture), Ver.ParentPkg().Arch()) == 0)))
+       (PkgArch == "all" && strcmp((Cache.StrP + Cache.HeaderP->Architecture), Ver.ParentPkg().Arch()) == 0)) &&
+        (Version.empty() || Version == Ver.VerStr()))
       return true;
 
    // Locate the target package
index 0be7ced8c3d994e1ddae600d95cd2082bee8fe2d..af8c863bb3a27185702812435d2607400602dc99 100755 (executable)
@@ -42,6 +42,12 @@ insertpackage 'unstable' 'virtualnext3' 'amd64' '1' 'Multi-Arch: no
 Provides: next3 (= 2)'
 insertpackage 'unstable' 'needsnext3' 'amd64,i386' '2' 'Depends: next3 (>= 2)'
 
+insertpackage 'unstable' 'selfprov' 'amd64' '2' 'Provides: selfprov (= 1)'
+insertpackage 'unstable' 'needsselfprov1' 'amd64' '1' 'Depends: selfprov (= 1)'
+insertpackage 'unstable' 'needsselfprov2' 'amd64' '1' 'Depends: selfprov (= 2)'
+insertpackage 'unstable' 'needsselfprov12' 'amd64' '1' 'Depends: selfprov (= 1), selfprov (= 2)'
+insertpackage 'unstable' 'needsselfprov123' 'amd64' '1' 'Depends: selfprov (= 1), selfprov (= 2), selfprov (= 3)'
+
 setupaptarchive
 
 testsuccessequal 'Reading package lists...
@@ -288,3 +294,48 @@ The following information may help to resolve the situation:
 The following packages have unmet dependencies:
  needsnext3:i386 : Depends: next3:i386 (>= 2) but it is not installable
 E: Unable to correct problems, you have held broken packages.' aptget install needsnext3:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+  selfprov
+The following NEW packages will be installed:
+  needsselfprov1 selfprov
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst selfprov (2 unstable [amd64])
+Inst needsselfprov1 (1 unstable [amd64])
+Conf selfprov (2 unstable [amd64])
+Conf needsselfprov1 (1 unstable [amd64])' aptget install needsselfprov1 -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+  selfprov
+The following NEW packages will be installed:
+  needsselfprov2 selfprov
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst selfprov (2 unstable [amd64])
+Inst needsselfprov2 (1 unstable [amd64])
+Conf selfprov (2 unstable [amd64])
+Conf needsselfprov2 (1 unstable [amd64])' aptget install needsselfprov2 -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+  selfprov
+The following NEW packages will be installed:
+  needsselfprov12 selfprov
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst selfprov (2 unstable [amd64])
+Inst needsselfprov12 (1 unstable [amd64])
+Conf selfprov (2 unstable [amd64])
+Conf needsselfprov12 (1 unstable [amd64])' aptget install needsselfprov12 -s
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Some packages could not be installed. This may mean that you have
+requested an impossible situation or if you are using the unstable
+distribution that some required packages have not yet been created
+or been moved out of Incoming.
+The following information may help to resolve the situation:
+
+The following packages have unmet dependencies:
+ needsselfprov123 : Depends: selfprov (= 3)
+E: Unable to correct problems, you have held broken packages.' aptget install needsselfprov123 -s