Преглед изворни кода

Add Multi-Arch: allowed support by creating an implicit provide of
name:any for such packages, so dependencies in this style can be
easily resolved.

David Kalnischkies пре 16 година
родитељ
комит
4d174dc84e
2 измењених фајлова са 10 додато и 1 уклоњено
  1. 6 0
      apt-pkg/deb/deblistparser.cc
  2. 4 1
      apt-pkg/pkgcache.cc

+ 6 - 0
apt-pkg/deb/deblistparser.cc

@@ -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)
    if (Ver->MultiArch != pkgCache::Version::Foreign)
       return true;
       return true;
 
 

+ 4 - 1
apt-pkg/pkgcache.cc

@@ -186,7 +186,10 @@ pkgCache::PkgIterator pkgCache::FindPkg(const string &Name) {
 	size_t const found = Name.find(':');
 	size_t const found = Name.find(':');
 	if (found == string::npos)
 	if (found == string::npos)
 		return FindPkg(Name, "native");
 		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				/*{{{*/
 // Cache::FindPkg - Locate a package by name				/*{{{*/