Use versions specified in optdepends

Checking install status and if a package is optionally required on removal
now considers the version of the optdepend.

Fixes FS#44957.

Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Allan McRae 2016-02-21 16:43:36 +10:00
parent 59112e186b
commit 3da06c3519
2 changed files with 4 additions and 3 deletions

View File

@ -180,7 +180,8 @@ static void remove_notify_needed_optdepends(alpm_handle_t *handle, alpm_list_t *
alpm_list_t *j;
for(j = optdeps; j; j = alpm_list_next(j)) {
alpm_depend_t *optdep = j->data;
if(alpm_find_satisfier(lp, optdep->name)) {
char *optstring = alpm_dep_compute_string(optdep);
if(alpm_find_satisfier(lp, optstring)) {
alpm_event_optdep_removal_t event = {
.type = ALPM_EVENT_OPTDEP_REMOVAL,
.pkg = pkg,

View File

@ -1201,9 +1201,9 @@ static char *make_optstring(alpm_depend_t *optdep)
alpm_db_t *localdb = alpm_get_localdb(config->handle);
char *optstring = alpm_dep_compute_string(optdep);
char *status = NULL;
if(alpm_find_satisfier(alpm_db_get_pkgcache(localdb), optdep->name)) {
if(alpm_find_satisfier(alpm_db_get_pkgcache(localdb), optstring)) {
status = _(" [installed]");
} else if(alpm_find_satisfier(alpm_trans_get_add(config->handle), optdep->name)) {
} else if(alpm_find_satisfier(alpm_trans_get_add(config->handle), optstring)) {
status = _(" [pending]");
}
if(status) {