diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2009-09-29 15:51:48 +0200 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2009-09-29 15:51:48 +0200 |
commit | d183f850e7e3e467e8665d116ffbb238fdcc4ea9 (patch) | |
tree | 2ac04c041dbb6968b23c90bc6582fbad56eb9c91 /apt-pkg/packagemanager.cc | |
parent | ae965b3a7970511f92bbe44841f6910759d22e80 (diff) |
* apt-pkg/packagemanager.cc:
- fix overly aggressive immediate config propergation
(thanks to David Kalnischkies)
Diffstat (limited to 'apt-pkg/packagemanager.cc')
-rw-r--r-- | apt-pkg/packagemanager.cc | 10 |
1 files changed, 7 insertions, 3 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; |