diff options
Diffstat (limited to 'lib/libalpm')
-rw-r--r-- | lib/libalpm/remove.c | 10 | ||||
-rw-r--r-- | lib/libalpm/sync.c | 2 |
2 files changed, 10 insertions, 2 deletions
diff --git a/lib/libalpm/remove.c b/lib/libalpm/remove.c index 84908580..9c57334b 100644 --- a/lib/libalpm/remove.c +++ b/lib/libalpm/remove.c @@ -264,7 +264,7 @@ static void unlink_file(pmpkg_t *info, alpm_list_t *lp, alpm_list_t *targ, int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db) { - pmpkg_t *info; + pmpkg_t *info, *infodup; alpm_list_t *targ, *lp; ALPM_LOG_FUNC; @@ -330,6 +330,9 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db) } } + /* duplicate the package so we can remove the requiredby fields later */ + infodup = _alpm_pkg_dup(info); + /* remove the package from the database */ _alpm_log(PM_LOG_DEBUG, _("updating database")); _alpm_log(PM_LOG_DEBUG, _("removing database entry '%s'"), pkgname); @@ -343,6 +346,11 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db) pkgname); } + /* update dependency packages' REQUIREDBY fields */ + _alpm_trans_update_depends(trans, infodup); + _alpm_pkg_free(infodup); + + PROGRESS(trans, PM_TRANS_PROGRESS_REMOVE_START, pkgname, 100, alpm_list_count(trans->packages), (alpm_list_count(trans->packages) - alpm_list_count(targ) +1)); diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 6f5a715d..71925482 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -1065,7 +1065,7 @@ pmsyncpkg_t *_alpm_sync_find(alpm_list_t *syncpkgs, const char* pkgname) } } - _alpm_log(PM_LOG_DEBUG, _("package '%s not found in sync"), pkgname); + _alpm_log(PM_LOG_DEBUG, _("package '%s' not found in sync"), pkgname); return(NULL); /* not found */ } |