summaryrefslogtreecommitdiff
path: root/apt-pkg/depcache.cc
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2015-05-09 12:39:22 +0200
committerDavid Kalnischkies <david@kalnischkies.de>2015-05-11 17:22:32 +0200
commit98c9c26c123aa1ef6ad01b0bb60c782b920ce3b3 (patch)
tree5e5981cda488785be914926002197b7d42b2d441 /apt-pkg/depcache.cc
parent41fadd29f136627fb5c9e733130b2a57c49fafaf (diff)
show non-matching m-a:same versions in debug message
Slightly rewriting the code to ensure we only use two sources for the versions as it could otherwise be confusing to look at.
Diffstat (limited to 'apt-pkg/depcache.cc')
-rw-r--r--apt-pkg/depcache.cc17
1 files changed, 11 insertions, 6 deletions
diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc
index 25c945ebb..73c5bb320 100644
--- a/apt-pkg/depcache.cc
+++ b/apt-pkg/depcache.cc
@@ -1315,14 +1315,18 @@ bool pkgDepCache::IsInstallOkMultiArchSameVersionSynced(PkgIterator const &Pkg,
GrpIterator const Grp = Pkg.Group();
for (PkgIterator P = Grp.PackageList(); P.end() == false; P = Grp.NextPkg(P))
{
- // not installed or version synced: fine by definition
+ // not installed or self-check: fine by definition
+ if (P->CurrentVer == 0 || P == Pkg)
+ continue;
+
+ // not having a candidate or being in sync
// (simple string-compare as stuff like '1' == '0:1-0' can't happen here)
- if (P->CurrentVer == 0 || strcmp(Pkg.CandVersion(), P.CandVersion()) == 0)
+ VerIterator CV = PkgState[P->ID].CandidateVerIter(*this);
+ if (CV.end() == true || strcmp(Pkg.CandVersion(), CV.VerStr()) == 0)
continue;
+
// packages losing M-A:same can be out-of-sync
- VerIterator CV = PkgState[P->ID].CandidateVerIter(*this);
- if (unlikely(CV.end() == true) ||
- (CV->MultiArch & pkgCache::Version::Same) != pkgCache::Version::Same)
+ if ((CV->MultiArch & pkgCache::Version::Same) != pkgCache::Version::Same)
continue;
// not downloadable means the package is obsolete, so allow out-of-sync
@@ -1332,7 +1336,8 @@ bool pkgDepCache::IsInstallOkMultiArchSameVersionSynced(PkgIterator const &Pkg,
PkgState[Pkg->ID].iFlags |= AutoKept;
if (unlikely(DebugMarker == true))
std::clog << OutputInDepth(Depth) << "Ignore MarkInstall of " << Pkg
- << " as its M-A:same siblings are not version-synced" << std::endl;
+ << " as it is not in sync with its M-A:same sibling " << P
+ << " (" << Pkg.CandVersion() << " != " << CV.VerStr() << ")" << std::endl;
return false;
}