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

* apt-pkg/pkgcachegen.cc:
- make "all"->"native" an implementation detail of NewPackage
rather than rewrite it in higher methods

David Kalnischkies лет назад: 15
Родитель
Сommit
566046f403
3 измененных файлов с 9 добавлено и 10 удалено
  1. 1 1
      apt-pkg/pkgcache.cc
  2. 4 8
      apt-pkg/pkgcachegen.cc
  3. 4 1
      debian/changelog

+ 1 - 1
apt-pkg/pkgcache.cc

@@ -321,7 +321,7 @@ pkgCache::PkgIterator pkgCache::GrpIterator::FindPkg(string Arch) const {
 	/* Most of the time the package for our native architecture is
 	/* Most of the time the package for our native architecture is
 	   the one we add at first to the cache, but this would be the
 	   the one we add at first to the cache, but this would be the
 	   last one we check, so we do it now. */
 	   last one we check, so we do it now. */
-	if (Arch == "native" || Arch == myArch) {
+	if (Arch == "native" || Arch == myArch || Arch == "all") {
 		Arch = myArch;
 		Arch = myArch;
 		pkgCache::Package *Pkg = Owner->PkgP + S->LastPackage;
 		pkgCache::Package *Pkg = Owner->PkgP + S->LastPackage;
 		if (stringcasecmp(Arch, Owner->StrP + Pkg->Arch) == 0)
 		if (stringcasecmp(Arch, Owner->StrP + Pkg->Arch) == 0)

+ 4 - 8
apt-pkg/pkgcachegen.cc

@@ -178,12 +178,7 @@ bool pkgCacheGenerator::MergeList(ListParser &List,
       if (PackageName.empty() == true)
       if (PackageName.empty() == true)
 	 return false;
 	 return false;
 
 
-      /* Treat Arch all packages as the same as the native arch. */
-      string Arch;
-      if (List.ArchitectureAll() == true)
-	 Arch = _config->Find("APT::Architecture");
-      else
-	 Arch = List.Architecture();
+      string const Arch = List.Architecture();
  
  
       // Get a pointer to the package structure
       // Get a pointer to the package structure
       pkgCache::PkgIterator Pkg;
       pkgCache::PkgIterator Pkg;
@@ -484,7 +479,7 @@ bool pkgCacheGenerator::NewPackage(pkgCache::PkgIterator &Pkg,const string &Name
    // Set the name, arch and the ID
    // Set the name, arch and the ID
    Pkg->Name = Grp->Name;
    Pkg->Name = Grp->Name;
    Pkg->Group = Grp.Index();
    Pkg->Group = Grp.Index();
-   map_ptrloc const idxArch = WriteUniqString(Arch.c_str());
+   map_ptrloc const idxArch = WriteUniqString((Arch == "all") ? _config->Find("APT::Architecture") : Arch.c_str());
    if (unlikely(idxArch == 0))
    if (unlikely(idxArch == 0))
       return false;
       return false;
    Pkg->Arch = idxArch;
    Pkg->Arch = idxArch;
@@ -787,7 +782,8 @@ bool pkgCacheGenerator::ListParser::NewProvides(pkgCache::VerIterator &Ver,
    pkgCache &Cache = Owner->Cache;
    pkgCache &Cache = Owner->Cache;
 
 
    // We do not add self referencing provides
    // We do not add self referencing provides
-   if (Ver.ParentPkg().Name() == PkgName && PkgArch == Ver.Arch())
+   if (Ver.ParentPkg().Name() == PkgName && (PkgArch == Ver.ParentPkg().Arch() ||
+	(PkgArch == "all" && _config->Find("APT::Architecture") == Ver.ParentPkg().Arch())))
       return true;
       return true;
    
    
    // Get a structure
    // Get a structure

+ 4 - 1
debian/changelog

@@ -15,8 +15,11 @@ apt (0.8.13.1) UNRELEASED; urgency=low
       as suggested by Charles Plessy (Closes: #619083)
       as suggested by Charles Plessy (Closes: #619083)
   * apt-pkg/depcache.cc:
   * apt-pkg/depcache.cc:
     - remove pseudo handling leftover from SetReInstall
     - remove pseudo handling leftover from SetReInstall
+  * apt-pkg/pkgcachegen.cc:
+    - make "all"->"native" an implementation detail of NewPackage
+      rather than rewrite it in higher methods
 
 
- -- David Kalnischkies <kalnischkies@gmail.com>  Fri, 25 Mar 2011 20:06:03 +0100
+ -- David Kalnischkies <kalnischkies@gmail.com>  Fri, 25 Mar 2011 20:15:18 +0100
 
 
 apt (0.8.13) unstable; urgency=low
 apt (0.8.13) unstable; urgency=low