From 7874d8cf1dc43163e5fd6c822587d000e7cf67af Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Thu, 3 Sep 2020 14:05:05 +0200 Subject: [PATCH] repo_testcase: support reading/writing of repository meta data The meta data is stored in a REPOSITORY_TESTCASE_META flexarray. We currently only read/write strings. --- ext/repo_testcase.c | 28 ++++++++++++++++++++++++++++ src/knownid.h | 2 ++ 2 files changed, 30 insertions(+) diff --git a/ext/repo_testcase.c b/ext/repo_testcase.c index 5cc03271..90607cf2 100644 --- a/ext/repo_testcase.c +++ b/ext/repo_testcase.c @@ -432,6 +432,23 @@ testcase_write_testtags(Repo *repo, FILE *fp) Queue q; fprintf(fp, "=Ver: 3.0\n"); + if (repo_lookup_type(repo, SOLVID_META, REPOSITORY_TESTCASE_META)) + { + Dataiterator di; + dataiterator_init(&di, pool, repo, SOLVID_META, 0, 0, 0); + dataiterator_prepend_keyname(&di, REPOSITORY_TESTCASE_META); + while (dataiterator_step(&di)) + { + const char *value = repodata_stringify(pool, di.data, di.key, &di.kv, di.flags); + if (!value) + continue; + if (strchr(value, '\n')) + continue; + fprintf(fp, "=Met: %s %s\n", pool_id2str(pool, di.key->name), value); + } + dataiterator_free(&di); + } + queue_init(&q); FOR_REPO_SOLVABLES(repo, p, s) { @@ -537,6 +554,7 @@ testcase_add_testtags(Repo *repo, FILE *fp, int flags) int nfilelist = 0; int tagsversion = 0; int addselfprovides = 1; /* for compat reasons */ + Id metah = 0; data = repo_add_repodata(repo, flags); s = 0; @@ -610,6 +628,16 @@ testcase_add_testtags(Repo *repo, FILE *fp, int flags) s->evr = makeevr(pool, sp[1]); s->arch = strcmp(sp[3], "-") ? pool_str2id(pool, sp[3], 1) : 0; continue; + case 'M' << 16 | 'e' << 8 | 't': + if (split(line + 5, sp, 2) != 2 || !sp[0][0]) + break; + if (!metah) + { + metah = repodata_new_handle(data); + repodata_add_flexarray(data, SOLVID_META, REPOSITORY_TESTCASE_META, metah); + } + repodata_set_str(data, metah, pool_str2id(pool, sp[0], 1), sp[1]); + break; default: break; } diff --git a/src/knownid.h b/src/knownid.h index 4c1730b5..07b3a9c2 100644 --- a/src/knownid.h +++ b/src/knownid.h @@ -268,6 +268,8 @@ KNOWNID(LIBSOLV_SELF_DESTRUCT_PKG, "libsolv-self-destruct-pkg()"), /* this KNOWNID(SOLVABLE_CONSTRAINS, "solvable:constrains"), /* conda */ KNOWNID(SOLVABLE_TRACK_FEATURES, "solvable:track_features"), /* conda */ +KNOWNID(REPOSITORY_TESTCASE_META, "repository:testcase:meta"), + KNOWNID(ID_NUM_INTERNAL, 0) #ifdef KNOWNID_INITIALIZE -- 2.47.2