From: Daniel Golle Date: Wed, 10 Mar 2021 23:39:48 +0000 (+0000) Subject: pkg: pass-through ABIVersion to status file X-Git-Url: http://git.openwrt.org/?a=commitdiff_plain;h=d71856a4f137dc9fb890c5e777790e2c51fde921;p=project%2Fopkg-lede.git pkg: pass-through ABIVersion to status file This allows removing it from package names if needed without storing the SourceName for each and every package, which is mostly redundant information. Signed-off-by: Daniel Golle --- diff --git a/libopkg/pkg.c b/libopkg/pkg.c index f68ce0c..5111068 100644 --- a/libopkg/pkg.c +++ b/libopkg/pkg.c @@ -479,6 +479,8 @@ int pkg_merge(pkg_t * oldpkg, pkg_t * newpkg) pkg_set_string(oldpkg, PKG_PRIORITY, pkg_get_string(newpkg, PKG_PRIORITY)); if (!pkg_get_string(oldpkg, PKG_SOURCE)) pkg_set_string(oldpkg, PKG_SOURCE, pkg_get_string(newpkg, PKG_SOURCE)); + if (!pkg_get_string(oldpkg, PKG_ABIVERSION)) + pkg_set_string(oldpkg, PKG_ABIVERSION, pkg_get_string(newpkg, PKG_ABIVERSION)); if (!pkg_get_ptr(oldpkg, PKG_CONFFILES)) { pkg_set_ptr(oldpkg, PKG_CONFFILES, pkg_get_ptr(newpkg, PKG_CONFFILES)); @@ -650,7 +652,12 @@ void pkg_formatted_field(FILE * fp, pkg_t * pkg, const char *field) switch (field[0]) { case 'a': case 'A': - if (strcasecmp(field, "Alternatives") == 0) { + if (strcasecmp(field, "ABIVersion") == 0) { + p = pkg_get_string(pkg, PKG_ABIVERSION); + if (p) { + fprintf(fp, "ABIVersion: %s\n", p); + } + } else if (strcasecmp(field, "Alternatives") == 0) { struct pkg_alternatives *pkg_alts = pkg_get_ptr(pkg, PKG_ALTERNATIVES); if (pkg_alts && pkg_alts->nalts > 0) { @@ -954,6 +961,7 @@ void pkg_print_status(pkg_t * pkg, FILE * file) } pkg_formatted_field(file, pkg, "Package"); + pkg_formatted_field(file, pkg, "ABIVersion"); pkg_formatted_field(file, pkg, "Version"); pkg_formatted_field(file, pkg, "Depends"); pkg_formatted_field(file, pkg, "Recommends"); diff --git a/libopkg/pkg.h b/libopkg/pkg.h index bc0e030..c9bfa7e 100644 --- a/libopkg/pkg.h +++ b/libopkg/pkg.h @@ -101,6 +101,7 @@ enum pkg_fields { PKG_CONFLICTS, PKG_CONFFILES, PKG_ALTERNATIVES, + PKG_ABIVERSION, }; struct abstract_pkg { diff --git a/libopkg/pkg_parse.c b/libopkg/pkg_parse.c index 0baa4db..c9e0cdf 100644 --- a/libopkg/pkg_parse.c +++ b/libopkg/pkg_parse.c @@ -208,7 +208,9 @@ int pkg_parse_line(void *ptr, char *line, uint mask) switch (*line) { case 'A': - if ((mask & PFM_ALTERNATIVES) && is_field("Alternatives", line)) + if ((mask & PFM_ABIVERSION) && is_field("ABIVersion", line)) + pkg_set_string(pkg, PKG_ABIVERSION, line + strlen("ABIVersion") + 1); + else if ((mask & PFM_ALTERNATIVES) && is_field("Alternatives", line)) parse_alternatives(pkg, line + strlen("Alternatives") + 1); else if ((mask & PFM_ARCHITECTURE) && is_field("Architecture", line)) parse_architecture(pkg, line + strlen("Architecture") + 1); diff --git a/libopkg/pkg_parse.h b/libopkg/pkg_parse.h index d1f901a..e27eadd 100644 --- a/libopkg/pkg_parse.h +++ b/libopkg/pkg_parse.h @@ -54,6 +54,7 @@ int pkg_parse_line(void *ptr, char *line, uint mask); #define PFM_SUGGESTS (1 << 25) #define PFM_TAGS (1 << 26) #define PFM_VERSION (1 << 27) +#define PFM_ABIVERSION (1 << 28) #define PFM_ALL (~(uint)0)