Просмотр исходного кода

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
Родитель
Сommit
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)
       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(':');
 	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				/*{{{*/