diff options
author | Dan McGee <dan@archlinux.org> | 2011-08-15 21:44:38 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-08-15 21:47:19 +0200 |
commit | 796eaaed4064c36e3dd45178b2584115279a482e (patch) | |
tree | 5bf7ac39bf6cd9153fd70a00d98852e6a25443d8 /lib | |
parent | 88bd1cec778f37f2d58437221de28dec9d401b7e (diff) | |
download | pacman-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.c | 14 |
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; - } } } } |