[pacman-dev] [PATCH v2] libalpm: parse {check, make}depends when reading database
morganamilo
morganamilo at gmail.com
Tue Oct 9 01:05:15 UTC 2018
Commit 0994893b0e6b627d45a63884ac01af7d0967eff2 added the
alpm_pkg_get_{make,check}depends functions but forgot to include
logic for parsing these fields from the database. As a result these
functions will always return an empty list.
This commit adds the parsing logic.
Signed-off-by: morganamilo <morganamilo at gmail.com>
---
Only after making this patch do I see FS#60347. V2 addes the extra lazy
loading code pointed out in the comments.
As a result this patch is basically identical to Alexandre Garnier's patch.
But as they have not submitted their patch to the mailing list I'll submit mine.
diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c
index 7c2f96b8..12b13a12 100644
--- a/lib/libalpm/be_local.c
+++ b/lib/libalpm/be_local.c
@@ -153,6 +153,18 @@ static alpm_list_t *_cache_get_optdepends(alpm_pkg_t *pkg)
return pkg->optdepends;
}
+static alpm_list_t *_cache_get_makedepends(alpm_pkg_t *pkg)
+{
+ LAZY_LOAD(INFRQ_DESC);
+ return pkg->makedepends;
+}
+
+static alpm_list_t *_cache_get_checkdepends(alpm_pkg_t *pkg)
+{
+ LAZY_LOAD(INFRQ_DESC);
+ return pkg->checkdepends;
+}
+
static alpm_list_t *_cache_get_conflicts(alpm_pkg_t *pkg)
{
LAZY_LOAD(INFRQ_DESC);
@@ -303,36 +315,38 @@ static int _cache_force_load(alpm_pkg_t *pkg)
* logic.
*/
static struct pkg_operations local_pkg_ops = {
- .get_base = _cache_get_base,
- .get_desc = _cache_get_desc,
- .get_url = _cache_get_url,
- .get_builddate = _cache_get_builddate,
- .get_installdate = _cache_get_installdate,
- .get_packager = _cache_get_packager,
- .get_arch = _cache_get_arch,
- .get_isize = _cache_get_isize,
- .get_reason = _cache_get_reason,
- .get_validation = _cache_get_validation,
- .has_scriptlet = _cache_has_scriptlet,
- .get_licenses = _cache_get_licenses,
- .get_groups = _cache_get_groups,
- .get_depends = _cache_get_depends,
- .get_optdepends = _cache_get_optdepends,
- .get_conflicts = _cache_get_conflicts,
- .get_provides = _cache_get_provides,
- .get_replaces = _cache_get_replaces,
- .get_files = _cache_get_files,
- .get_backup = _cache_get_backup,
-
- .changelog_open = _cache_changelog_open,
- .changelog_read = _cache_changelog_read,
- .changelog_close = _cache_changelog_close,
-
- .mtree_open = _cache_mtree_open,
- .mtree_next = _cache_mtree_next,
- .mtree_close = _cache_mtree_close,
-
- .force_load = _cache_force_load,
+ .get_base = _cache_get_base,
+ .get_desc = _cache_get_desc,
+ .get_url = _cache_get_url,
+ .get_builddate = _cache_get_builddate,
+ .get_installdate = _cache_get_installdate,
+ .get_packager = _cache_get_packager,
+ .get_arch = _cache_get_arch,
+ .get_isize = _cache_get_isize,
+ .get_reason = _cache_get_reason,
+ .get_validation = _cache_get_validation,
+ .has_scriptlet = _cache_has_scriptlet,
+ .get_licenses = _cache_get_licenses,
+ .get_groups = _cache_get_groups,
+ .get_depends = _cache_get_depends,
+ .get_optdepends = _cache_get_optdepends,
+ .get_makedepends = _cache_get_makedepends,
+ .get_checkdepends = _cache_get_checkdepends,
+ .get_conflicts = _cache_get_conflicts,
+ .get_provides = _cache_get_provides,
+ .get_replaces = _cache_get_replaces,
+ .get_files = _cache_get_files,
+ .get_backup = _cache_get_backup,
+
+ .changelog_open = _cache_changelog_open,
+ .changelog_read = _cache_changelog_read,
+ .changelog_close = _cache_changelog_close,
+
+ .mtree_open = _cache_mtree_open,
+ .mtree_next = _cache_mtree_next,
+ .mtree_close = _cache_mtree_close,
+
+ .force_load = _cache_force_load,
};
static int checkdbdir(alpm_db_t *db)
@@ -773,6 +787,10 @@ static int local_db_read(alpm_pkg_t *info, int inforeq)
READ_AND_SPLITDEP(info->depends);
} else if(strcmp(line, "%OPTDEPENDS%") == 0) {
READ_AND_SPLITDEP(info->optdepends);
+ } else if(strcmp(line, "%MAKEDEPENDS%") == 0) {
+ READ_AND_SPLITDEP(info->makedepends);
+ } else if(strcmp(line, "%CHECKDEPENDS%") == 0) {
+ READ_AND_SPLITDEP(info->checkdepends);
} else if(strcmp(line, "%CONFLICTS%") == 0) {
READ_AND_SPLITDEP(info->conflicts);
} else if(strcmp(line, "%PROVIDES%") == 0) {
diff --git a/lib/libalpm/be_sync.c b/lib/libalpm/be_sync.c
index 5009a7da..af94b2d5 100644
--- a/lib/libalpm/be_sync.c
+++ b/lib/libalpm/be_sync.c
@@ -700,17 +700,9 @@ static int sync_db_read(alpm_db_t *db, struct archive *archive,
} else if(strcmp(line, "%OPTDEPENDS%") == 0) {
READ_AND_SPLITDEP(pkg->optdepends);
} else if(strcmp(line, "%MAKEDEPENDS%") == 0) {
- /* currently unused */
- while(1) {
- READ_NEXT();
- if(strlen(line) == 0) break;
- }
+ READ_AND_SPLITDEP(pkg->makedepends);
} else if(strcmp(line, "%CHECKDEPENDS%") == 0) {
- /* currently unused */
- while(1) {
- READ_NEXT();
- if(strlen(line) == 0) break;
- }
+ READ_AND_SPLITDEP(pkg->checkdepends);
} else if(strcmp(line, "%CONFLICTS%") == 0) {
READ_AND_SPLITDEP(pkg->conflicts);
} else if(strcmp(line, "%PROVIDES%") == 0) {
--
2.19.1
More information about the pacman-dev
mailing list