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.

Signed-off-by: Dan McGee <[email protected]>
---
 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 3e38707..3d58166 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;
-                               }
                        }
                }
        }
-- 
1.7.6


Reply via email to