diff options
-rw-r--r-- | apt-pkg/deb/deblistparser.cc | 9 | ||||
-rw-r--r-- | apt-pkg/pkgcache.cc | 2 | ||||
-rwxr-xr-x | test/integration/test-multiarch-allowed | 3 |
3 files changed, 9 insertions, 5 deletions
diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc index 7da908d75..6a802b39f 100644 --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@ -791,11 +791,16 @@ bool debListParser::ParseDepends(pkgCache::VerIterator &Ver, return _error->Error("Problem parsing dependency %s",Tag); size_t const found = Package.rfind(':'); - if (found == string::npos || strcmp(Package.c_str() + found, ":any") == 0) + if (found == string::npos) { if (NewDepends(Ver,Package,pkgArch,Version,Op,Type) == false) return false; } + else if (strcmp(Package.c_str() + found, ":any") == 0) + { + if (NewDepends(Ver,Package,"any",Version,Op,Type) == false) + return false; + } else { string Arch = Package.substr(found+1, string::npos); @@ -857,7 +862,7 @@ bool debListParser::ParseProvides(pkgCache::VerIterator &Ver) if ((Ver->MultiArch & pkgCache::Version::Allowed) == pkgCache::Version::Allowed) { string const Package = string(Ver.ParentPkg().Name()).append(":").append("any"); - return NewProvidesAllArch(Ver, Package, Ver.VerStr(), pkgCache::Flag::MultiArchImplicit); + return NewProvides(Ver, Package, "any", Ver.VerStr(), pkgCache::Flag::MultiArchImplicit); } else if ((Ver->MultiArch & pkgCache::Version::Foreign) == pkgCache::Version::Foreign) return NewProvidesAllArch(Ver, Ver.ParentPkg().Name(), Ver.VerStr(), pkgCache::Flag::MultiArchImplicit); diff --git a/apt-pkg/pkgcache.cc b/apt-pkg/pkgcache.cc index 9d3929cd9..739074910 100644 --- a/apt-pkg/pkgcache.cc +++ b/apt-pkg/pkgcache.cc @@ -546,7 +546,7 @@ std::string pkgCache::PkgIterator::FullName(bool const &Pretty) const { string fullname = Name(); if (Pretty == false || - (strcmp(Arch(), "all") != 0 && + (strcmp(Arch(), "all") != 0 && strcmp(Arch(), "any") != 0 && strcmp(Owner->NativeArch(), Arch()) != 0)) return fullname.append(":").append(Arch()); return fullname; diff --git a/test/integration/test-multiarch-allowed b/test/integration/test-multiarch-allowed index 2eb479c17..f050c1fd9 100755 --- a/test/integration/test-multiarch-allowed +++ b/test/integration/test-multiarch-allowed @@ -126,7 +126,7 @@ The following packages have unmet dependencies: E: Unable to correct problems, you have held broken packages." NEEDSFOO2FOREIGN="$BADPREFIX The following packages have unmet dependencies: - needsfoover2:i386 : Depends: foo:any:i386 (>= 2) + needsfoover2:i386 : Depends: foo:any (>= 2) E: Unable to correct problems, you have held broken packages." testfailureequal "$NEEDSFOO2NATIVE" aptget install needsfoover2 -s testfailureequal "$NEEDSFOO2FOREIGN" aptget install needsfoover2:i386 -s @@ -153,7 +153,6 @@ E: Unable to correct problems, you have held broken packages." aptget install fo testfailureequal "$BADPREFIX The following packages have unmet dependencies: hatesfooany : Conflicts: foo:any - Conflicts: foo:any:i386 E: Unable to correct problems, you have held broken packages." aptget install foo:i386 hatesfooany -s testsuccessequal 'Reading package lists... Building dependency tree... |