summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2009-09-29 15:51:48 +0200
committerMichael Vogt <michael.vogt@ubuntu.com>2009-09-29 15:51:48 +0200
commitd183f850e7e3e467e8665d116ffbb238fdcc4ea9 (patch)
tree2ac04c041dbb6968b23c90bc6582fbad56eb9c91
parentae965b3a7970511f92bbe44841f6910759d22e80 (diff)
* apt-pkg/packagemanager.cc:
- fix overly aggressive immediate config propergation (thanks to David Kalnischkies)
-rw-r--r--apt-pkg/packagemanager.cc10
-rw-r--r--apt-pkg/packagemanager.h2
-rw-r--r--debian/changelog8
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