* apt-pkg/packagemanager.cc:
authorMichael Vogt <michael.vogt@ubuntu.com>
Tue, 29 Sep 2009 13:51:48 +0000 (15:51 +0200)
committerMichael Vogt <michael.vogt@ubuntu.com>
Tue, 29 Sep 2009 13:51:48 +0000 (15:51 +0200)
  - fix overly aggressive immediate config propergation
    (thanks to David Kalnischkies)

apt-pkg/packagemanager.cc
apt-pkg/packagemanager.h
debian/changelog

index 4421435..dbcd461 100644 (file)
@@ -125,7 +125,7 @@ bool pkgPackageManager::FixMissing()
 /* 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;
    
@@ -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)
       {
+        // 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)
-              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);
-           ImmediateAdd(D.TargetPkg(), UseInstallVer);
+           ImmediateAdd(D.TargetPkg(), UseInstallVer, Depth + 1);
         }
       }
    return;
index a1bfdc5..af1476b 100644 (file)
@@ -49,7 +49,7 @@ class pkgPackageManager : protected pkgCache::Namespace
    bool Debug;
          
    bool DepAdd(pkgOrderList &Order,PkgIterator P,int Depth = 0);
-   void ImmediateAdd(PkgIterator P, bool UseInstallVer);
+   void ImmediateAdd(PkgIterator P, bool UseInstallVer, unsigned const int &Depth = 0);
    virtual OrderResult OrderInstall();
    bool CheckRConflicts(PkgIterator Pkg,DepIterator Dep,const char *Ver);
    bool CreateOrderList();
index 8808a4e..9da06b0 100644 (file)
@@ -1,5 +1,6 @@
 apt (0.7.25) UNRELEASED; urgency=low
 
+  [ Christian Perrier ]
   * Fix apt-ftparchive(1) wrt description of the "-o" option.
     Thanks to Dann Frazier for the patch. Closes: #273100
   * po/LINGUAS. Re-disable Hebrew. Closes: #534992
@@ -10,8 +11,13 @@ apt (0.7.25) UNRELEASED; urgency=low
     Closes: #479997
   * Polish translation update by Wiktor Wandachowicz
     Closes: #548571
+  
+  [ Michael Vogt ]
+  * apt-pkg/packagemanager.cc:
+    - fix overly aggressive immediate config propergation
+      (thanks to David Kalnischkies)
 
- -- Christian Perrier <bubulle@debian.org>  Sat, 26 Sep 2009 11:17:25 +0200
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 29 Sep 2009 15:51:34 +0200
 
 apt (0.7.24) unstable; urgency=low