Blame SOURCES/0006-Add-support-for-modular-updateinfoxml-data.patch

5aaecf
From c14beb31bea06d0a46176a20cef4261067d5fc63 Mon Sep 17 00:00:00 2001
5aaecf
From: Jaroslav Mracek <jmracek@redhat.com>
5aaecf
Date: Thu, 17 Jan 2019 12:48:05 +0100
5aaecf
Subject: [PATCH] Add support for modular updateinfo.xml data
5aaecf
5aaecf
---
5aaecf
 ext/repo_updateinfoxml.c | 37 +++++++++++++++++++++++++++++++++++++
5aaecf
 src/knownid.h            |  8 ++++++++
5aaecf
 2 files changed, 45 insertions(+)
5aaecf
5aaecf
diff --git a/ext/repo_updateinfoxml.c b/ext/repo_updateinfoxml.c
5aaecf
index 7ba0062..5e03105 100644
5aaecf
--- a/ext/repo_updateinfoxml.c
5aaecf
+++ b/ext/repo_updateinfoxml.c
5aaecf
@@ -37,6 +37,7 @@
5aaecf
  *     <pkglist>
5aaecf
  *       <collection short="F8">
5aaecf
  *         <name>Fedora 8</name>
5aaecf
+ *         <module name="pki-deps" stream="10.6" version="20181019123559" context="9edba152" arch="x86_64"/>
5aaecf
  *         <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">
5aaecf
  *           <filename>imlib-debuginfo-1.9.15-6.fc8.ppc64.rpm</filename>
5aaecf
  *           <reboot_suggested>True</reboot_suggested>
5aaecf
@@ -70,6 +71,7 @@ enum state {
5aaecf
   STATE_RELOGIN,
5aaecf
   STATE_RIGHTS,
5aaecf
   STATE_SEVERITY,
5aaecf
+  STATE_MODULE,
5aaecf
   NUMSTATES
5aaecf
 };
5aaecf
 
5aaecf
@@ -92,6 +94,7 @@ static struct solv_xmlparser_element stateswitches[] = {
5aaecf
   { STATE_PKGLIST,     "collection",      STATE_COLLECTION,  0 },
5aaecf
   { STATE_COLLECTION,  "name",            STATE_NAME,        1 },
5aaecf
   { STATE_COLLECTION,  "package",         STATE_PACKAGE,     0 },
5aaecf
+  { STATE_COLLECTION,  "module",          STATE_MODULE,      0 },
5aaecf
   { STATE_PACKAGE,     "filename",        STATE_FILENAME,    1 },
5aaecf
   { STATE_PACKAGE,     "reboot_suggested",STATE_REBOOT,      1 },
5aaecf
   { STATE_PACKAGE,     "restart_suggested",STATE_RESTART,    1 },
5aaecf
@@ -321,6 +324,40 @@ startElement(struct solv_xmlparser *xmlp, int state, const char *name, const cha
5aaecf
 	  repodata_set_id(pd->data, pd->collhandle, UPDATE_COLLECTION_ARCH, a);
5aaecf
         break;
5aaecf
       }
5aaecf
+    case STATE_MODULE:
5aaecf
+      {
5aaecf
+        const char *name = 0, *stream = 0, *version = 0, *context = 0, *arch = 0;
5aaecf
+        Id name_id, stream_id, version_id, context_id, arch_id = 0;
5aaecf
+        for (; *atts; atts += 2)
5aaecf
+          {
5aaecf
+            if (!strcmp(*atts, "arch"))
5aaecf
+              arch = atts[1];
5aaecf
+            else if (!strcmp(*atts, "name"))
5aaecf
+              name = atts[1];
5aaecf
+            else if (!strcmp(*atts, "stream"))
5aaecf
+              stream = atts[1];
5aaecf
+            else if (!strcmp(*atts, "version"))
5aaecf
+              version = atts[1];
5aaecf
+            else if (!strcmp(*atts, "context"))
5aaecf
+              context = atts[1];
5aaecf
+          }
5aaecf
+        name_id = pool_str2id(pool, name, 1);
5aaecf
+        if (arch)
5aaecf
+          arch_id = pool_str2id(pool, arch, 1);
5aaecf
+        stream_id = pool_str2id(pool, stream, 1);
5aaecf
+        version_id = pool_str2id(pool, version, 1);
5aaecf
+        context_id = pool_str2id(pool, context, 1);
5aaecf
+
5aaecf
+        Id module_handle = repodata_new_handle(pd->data);
5aaecf
+        repodata_set_id(pd->data, module_handle, UPDATE_MODULE_NAME, name_id);
5aaecf
+        repodata_set_id(pd->data, module_handle, UPDATE_MODULE_STREAM, stream_id);
5aaecf
+        repodata_set_id(pd->data, module_handle, UPDATE_MODULE_VERSION, version_id);
5aaecf
+        repodata_set_id(pd->data, module_handle, UPDATE_MODULE_CONTEXT, context_id);
5aaecf
+        if (arch_id)
5aaecf
+          repodata_set_id(pd->data, module_handle, UPDATE_MODULE_ARCH, arch_id);
5aaecf
+        repodata_add_flexarray(pd->data, pd->handle, UPDATE_MODULE, module_handle);
5aaecf
+        break;
5aaecf
+      }
5aaecf
 
5aaecf
     default:
5aaecf
       break;
5aaecf
diff --git a/src/knownid.h b/src/knownid.h
5aaecf
index 64cc6fc..14d2ded 100644
5aaecf
--- a/src/knownid.h
5aaecf
+++ b/src/knownid.h
5aaecf
@@ -262,6 +262,14 @@ KNOWNID(SOLVABLE_INSTALLSTATUS,		"solvable:installstatus"),	/* debian install st
5aaecf
 
5aaecf
 KNOWNID(SOLVABLE_PREREQ_IGNOREINST,	"solvable:prereq_ignoreinst"),	/* ignore these pre-requires for installed packages */
5aaecf
 
5aaecf
+/* 'content' of patch, usually list of modules */
5aaecf
+KNOWNID(UPDATE_MODULE,                  "update:module"),              /*  "name stream version context arch" */
5aaecf
+KNOWNID(UPDATE_MODULE_NAME,             "update:module:name"),         /*   name */
5aaecf
+KNOWNID(UPDATE_MODULE_STREAM,           "update:module:stream"),       /*   stream */
5aaecf
+KNOWNID(UPDATE_MODULE_VERSION,          "update:module:version"),      /*   version */
5aaecf
+KNOWNID(UPDATE_MODULE_CONTEXT,          "update:module:context"),      /*   context */
5aaecf
+KNOWNID(UPDATE_MODULE_ARCH,             "update:module:arch"),         /*   architecture */
5aaecf
+
5aaecf
 KNOWNID(ID_NUM_INTERNAL,		0)
5aaecf
 
5aaecf
 #ifdef KNOWNID_INITIALIZE
5aaecf
--
5aaecf
libgit2 0.27.7
5aaecf