summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-08-15 21:44:38 +0200
committerDan McGee <dan@archlinux.org>2011-08-15 21:47:19 +0200
commit796eaaed4064c36e3dd45178b2584115279a482e (patch)
tree5bf7ac39bf6cd9153fd70a00d98852e6a25443d8 /lib
parent88bd1cec778f37f2d58437221de28dec9d401b7e (diff)
downloadpacman-796eaaed4064c36e3dd45178b2584115279a482e.tar.gz
pacman-796eaaed4064c36e3dd45178b2584115279a482e.tar.xz
Further fixes to replacement iteration
A partial fix for this was in commit 7de92cb22, but this should fix the remaining cases. There are still several issues dealing with "provision as replacement" selection however. Addresses FS#25538 and FS#25527. Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/libalpm/sync.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c
index 3e38707e..3d581661 100644
--- a/lib/libalpm/sync.c
+++ b/lib/libalpm/sync.c
@@ -145,9 +145,9 @@ int SYMEXPORT alpm_sync_sysupgrade(alpm_handle_t *handle, int enable_downgrade)
break;
} else {
/* 2. search for replacers in sdb */
- int found = 0;
alpm_list_t *k, *l;
for(k = _alpm_db_get_pkgcache(sdb); k; k = k->next) {
+ int found = 0;
spkg = k->data;
for(l = alpm_pkg_get_replaces(spkg); l; l = l->next) {
alpm_depend_t *replace = l->data;
@@ -160,16 +160,15 @@ int SYMEXPORT alpm_sync_sysupgrade(alpm_handle_t *handle, int enable_downgrade)
/* check IgnorePkg/IgnoreGroup */
if(_alpm_pkg_should_ignore(handle, spkg)
|| _alpm_pkg_should_ignore(handle, lpkg)) {
- _alpm_log(handle, ALPM_LOG_WARNING, _("ignoring package replacement (%s-%s => %s-%s)\n"),
- lpkg->name, lpkg->version, spkg->name, spkg->version);
- found = 0;
+ _alpm_log(handle, ALPM_LOG_WARNING,
+ _("ignoring package replacement (%s-%s => %s-%s)\n"),
+ lpkg->name, lpkg->version, spkg->name, spkg->version);
continue;
}
int doreplace = 0;
QUESTION(trans, ALPM_TRANS_CONV_REPLACE_PKG, lpkg, spkg, sdb->treename, &doreplace);
if(!doreplace) {
- found = 0;
continue;
}
@@ -181,7 +180,6 @@ int SYMEXPORT alpm_sync_sysupgrade(alpm_handle_t *handle, int enable_downgrade)
if(tpkg->origin_data.db != sdb) {
_alpm_log(handle, ALPM_LOG_WARNING, _("cannot replace %s by %s\n"),
lpkg->name, spkg->name);
- found = 0;
continue;
}
_alpm_log(handle, ALPM_LOG_DEBUG, "appending %s to the removes list of %s\n",
@@ -202,10 +200,6 @@ int SYMEXPORT alpm_sync_sysupgrade(alpm_handle_t *handle, int enable_downgrade)
}
}
}
- if(found) {
- /* jump to next local package */
- break;
- }
}
}
}