]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/packagemanager.cc
* apt-pkg/indexfile.cc:
[apt.git] / apt-pkg / packagemanager.cc
index d5b8eafb4b19f19b0e3995e0070eba46a3ab8cad..155408bb45506404b19551e21be2d299ddd626d3 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: packagemanager.cc,v 1.27 2001/05/07 05:49:43 jgg Exp $
+// $Id: packagemanager.cc,v 1.30 2003/04/27 03:04:15 doogie Exp $
 /* ######################################################################
 
    Package Manager - Abstacts the package manager
@@ -133,11 +133,15 @@ bool pkgPackageManager::CreateOrderList()
    delete List;
    List = new pkgOrderList(&Cache);
    
-   bool NoImmConfigure = _config->FindB("APT::Immediate-Configure",false);
+   bool NoImmConfigure = !_config->FindB("APT::Immediate-Configure",true);
    
    // Generate the list of affected packages and sort it
    for (PkgIterator I = Cache.PkgBegin(); I.end() == false; I++)
    {
+      // Ignore no-version packages
+      if (I->VersionList == 0)
+        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) &&
@@ -479,13 +483,16 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg)
 
            Bad = !SmartConfigure(Pkg);
         }
-        
+
         /* If this or element did not match then continue on to the
-           next or element until a matching element is found*/
+           next or element until a matching element is found */
         if (Bad == true)
-        {          
+        {
+           // This triggers if someone make a pre-depends/depend loop.
            if (Start == End)
-              return _error->Error("Internal Error, Couldn't configure a pre-depend");
+              return _error->Error("Couldn't configure pre-depend %s for %s, "
+                                   "probably a dependency cycle.",
+                                   End.TargetPkg().Name(),Pkg.Name());
            Start++;
         }
         else
@@ -624,11 +631,11 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall()
 // ---------------------------------------------------------------------
 /* This uses the filenames in FileNames and the information in the
    DepCache to perform the installation of packages.*/
-pkgPackageManager::OrderResult pkgPackageManager::DoInstall()
+pkgPackageManager::OrderResult pkgPackageManager::DoInstall(int status_fd)
 {
    OrderResult Res = OrderInstall();
    if (Res != Failed)
-      if (Go() == false)
+      if (Go(status_fd) == false)
         return Failed;
    return Res;
 }