]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/packagemanager.cc
Back out fix for now; not sure I want to bump the lib v...
[apt.git] / apt-pkg / packagemanager.cc
index 6101b618f5c9a98a648688aaf12255e85f6fa7a6..a08ccd6027c293f7bc91cfe761e679c648195db3 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: packagemanager.cc,v 1.26 2001/02/20 07:03:17 jgg Exp $
+// $Id: packagemanager.cc,v 1.30 2003/04/27 03:04:15 doogie Exp $
 /* ######################################################################
 
    Package Manager - Abstacts the package manager
 #include <apt-pkg/sptr.h>
     
 #include <apti18n.h>    
+#include <iostream>
                                                                        /*}}}*/
 
+using namespace std;
+
 // PM::PackageManager - Constructor                                    /*{{{*/
 // ---------------------------------------------------------------------
 /* */
@@ -130,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) &&
@@ -476,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