summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2011-02-07 11:23:28 +0100
committerDavid Kalnischkies <kalnischkies@gmail.com>2011-02-07 11:23:28 +0100
commitfbd64f76a595b61d2aaa9c0615903d9b68786930 (patch)
treed0c5cda8588667158a68df805df3ec53a2f66143
parent7fefa1842da668283785113ae174df34f97f6df5 (diff)
* apt-pkg/algorithms.cc:
- mark pseudo packages of installed all packages as configured in the simulation as we don't call configure for these packages
-rw-r--r--apt-pkg/algorithms.cc23
-rw-r--r--debian/changelog5
2 files changed, 26 insertions, 2 deletions
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc
index 0fbce3c2a..0d26f8f66 100644
--- a/apt-pkg/algorithms.cc
+++ b/apt-pkg/algorithms.cc
@@ -162,7 +162,28 @@ bool pkgSimulate::Configure(PkgIterator iPkg)
}
}
-// Sim.MarkInstall(Pkg,false);
+ if (Sim[Pkg].InstBroken() == true)
+ {
+ /* We don't call Configure for Pseudo packages and if the 'all' is already installed
+ the simulation will think the pseudo package is not installed, so if something is
+ broken we walk over the dependencies and search for not installed pseudo packages */
+ for (pkgCache::DepIterator D = Sim[Pkg].InstVerIter(Sim).DependsList(); D.end() == false; D++)
+ {
+ if (Sim.IsImportantDep(D) == false ||
+ (Sim[D] & pkgDepCache::DepInstall) != 0)
+ continue;
+ pkgCache::PkgIterator T = D.TargetPkg();
+ if (T.end() == true || T->CurrentVer != 0 || Flags[T->ID] != 0)
+ continue;
+ pkgCache::PkgIterator A = T.Group().FindPkg("all");
+ if (A.end() == true || A->VersionList == 0 || A->CurrentVer == 0 ||
+ Cache.VS().CheckDep(A.CurVersion(), pkgCache::Dep::Equals, T.CandVersion()) == false)
+ continue;
+ Sim.MarkInstall(T, false);
+ Flags[T->ID] = 2;
+ }
+ }
+
if (Sim[Pkg].InstBroken() == true)
{
cout << "Conf " << Pkg.FullName(false) << " broken" << endl;
diff --git a/debian/changelog b/debian/changelog
index 3f8f52101..29d310871 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -75,6 +75,9 @@ apt (0.8.11) UNRELEASED; urgency=low
* doc/apt-cache.8.xml:
- describe reality as apt-cache just queries and doesn't manipulate
the caches. Thanks to Enrico Zini for spotting it! (Closes: #612009)
+ * apt-pkg/algorithms.cc:
+ - mark pseudo packages of installed all packages as configured
+ in the simulation as we don't call configure for these packages
[ Michael Vogt ]
* methods/http.cc:
@@ -92,7 +95,7 @@ apt (0.8.11) UNRELEASED; urgency=low
will actually test uncompressed indexes regardless of the internal
default value of Acquire::GzipIndexes.
- -- David Kalnischkies <kalnischkies@gmail.com> Fri, 04 Feb 2011 22:52:25 +0100
+ -- David Kalnischkies <kalnischkies@gmail.com> Mon, 07 Feb 2011 11:21:12 +0100
apt (0.8.10.3) unstable; urgency=low