summaryrefslogtreecommitdiff
path: root/apt-pkg
diff options
context:
space:
mode:
authorColin Watson <cjwatson@ubuntu.com>2013-08-01 13:19:43 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2013-08-01 13:37:52 +0200
commit096bd9f59750f6bea754d3a05e240c9eea0f6b53 (patch)
treedf89bbb78f0484983fd0d0020a6e551a64d1a3c8 /apt-pkg
parent55732492ddea83e7d97b2e0c3e6799948fc5f152 (diff)
downloadapt-096bd9f59750f6bea754d3a05e240c9eea0f6b53.tar.gz
prefer native arch over higher priority for providers
The rational from the buglog: > The problem here is that the Priority field in one of the Packages files > is incorrect due to a mishap with reprepro configuration, […] the > amd64 version is Priority: standard but the arm64 version is Priority: > optional (and has a stray "optional: interpreters" field). > […] > However, Priority is a rather weak property of a package because it's > typically applied via overrides, and it's easy for maintainers of > third-party repositories to misconfigure them so that overrides aren't > applied correctly. It shouldn't be ranked ahead of choosing packages > from the native architecture. In this case, I have no user-mode > emulation for arm64 set up, so choosing m4:arm64 simply won't work. This effectly makes the priority the least interesting data point in chosing a provider, which is in line with the other checks we have already order above priority in the past and also has a certain appeal by the soft irony it provides. Closes: #718482
Diffstat (limited to 'apt-pkg')
-rw-r--r--apt-pkg/depcache.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc
index 2c6eb43bf..978a893f7 100644
--- a/apt-pkg/depcache.cc
+++ b/apt-pkg/depcache.cc
@@ -1007,9 +1007,6 @@ struct CompareProviders {
else if ((B->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important)
return true;
}
- // higher priority seems like a good idea
- if (AV->Priority != BV->Priority)
- return AV->Priority > BV->Priority;
// prefer native architecture
if (strcmp(A.Arch(), B.Arch()) != 0)
{
@@ -1024,6 +1021,9 @@ struct CompareProviders {
else if (*a == B.Arch())
return true;
}
+ // higher priority seems like a good idea
+ if (AV->Priority != BV->Priority)
+ return AV->Priority > BV->Priority;
// unable to decide…
return A->ID < B->ID;
}