summaryrefslogtreecommitdiff
path: root/apt-private
diff options
context:
space:
mode:
authorMichael Vogt <mvo@debian.org>2014-09-05 12:03:28 +0200
committerMichael Vogt <mvo@debian.org>2014-09-05 12:05:21 +0200
commitd059cc2668f284a7db77a15d1d742326d464e963 (patch)
treee0dab302f628dccb6cea44ec49f90eea91100bc0 /apt-private
parent3b5607fc31371190470074371793cb8500b5139e (diff)
Fix incorrect upgradable listing in "apt list" (thanks to Michael Musenbrock)
The "apt list" command was using only the pkgDepCache but not the pkgPolicy to figure out if a package is upgradable. This lead to incorrect display of upgradable package when the user used the policy to pin-down packages. Thanks to Michael Musenbrock for the initial patch. Closes: #753297
Diffstat (limited to 'apt-private')
-rw-r--r--apt-private/private-cacheset.cc5
-rw-r--r--apt-private/private-output.cc5
2 files changed, 8 insertions, 2 deletions
diff --git a/apt-private/private-cacheset.cc b/apt-private/private-cacheset.cc
index e37e7b227..159e1d8f1 100644
--- a/apt-private/private-cacheset.cc
+++ b/apt-private/private-cacheset.cc
@@ -55,7 +55,10 @@ bool GetLocalitySortedVersionSet(pkgCacheFile &CacheFile,
}
else if (_config->FindB("APT::Cmd::Upgradable") == true)
{
- if(P.CurrentVer() && state.Upgradable())
+ pkgPolicy *policy = CacheFile.GetPolicy();
+ if(P.CurrentVer() &&
+ state.Upgradable() &&
+ policy->GetCandidateVer(P) != P.CurrentVer())
{
pkgPolicy *policy = CacheFile.GetPolicy();
output_set.insert(policy->GetCandidateVer(P));
diff --git a/apt-private/private-output.cc b/apt-private/private-output.cc
index 8f1fb886e..2120b7a83 100644
--- a/apt-private/private-output.cc
+++ b/apt-private/private-output.cc
@@ -229,7 +229,10 @@ void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records, /*{{{*/
std::string CandidateVerStr = GetCandidateVersion(CacheFile, P);
std::string InstalledVerStr = GetInstalledVersion(CacheFile, P);
std::string StatusStr;
- if(P.CurrentVer() == V && state.Upgradable() && state.CandidateVer != NULL)
+ if(P.CurrentVer() == V &&
+ state.Upgradable() &&
+ state.CandidateVer != NULL &&
+ policy->GetCandidateVer(P) != P.CurrentVer())
{
strprintf(StatusStr, _("[installed,upgradable to: %s]"),
CandidateVerStr.c_str());