diff options
author | David Kalnischkies <david@kalnischkies.de> | 2015-09-05 12:58:04 +0200 |
---|---|---|
committer | David Kalnischkies <david@kalnischkies.de> | 2015-09-14 15:22:18 +0200 |
commit | f6ce7ffce526432a855166074332f97b37ad98db (patch) | |
tree | 104eb431835c1cc1c7f6957fc27f3f8fada31976 /apt-pkg | |
parent | 1501a2c9d8672775bc3f706a17ee1a4a534ca1dd (diff) |
store ':any' pseudo-packages with 'any' as architecture
Previously we had python:any:amd64, python:any:i386, … in the cache and
the dependencies of an amd64 package would be on python:any:amd64, of an
i386 on python:any:i386 and so on. That seems like a relatively
pointless endeavor given that they will all be provided by the same
packages and therefore also a waste of space.
Git-Dch: Ignore
Diffstat (limited to 'apt-pkg')
-rw-r--r-- | apt-pkg/deb/deblistparser.cc | 9 | ||||
-rw-r--r-- | apt-pkg/pkgcache.cc | 2 |
2 files changed, 8 insertions, 3 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; |