makepkg adds makedepends and checkdepends to a package's .PKGINFO file. Add functions that allow use of these from libalpm. Signed-off-by: Mark Weiman <mark.weiman@markzz.com> --- lib/libalpm/alpm.h | 12 ++++++++ lib/libalpm/be_package.c | 6 ++-- lib/libalpm/package.c | 80 +++++++++++++++++++++++++++++------------------- lib/libalpm/package.h | 4 +++ 4 files changed, 69 insertions(+), 33 deletions(-) diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index 2d2491d..3ef2426 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -1261,6 +1261,18 @@ alpm_list_t *alpm_pkg_get_depends(alpm_pkg_t *pkg); */ alpm_list_t *alpm_pkg_get_optdepends(alpm_pkg_t *pkg); +/** Returns a list of package check dependencies + * @param pkg a pointer to package + * @return a reference to an internal list of alpm_depend_t structures. + */ +alpm_list_t *alpm_pkg_get_checkdepends(alpm_pkg_t *pkg); + +/** Returns a list of package make dependencies + * @param pkg a pointer to package + * @return a reference to an internal list of alpm_depend_t structures. + */ +alpm_list_t *alpm_pkg_get_makedepends(alpm_pkg_t *pkg); + /** Returns the list of packages conflicting with pkg. * @param pkg a pointer to package * @return a reference to an internal list of alpm_depend_t structures. diff --git a/lib/libalpm/be_package.c b/lib/libalpm/be_package.c index b7c54fa..93af969 100644 --- a/lib/libalpm/be_package.c +++ b/lib/libalpm/be_package.c @@ -223,9 +223,11 @@ static int parse_descfile(alpm_handle_t *handle, struct archive *a, alpm_pkg_t * alpm_depend_t *optdep = alpm_dep_from_string(ptr); newpkg->optdepends = alpm_list_add(newpkg->optdepends, optdep); } else if(strcmp(key, "makedepend") == 0) { - /* not used atm */ + alpm_depend_t *makedep = alpm_dep_from_string(ptr); + newpkg->makedepends = alpm_list_add(newpkg->makedepends, makedep); } else if(strcmp(key, "checkdepend") == 0) { - /* not used atm */ + alpm_depend_t *checkdep = alpm_dep_from_string(ptr); + newpkg->checkdepends = alpm_list_add(newpkg->checkdepends, checkdep); } else if(strcmp(key, "conflict") == 0) { alpm_depend_t *conflict = alpm_dep_from_string(ptr); newpkg->conflicts = alpm_list_add(newpkg->conflicts, conflict); diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c index 05becf0..6bc9936 100644 --- a/lib/libalpm/package.c +++ b/lib/libalpm/package.c @@ -99,6 +99,8 @@ static alpm_list_t *_pkg_get_licenses(alpm_pkg_t *pkg) { return pkg->licenses; static alpm_list_t *_pkg_get_groups(alpm_pkg_t *pkg) { return pkg->groups; } static alpm_list_t *_pkg_get_depends(alpm_pkg_t *pkg) { return pkg->depends; } static alpm_list_t *_pkg_get_optdepends(alpm_pkg_t *pkg) { return pkg->optdepends; } +static alpm_list_t *_pkg_get_checkdepends(alpm_pkg_t *pkg) { return pkg->checkdepends; } +static alpm_list_t *_pkg_get_makedepends(alpm_pkg_t *pkg) { return pkg->makedepends; } static alpm_list_t *_pkg_get_conflicts(alpm_pkg_t *pkg) { return pkg->conflicts; } static alpm_list_t *_pkg_get_provides(alpm_pkg_t *pkg) { return pkg->provides; } static alpm_list_t *_pkg_get_replaces(alpm_pkg_t *pkg) { return pkg->replaces; } @@ -145,37 +147,39 @@ static int _pkg_force_load(alpm_pkg_t UNUSED *pkg) { return 0; } * struct itself with no abstraction layer or any type of lazy loading. */ struct pkg_operations default_pkg_ops = { - .get_base = _pkg_get_base, - .get_desc = _pkg_get_desc, - .get_url = _pkg_get_url, - .get_builddate = _pkg_get_builddate, - .get_installdate = _pkg_get_installdate, - .get_packager = _pkg_get_packager, - .get_arch = _pkg_get_arch, - .get_isize = _pkg_get_isize, - .get_reason = _pkg_get_reason, - .get_validation = _pkg_get_validation, - .has_scriptlet = _pkg_has_scriptlet, - - .get_licenses = _pkg_get_licenses, - .get_groups = _pkg_get_groups, - .get_depends = _pkg_get_depends, - .get_optdepends = _pkg_get_optdepends, - .get_conflicts = _pkg_get_conflicts, - .get_provides = _pkg_get_provides, - .get_replaces = _pkg_get_replaces, - .get_files = _pkg_get_files, - .get_backup = _pkg_get_backup, - - .changelog_open = _pkg_changelog_open, - .changelog_read = _pkg_changelog_read, - .changelog_close = _pkg_changelog_close, - - .mtree_open = _pkg_mtree_open, - .mtree_next = _pkg_mtree_next, - .mtree_close = _pkg_mtree_close, - - .force_load = _pkg_force_load, + .get_base = _pkg_get_base, + .get_desc = _pkg_get_desc, + .get_url = _pkg_get_url, + .get_builddate = _pkg_get_builddate, + .get_installdate = _pkg_get_installdate, + .get_packager = _pkg_get_packager, + .get_arch = _pkg_get_arch, + .get_isize = _pkg_get_isize, + .get_reason = _pkg_get_reason, + .get_validation = _pkg_get_validation, + .has_scriptlet = _pkg_has_scriptlet, + + .get_licenses = _pkg_get_licenses, + .get_groups = _pkg_get_groups, + .get_depends = _pkg_get_depends, + .get_optdepends = _pkg_get_optdepends, + .get_checkdepends = _pkg_get_checkdepends, + .get_makedepends = _pkg_get_makedepends, + .get_conflicts = _pkg_get_conflicts, + .get_provides = _pkg_get_provides, + .get_replaces = _pkg_get_replaces, + .get_files = _pkg_get_files, + .get_backup = _pkg_get_backup, + + .changelog_open = _pkg_changelog_open, + .changelog_read = _pkg_changelog_read, + .changelog_close = _pkg_changelog_close, + + .mtree_open = _pkg_mtree_open, + .mtree_next = _pkg_mtree_next, + .mtree_close = _pkg_mtree_close, + + .force_load = _pkg_force_load, }; /* Public functions for getting package information. These functions @@ -335,6 +339,20 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_optdepends(alpm_pkg_t *pkg) return pkg->ops->get_optdepends(pkg); } +alpm_list_t SYMEXPORT *alpm_pkg_get_checkdepends(alpm_pkg_t *pkg) +{ + ASSERT(pkg != NULL, return NULL); + pkg->handle->pm_errno = ALPM_ERR_OK; + return pkg->ops->get_checkdepends(pkg); +} + +alpm_list_t SYMEXPORT *alpm_pkg_get_makedepends(alpm_pkg_t *pkg) +{ + ASSERT(pkg != NULL, return NULL); + pkg->handle->pm_errno = ALPM_ERR_OK; + return pkg->ops->get_makedepends(pkg); +} + alpm_list_t SYMEXPORT *alpm_pkg_get_conflicts(alpm_pkg_t *pkg) { ASSERT(pkg != NULL, return NULL); diff --git a/lib/libalpm/package.h b/lib/libalpm/package.h index 0822a8d..1f029bd 100644 --- a/lib/libalpm/package.h +++ b/lib/libalpm/package.h @@ -59,6 +59,8 @@ struct pkg_operations { alpm_list_t *(*get_groups) (alpm_pkg_t *); alpm_list_t *(*get_depends) (alpm_pkg_t *); alpm_list_t *(*get_optdepends) (alpm_pkg_t *); + alpm_list_t *(*get_checkdepends) (alpm_pkg_t *); + alpm_list_t *(*get_makedepends) (alpm_pkg_t *); alpm_list_t *(*get_conflicts) (alpm_pkg_t *); alpm_list_t *(*get_provides) (alpm_pkg_t *); alpm_list_t *(*get_replaces) (alpm_pkg_t *); @@ -112,6 +114,8 @@ struct __alpm_pkg_t { alpm_list_t *backup; alpm_list_t *depends; alpm_list_t *optdepends; + alpm_list_t *checkdepends; + alpm_list_t *makedepends; alpm_list_t *conflicts; alpm_list_t *provides; alpm_list_t *deltas; -- 2.10.2