Просмотр исходного кода

* apt-pkg/packagemanager.cc:
- fix overly aggressive immediate config propergation
(thanks to David Kalnischkies)

Michael Vogt лет назад: 17
Родитель
Сommit
d183f850e7
3 измененных файлов с 15 добавлено и 5 удалено
  1. 7 3
      apt-pkg/packagemanager.cc
  2. 1 1
      apt-pkg/packagemanager.h
  3. 7 1
      debian/changelog

+ 7 - 3
apt-pkg/packagemanager.cc

@@ -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;

+ 1 - 1
apt-pkg/packagemanager.h

@@ -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();

+ 7 - 1
debian/changelog

@@ -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