diff options
-rw-r--r-- | apt-pkg/packagemanager.cc | 10 | ||||
-rw-r--r-- | apt-pkg/packagemanager.h | 2 | ||||
-rw-r--r-- | debian/changelog | 8 |
3 files changed, 15 insertions, 5 deletions
diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc index 442143516..dbcd461ac 100644 --- a/apt-pkg/packagemanager.cc +++ b/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; diff --git a/apt-pkg/packagemanager.h b/apt-pkg/packagemanager.h index a1bfdc52d..af1476b7a 100644 --- a/apt-pkg/packagemanager.h +++ b/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(); diff --git a/debian/changelog b/debian/changelog index 8808a4e82..9da06b054 100644 --- a/debian/changelog +++ b/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 |