diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index e532f3de..7e52526e 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -2293,7 +2293,9 @@ typedef enum _alpm_pkgreason_t { /** Explicitly requested by the user. */ ALPM_PKG_REASON_EXPLICIT = 0, /** Installed as a dependency for another package. */ - ALPM_PKG_REASON_DEPEND = 1 + ALPM_PKG_REASON_DEPEND = 1, + /** Failed parsing of local database */ + ALPM_PKG_REASON_UNKNOWN = 2 } alpm_pkgreason_t; /** Location a package object was loaded from. */ diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c index 3516587d..1802814f 100644 --- a/lib/libalpm/be_local.c +++ b/lib/libalpm/be_local.c @@ -661,7 +661,7 @@ static alpm_pkgreason_t _read_pkgreason(alpm_handle_t *handle, const char *pkgna return ALPM_PKG_REASON_DEPEND; } else { _alpm_log(handle, ALPM_LOG_ERROR, _("unknown install reason for package %s: %s\n"), pkgname, line); - return ALPM_PKG_REASON_EXPLICIT; + return ALPM_PKG_REASON_UNKNOWN; } } diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c index 041e8988..ddc85e01 100644 --- a/lib/libalpm/deps.c +++ b/lib/libalpm/deps.c @@ -556,7 +556,7 @@ static void _alpm_select_depends(alpm_list_t **from, alpm_list_t **to, for(i = *from; i; i = next) { alpm_pkg_t *deppkg = i->data; next = i->next; - if((explicit || alpm_pkg_get_reason(deppkg) != ALPM_PKG_REASON_EXPLICIT) + if((explicit || alpm_pkg_get_reason(deppkg) == ALPM_PKG_REASON_DEPEND) && _alpm_pkg_depends_on(pkg, deppkg)) { *to = alpm_list_add(*to, deppkg); *from = alpm_list_remove_item(*from, i);