]> git.saurik.com Git - apt.git/commitdiff
* apt-pkg/packagemanager.cc:
authorMichael Vogt <michael.vogt@ubuntu.com>
Tue, 6 Mar 2012 13:06:38 +0000 (14:06 +0100)
committerMichael Vogt <michael.vogt@ubuntu.com>
Tue, 6 Mar 2012 13:06:38 +0000 (14:06 +0100)
  - fix bug in predepends handling - ensure that packages that needs
    unpackaging are unpacked before they are configured (LP: #927993)

1  2 
apt-pkg/packagemanager.cc
debian/changelog

index d8e9621a4a48bd5de4c2ddacfc261af6caed99a4,701b64af1d9395ec278e17c6625f01f34fc96137..0e459573543732e4ec7815ee60bacaa7afd286d9
@@@ -184,7 -184,8 +184,7 @@@ bool pkgPackageManager::CreateOrderList
         continue;
        
        // Mark the package and its dependends for immediate configuration
 -      if ((((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential ||
 -         (I->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important) &&
 +      if ((((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) &&
          NoImmConfigure == false) || ImmConfigureAll)
        {
         if(Debug && !ImmConfigureAll)
@@@ -486,8 -487,7 +486,8 @@@ bool pkgPackageManager::EarlyRemove(Pkg
  
     // Essential packages get special treatment
     bool IsEssential = false;
 -   if ((Pkg->Flags & pkgCache::Flag::Essential) != 0)
 +   if ((Pkg->Flags & pkgCache::Flag::Essential) != 0 ||
 +       (Pkg->Flags & pkgCache::Flag::Important) != 0)
        IsEssential = true;
  
     /* Check for packages that are the dependents of essential packages and 
        for (DepIterator D = Pkg.RevDependsList(); D.end() == false &&
           IsEssential == false; ++D)
         if (D->Type == pkgCache::Dep::Depends || D->Type == pkgCache::Dep::PreDepends)
 -          if ((D.ParentPkg()->Flags & pkgCache::Flag::Essential) != 0)
 +          if ((D.ParentPkg()->Flags & pkgCache::Flag::Essential) != 0 ||
 +              (D.ParentPkg()->Flags & pkgCache::Flag::Important) != 0)
               IsEssential = true;
     }
  
@@@ -612,10 -611,19 +612,19 @@@ bool pkgPackageManager::SmartUnPack(Pkg
               continue;
            }
  
-           if (Debug)
-              clog << OutputInDepth(Depth) << "Trying to SmartConfigure " << Pkg.Name() << endl;
-           Bad = !SmartConfigure(Pkg, Depth + 1);
-        }
+             // check if it needs unpack or if if configure is enough
+             if (!List->IsFlag(Pkg,pkgOrderList::UnPacked))
+             {
+                if (Debug)
+                   clog << OutputInDepth(Depth) << "Trying to SmartUnpack " << Pkg.Name() << endl;
+                // SmartUnpack with the ImmediateFlag to ensure its really ready
+                Bad = !SmartUnPack(Pkg, true, Depth + 1);
+             } else {
+                if (Debug)
+                   clog << OutputInDepth(Depth) << "Trying to SmartConfigure " << Pkg.Name() << endl;
+                Bad = !SmartConfigure(Pkg, Depth + 1);
+             }
+          }
  
         /* If this or element did not match then continue on to the
            next or element until a matching element is found */
diff --combined debian/changelog
index c01c087a7a38795cd79b4af77b9ecbd94de8a299,25563e811c763f0a19af257e390f67c156c67648..8e4c05d7cc0a41949063d37e8478fc92632045af
@@@ -27,8 -27,6 +27,8 @@@ apt (0.8.16~exp13) UNRELEASED; urgency=
        of them in a single iteration (Closes: #657695, LP: #922485)
      - use a signed int instead of short for score calculation as upgrades
        become so big now that it can overflow (Closes: #657732, LP: #917173)
 +  * Fix IndexCopy::CopyPackages and TranslationsCopy::CopyTranslations to
 +    handle compressed files again (LP: #924182, closes: #658096)
    
    [ Michael Vogt ]
    * apt-pkg/deb/dpkgpm.cc:
        (LP: #923807)
    * apt-pkg/contrib/fileutl.h:
      - fix compat with FileFd::OpenDescriptor() in ReadOnlyGzip mode
 -    - when calculating pre-dependencies ensure that both unpack and
 -      configure are considered (instead of only configure) LP: #927993
+   * apt-pkg/packagemanager.cc:
++    - fix bug in predepends handling - ensure that packages that needs
++      unpackaging are unpacked before they are configured (LP: #927993)
 +
 +  [ Julian Andres Klode ]
 +  * apt-pkg/deb/deblistparser.cc:
 +    - Set the Essential flag on APT instead of only Important
 +  * apt-pkg/packagemanager.cc:
 +    - Do not use immediate configuration for packages with the Important flag
 +  * Treat the Important flag like the Essential flag with those differences:
 +    - No Immediate configuration (see above)
 +    - Not automatically installed during dist-upgrade
 +    - No higher score for installation ordering
  
   -- David Kalnischkies <kalnischkies@gmail.com>  Mon, 30 Jan 2012 19:17:09 +0100