Add Multi-Arch: allowed support by creating an implicit provide of
authorDavid Kalnischkies <kalnischkies@gmail.com>
Thu, 11 Feb 2010 11:19:48 +0000 (12:19 +0100)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Thu, 11 Feb 2010 11:19:48 +0000 (12:19 +0100)
name:any for such packages, so dependencies in this style can be
easily resolved.

apt-pkg/deb/deblistparser.cc
apt-pkg/pkgcache.cc

index b6082cd..3726a6a 100644 (file)
@@ -642,6 +642,12 @@ bool debListParser::ParseProvides(pkgCache::VerIterator Ver)
       }
    }
 
+   if (Ver->MultiArch == pkgCache::Version::Allowed)
+   {
+      string const Package = string(Ver.ParentPkg().Name()).append(":").append("any");
+      NewProvides(Ver, Package, "any", Ver.VerStr());
+   }
+
    if (Ver->MultiArch != pkgCache::Version::Foreign)
       return true;
 
index 7d98869..2d4ee10 100644 (file)
@@ -186,7 +186,10 @@ pkgCache::PkgIterator pkgCache::FindPkg(const string &Name) {
        size_t const found = Name.find(':');
        if (found == string::npos)
                return FindPkg(Name, "native");
-       return FindPkg(Name.substr(0, found), Name.substr(found+1, string::npos));
+       string const Arch = Name.substr(found+1);
+       if (Arch == "any")
+               return FindPkg(Name, "any");
+       return FindPkg(Name.substr(0, found), Arch);
 }
                                                                        /*}}}*/
 // Cache::FindPkg - Locate a package by name                           /*{{{*/