]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/packagemanager.cc
* apt-pkg/packagemanager.cc:
[apt.git] / apt-pkg / packagemanager.cc
index 442143516286c597bd1b18f31a14d8b803fb6695..dbcd461acb3770996dde2d45a581c137f99839a4 100644 (file)
@@ -125,7 +125,7 @@ bool pkgPackageManager::FixMissing()
 /* This adds the immediate flag to the pkg and recursively to the
    dependendies 
  */
 /* This adds the immediate flag to the pkg and recursively to the
    dependendies 
  */
-void pkgPackageManager::ImmediateAdd(PkgIterator I, bool UseInstallVer)
+void pkgPackageManager::ImmediateAdd(PkgIterator I, bool UseInstallVer, unsigned const int &Depth)
 {
    DepIterator D;
    
 {
    DepIterator D;
    
@@ -143,12 +143,16 @@ void pkgPackageManager::ImmediateAdd(PkgIterator I, bool UseInstallVer)
    for ( /* nothing */  ; D.end() == false; D++)
       if (D->Type == pkgCache::Dep::Depends || D->Type == pkgCache::Dep::PreDepends)
       {
    for ( /* nothing */  ; D.end() == false; D++)
       if (D->Type == pkgCache::Dep::Depends || D->Type == pkgCache::Dep::PreDepends)
       {
+        // ignore dependencies if no instal/upgrade/remove is going to happen
+        if (D.TargetPkg() == 0 || Cache[D.TargetPkg()].Keep())
+             continue;
+
         if(!List->IsFlag(D.TargetPkg(), pkgOrderList::Immediate))
         {
            if(Debug)
         if(!List->IsFlag(D.TargetPkg(), pkgOrderList::Immediate))
         {
            if(Debug)
-              clog << "ImmediateAdd(): Adding Immediate flag to " << I.Name() << endl;
+              clog << OutputInDepth(Depth) << "ImmediateAdd(): Adding Immediate flag to " << D.TargetPkg() << " cause of " << D.DepType() << " " << I.Name() << endl;
            List->Flag(D.TargetPkg(),pkgOrderList::Immediate);
            List->Flag(D.TargetPkg(),pkgOrderList::Immediate);
-           ImmediateAdd(D.TargetPkg(), UseInstallVer);
+           ImmediateAdd(D.TargetPkg(), UseInstallVer, Depth + 1);
         }
       }
    return;
         }
       }
    return;