Skip to content

Commit fc1aff5

Browse files
authored
Merge pull request #296 from j-mracek/module-updateinfo
Add support for modular updateinfo.xml data
2 parents 5e1e4f2 + aac9f0c commit fc1aff5

2 files changed

Lines changed: 45 additions & 0 deletions

File tree

ext/repo_updateinfoxml.c

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
* <pkglist>
3838
* <collection short="F8">
3939
* <name>Fedora 8</name>
40+
* <module name="pki-deps" stream="10.6" version="20181019123559" context="9edba152" arch="x86_64"/>
4041
* <package arch="ppc64" name="imlib-debuginfo" release="6.fc8" src="http://download.fedoraproject.org/pub/fedora/linux/updates/8/ppc64/imlib-debuginfo-1.9.15-6.fc8.ppc64.rpm" version="1.9.15">
4142
* <filename>imlib-debuginfo-1.9.15-6.fc8.ppc64.rpm</filename>
4243
* <reboot_suggested>True</reboot_suggested>
@@ -70,6 +71,7 @@ enum state {
7071
STATE_RELOGIN,
7172
STATE_RIGHTS,
7273
STATE_SEVERITY,
74+
STATE_MODULE,
7375
NUMSTATES
7476
};
7577

@@ -92,6 +94,7 @@ static struct solv_xmlparser_element stateswitches[] = {
9294
{ STATE_PKGLIST, "collection", STATE_COLLECTION, 0 },
9395
{ STATE_COLLECTION, "name", STATE_NAME, 1 },
9496
{ STATE_COLLECTION, "package", STATE_PACKAGE, 0 },
97+
{ STATE_COLLECTION, "module", STATE_MODULE, 0 },
9598
{ STATE_PACKAGE, "filename", STATE_FILENAME, 1 },
9699
{ STATE_PACKAGE, "reboot_suggested",STATE_REBOOT, 1 },
97100
{ STATE_PACKAGE, "restart_suggested",STATE_RESTART, 1 },
@@ -321,6 +324,40 @@ startElement(struct solv_xmlparser *xmlp, int state, const char *name, const cha
321324
repodata_set_id(pd->data, pd->collhandle, UPDATE_COLLECTION_ARCH, a);
322325
break;
323326
}
327+
case STATE_MODULE:
328+
{
329+
const char *name = 0, *stream = 0, *version = 0, *context = 0, *arch = 0;
330+
Id name_id, stream_id, version_id, context_id, arch_id = 0;
331+
for (; *atts; atts += 2)
332+
{
333+
if (!strcmp(*atts, "arch"))
334+
arch = atts[1];
335+
else if (!strcmp(*atts, "name"))
336+
name = atts[1];
337+
else if (!strcmp(*atts, "stream"))
338+
stream = atts[1];
339+
else if (!strcmp(*atts, "version"))
340+
version = atts[1];
341+
else if (!strcmp(*atts, "context"))
342+
context = atts[1];
343+
}
344+
name_id = pool_str2id(pool, name, 1);
345+
if (arch)
346+
arch_id = pool_str2id(pool, arch, 1);
347+
stream_id = pool_str2id(pool, stream, 1);
348+
version_id = pool_str2id(pool, version, 1);
349+
context_id = pool_str2id(pool, context, 1);
350+
351+
Id module_handle = repodata_new_handle(pd->data);
352+
repodata_set_id(pd->data, module_handle, UPDATE_MODULE_NAME, name_id);
353+
repodata_set_id(pd->data, module_handle, UPDATE_MODULE_STREAM, stream_id);
354+
repodata_set_id(pd->data, module_handle, UPDATE_MODULE_VERSION, version_id);
355+
repodata_set_id(pd->data, module_handle, UPDATE_MODULE_CONTEXT, context_id);
356+
if (arch_id)
357+
repodata_set_id(pd->data, module_handle, UPDATE_MODULE_ARCH, arch_id);
358+
repodata_add_flexarray(pd->data, pd->handle, UPDATE_MODULE, module_handle);
359+
break;
360+
}
324361

325362
default:
326363
break;

src/knownid.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,14 @@ KNOWNID(SIGNATURE_TIME, "signature:time"),
250250
KNOWNID(SIGNATURE_EXPIRES, "signature:expires"),
251251
KNOWNID(SIGNATURE_DATA, "signature:data"),
252252

253+
/* 'content' of patch, usually list of modules */
254+
KNOWNID(UPDATE_MODULE, "update:module"), /* "name stream version context arch" */
255+
KNOWNID(UPDATE_MODULE_NAME, "update:module:name"), /* name */
256+
KNOWNID(UPDATE_MODULE_STREAM, "update:module:stream"), /* stream */
257+
KNOWNID(UPDATE_MODULE_VERSION, "update:module:version"), /* version */
258+
KNOWNID(UPDATE_MODULE_CONTEXT, "update:module:context"), /* context */
259+
KNOWNID(UPDATE_MODULE_ARCH, "update:module:arch"), /* architecture */
260+
253261
KNOWNID(ID_NUM_INTERNAL, 0)
254262

255263
#ifdef KNOWNID_INITIALIZE

0 commit comments

Comments
 (0)