diff options
author | Julian Andres Klode <jak@debian.org> | 2015-08-12 13:08:51 +0200 |
---|---|---|
committer | Julian Andres Klode <jak@debian.org> | 2015-08-12 13:08:51 +0200 |
commit | e595c45791716891b7b21292926f9913b333009d (patch) | |
tree | c01e3bd91dfbd096293a4abec409d718d3b66dcf /cmdline/apt-cache.cc | |
parent | 10b39ae62db1f0d15a208a286cc86aff06c2fb69 (diff) |
apt-cache: Modify policy output to use per-version pins
Also optionally enable old output by setting APT::Policy=0.
Diffstat (limited to 'cmdline/apt-cache.cc')
-rw-r--r-- | cmdline/apt-cache.cc | 43 |
1 files changed, 30 insertions, 13 deletions
diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc index e61914298..b9da85b34 100644 --- a/cmdline/apt-cache.cc +++ b/cmdline/apt-cache.cc @@ -1667,19 +1667,33 @@ static bool Policy(CommandLine &CmdL) pkgCache::PkgIterator I = Cache->PkgBegin(); for (;I.end() != true; ++I) { - if (Plcy->GetPriority(I) == 0) + // Old code for debugging + if (_config->FindI("APT::Policy", 1) < 1) { + if (Plcy->GetPriority(I) == 0) + continue; + + // Print the package name and the version we are forcing to + cout << " " << I.FullName(true) << " -> "; + + pkgCache::VerIterator V = Plcy->GetMatch(I); + if (V.end() == true) + cout << _("(not found)") << endl; + else + cout << V.VerStr() << endl; + continue; + } + // New code + for (pkgCache::VerIterator V = I.VersionList(); !V.end(); V++) { + auto Prio = Plcy->GetPriority(V, false); + if (Prio == 0) + continue; - // Print the package name and the version we are forcing to - cout << " " << I.FullName(true) << " -> "; - - pkgCache::VerIterator V = Plcy->GetMatch(I); - if (V.end() == true) - cout << _("(not found)") << endl; - else - cout << V.VerStr() << endl; - } - + // Print the package name and the version we are forcing to + cout << " " << I.FullName(true) << " -> "; + cout << V.VerStr() << _(" with priority ") << Prio << endl; + } + } return true; } @@ -1715,7 +1729,7 @@ static bool Policy(CommandLine &CmdL) cout << V.VerStr() << endl; // Pinned version - if (Plcy->GetPriority(Pkg) != 0) + if (_config->FindI("APT::Policy", 1) < 1 && Plcy->GetPriority(Pkg) != 0) { cout << _(" Package pin: "); V = Plcy->GetMatch(Pkg); @@ -1733,7 +1747,10 @@ static bool Policy(CommandLine &CmdL) cout << " *** " << V.VerStr(); else cout << " " << V.VerStr(); - cout << " " << Plcy->GetPriority(V) << endl; + if (_config->FindI("APT::Policy", 1) < 1) + cout << " " << Plcy->GetPriority(Pkg) << endl; + else + cout << " " << Plcy->GetPriority(V) << endl; for (pkgCache::VerFileIterator VF = V.FileList(); VF.end() == false; ++VF) { // Locate the associated index files so we can derive a description |