summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/libalpm/package.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c
index fb7e5ee8..85439a6c 100644
--- a/lib/libalpm/package.c
+++ b/lib/libalpm/package.c
@@ -150,16 +150,19 @@ int alpm_pkg_compare_versions(pmpkg_t *local_pkg, pmpkg_t *pkg)
_alpm_log(PM_LOG_WARNING, _("%s: local (%s) is newer than %s (%s)"),
local_pkg->name, local_pkg->version, db->treename, pkg->version);
cmp = 0;
- } else if(alpm_list_find_str(handle->ignorepkg, pkg->name)) {
- /* package should be ignored (IgnorePkg) */
- _alpm_log(PM_LOG_WARNING, _("%s-%s: ignoring package upgrade (%s)"),
- local_pkg->name, local_pkg->version, pkg->version);
- cmp = 0;
- } else if(_alpm_pkg_istoonew(pkg)) {
- /* package too new (UpgradeDelay) */
- _alpm_log(PM_LOG_DEBUG, _("%s-%s: delaying upgrade of package (%s)"),
- local_pkg->name, local_pkg->version, pkg->version);
- cmp = 0;
+ } else if(cmp < 0) {
+ /* we have an upgrade, make sure we should actually do it */
+ if(alpm_list_find_str(handle->ignorepkg, pkg->name)) {
+ /* package should be ignored (IgnorePkg) */
+ _alpm_log(PM_LOG_WARNING, _("%s-%s: ignoring package upgrade (%s)"),
+ local_pkg->name, local_pkg->version, pkg->version);
+ cmp = 0;
+ } else if(_alpm_pkg_istoonew(pkg)) {
+ /* package too new (UpgradeDelay) */
+ _alpm_log(PM_LOG_WARNING, _("%s-%s: delaying upgrade of package (%s)"),
+ local_pkg->name, local_pkg->version, pkg->version);
+ cmp = 0;
+ }
}
_alpm_log(PM_LOG_DEBUG, _("compare versions for %s: %s vs %s, result=%d"),