[pacman-dev] [PATCH] Expose alpm_pkg_should_ignore
This function is useful for frontends to annotate package upgrades that will be ignored. Signed-off-by: Allan McRae <allan@archlinux.org> --- lib/libalpm/alpm.h | 9 +++++++++ lib/libalpm/deps.c | 4 ++-- lib/libalpm/package.c | 2 +- lib/libalpm/package.h | 1 - lib/libalpm/sync.c | 14 +++++++------- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index 29b9f37..2c8c1e6 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -793,6 +793,15 @@ alpm_list_t *alpm_pkg_compute_requiredby(alpm_pkg_t *pkg); */ alpm_list_t *alpm_pkg_compute_optionalfor(alpm_pkg_t *pkg); +/** Test if a package should be ignored. + * Checks if the package is ignored via IgnorePkg, or if the package is + * in a group ignored via IgnoreGroup. + * @param handle the context handle + * @param pkg the package to test + * @return 1 if the package should be ignored, 0 otherwise + */ +int alpm_pkg_should_ignore(alpm_handle_t *handle, alpm_pkg_t *pkg); + /** @name Package Property Accessors * Any pointer returned by these functions points to internal structures * allocated by libalpm. They should not be freed nor modified in any diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c index 745eac1..cf7605e 100644 --- a/lib/libalpm/deps.c +++ b/lib/libalpm/deps.c @@ -664,7 +664,7 @@ static alpm_pkg_t *resolvedep(alpm_handle_t *handle, alpm_depend_t *dep, pkg = _alpm_db_get_pkgfromcache(db, dep->name); if(pkg && _alpm_depcmp_literal(pkg, dep) && !alpm_pkg_find(excluding, pkg->name)) { - if(_alpm_pkg_should_ignore(handle, pkg)) { + if(alpm_pkg_should_ignore(handle, pkg)) { int install = 0; if(prompt) { QUESTION(handle, ALPM_QUESTION_INSTALL_IGNOREPKG, pkg, @@ -693,7 +693,7 @@ static alpm_pkg_t *resolvedep(alpm_handle_t *handle, alpm_depend_t *dep, * possibly be the same string */ if(pkg->name_hash != dep->name_hash && _alpm_depcmp(pkg, dep) && !alpm_pkg_find(excluding, pkg->name)) { - if(_alpm_pkg_should_ignore(handle, pkg)) { + if(alpm_pkg_should_ignore(handle, pkg)) { int install = 0; if(prompt) { QUESTION(handle, ALPM_QUESTION_INSTALL_IGNOREPKG, diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c index cfdbb3f..1294f8e 100644 --- a/lib/libalpm/package.c +++ b/lib/libalpm/package.c @@ -753,7 +753,7 @@ alpm_pkg_t SYMEXPORT *alpm_pkg_find(alpm_list_t *haystack, const char *needle) * * @return 1 if the package should be ignored, 0 otherwise */ -int _alpm_pkg_should_ignore(alpm_handle_t *handle, alpm_pkg_t *pkg) +int SYMEXPORT alpm_pkg_should_ignore(alpm_handle_t *handle, alpm_pkg_t *pkg) { alpm_list_t *groups = NULL; diff --git a/lib/libalpm/package.h b/lib/libalpm/package.h index b7c3358..07b043c 100644 --- a/lib/libalpm/package.h +++ b/lib/libalpm/package.h @@ -148,7 +148,6 @@ alpm_pkg_t *_alpm_pkg_load_internal(alpm_handle_t *handle, int _alpm_pkg_cmp(const void *p1, const void *p2); int _alpm_pkg_compare_versions(alpm_pkg_t *local_pkg, alpm_pkg_t *pkg); -int _alpm_pkg_should_ignore(alpm_handle_t *handle, alpm_pkg_t *pkg); #endif /* _ALPM_PACKAGE_H */ diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index a4b1bb8..066f1f2 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -93,8 +93,8 @@ static int check_literal(alpm_handle_t *handle, alpm_pkg_t *lpkg, _alpm_log(handle, ALPM_LOG_DEBUG, "new version of '%s' found (%s => %s)\n", lpkg->name, lpkg->version, spkg->version); /* check IgnorePkg/IgnoreGroup */ - if(_alpm_pkg_should_ignore(handle, spkg) - || _alpm_pkg_should_ignore(handle, lpkg)) { + if(alpm_pkg_should_ignore(handle, spkg) + || alpm_pkg_should_ignore(handle, lpkg)) { _alpm_log(handle, ALPM_LOG_WARNING, _("%s: ignoring package upgrade (%s => %s)\n"), lpkg->name, lpkg->version, spkg->version); } else { @@ -105,8 +105,8 @@ static int check_literal(alpm_handle_t *handle, alpm_pkg_t *lpkg, } else if(cmp < 0) { if(enable_downgrade) { /* check IgnorePkg/IgnoreGroup */ - if(_alpm_pkg_should_ignore(handle, spkg) - || _alpm_pkg_should_ignore(handle, lpkg)) { + if(alpm_pkg_should_ignore(handle, spkg) + || alpm_pkg_should_ignore(handle, lpkg)) { _alpm_log(handle, ALPM_LOG_WARNING, _("%s: ignoring package downgrade (%s => %s)\n"), lpkg->name, lpkg->version, spkg->version); } else { @@ -148,8 +148,8 @@ static alpm_list_t *check_replacers(alpm_handle_t *handle, alpm_pkg_t *lpkg, int doreplace = 0; alpm_pkg_t *tpkg; /* check IgnorePkg/IgnoreGroup */ - if(_alpm_pkg_should_ignore(handle, spkg) - || _alpm_pkg_should_ignore(handle, lpkg)) { + 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); @@ -270,7 +270,7 @@ alpm_list_t SYMEXPORT *alpm_find_group_pkgs(alpm_list_t *dbs, if(alpm_pkg_find(ignorelist, pkg->name)) { continue; } - if(_alpm_pkg_should_ignore(db->handle, pkg)) { + if(alpm_pkg_should_ignore(db->handle, pkg)) { ignorelist = alpm_list_add(ignorelist, pkg); int install = 0; QUESTION(db->handle, ALPM_QUESTION_INSTALL_IGNOREPKG, pkg, -- 1.8.4
participants (1)
-
Allan McRae