Lubos Kardos ea526e7
From 9c1e995043a999dcac05a74aa8bcf934122d40ba Mon Sep 17 00:00:00 2001
Lubos Kardos ea526e7
From: Lubos Kardos <lkardos@redhat.com>
Lubos Kardos ea526e7
Date: Thu, 14 Apr 2016 13:12:51 +0200
Lubos Kardos ea526e7
Subject: [PATCH] Make creating index records consistent for rich and rich-weak
Lubos Kardos ea526e7
 deps
Lubos Kardos ea526e7
Lubos Kardos ea526e7
If a package contains a rich require dependency then this rich
Lubos Kardos ea526e7
dependency is parsed and also subdependencies are stored into the
Lubos Kardos ea526e7
require index.  For example for rich dependency "(A and B)" the whole
Lubos Kardos ea526e7
string "(A and B)" is stored into the index Requirename but
Lubos Kardos ea526e7
subdependcies "A" and "B" are stored into index too. Previously this
Lubos Kardos ea526e7
parsing and storing subdependencies was done only for require rich
Lubos Kardos ea526e7
dependencies. Now it is done also for weak rich dependecies (suggests,
Lubos Kardos ea526e7
supplements and recommends).
Lubos Kardos ea526e7
(rhbz:1325982)
Lubos Kardos ea526e7
---
Lubos Kardos ea526e7
 lib/rpmdb.c | 16 +++++++++++++---
Lubos Kardos ea526e7
 1 file changed, 13 insertions(+), 3 deletions(-)
Lubos Kardos ea526e7
Lubos Kardos ea526e7
diff --git a/lib/rpmdb.c b/lib/rpmdb.c
Lubos Kardos ea526e7
index 7992d9c..334c4d9 100644
Lubos Kardos ea526e7
--- a/lib/rpmdb.c
Lubos Kardos ea526e7
+++ b/lib/rpmdb.c
Lubos Kardos ea526e7
@@ -2342,9 +2342,19 @@ static rpmRC tag2index(dbiIndex dbi, rpmTagVal rpmtag,
Lubos Kardos ea526e7
 
Lubos Kardos ea526e7
 	rc += idxupdate(dbi, dbc, key, keylen, &rec);
Lubos Kardos ea526e7
 
Lubos Kardos ea526e7
-	if ((rpmtag == RPMTAG_REQUIRENAME || rpmtag == RPMTAG_CONFLICTNAME) && *(char *)key == '(') {
Lubos Kardos ea526e7
-	    if (rpmtdType(&tagdata) == RPM_STRING_ARRAY_TYPE) {
Lubos Kardos ea526e7
-		rc += updateRichDep(dbi, dbc, rpmtdGetString(&tagdata), &rec, idxupdate);
Lubos Kardos ea526e7
+	if (*(char *)key == '(') {
Lubos Kardos ea526e7
+	    switch (rpmtag) {
Lubos Kardos ea526e7
+	    case RPMTAG_REQUIRENAME:
Lubos Kardos ea526e7
+	    case RPMTAG_CONFLICTNAME:
Lubos Kardos ea526e7
+	    case RPMTAG_SUGGESTNAME:
Lubos Kardos ea526e7
+	    case RPMTAG_SUPPLEMENTNAME:
Lubos Kardos ea526e7
+	    case RPMTAG_RECOMMENDNAME:
Lubos Kardos ea526e7
+		if (rpmtdType(&tagdata) == RPM_STRING_ARRAY_TYPE) {
Lubos Kardos ea526e7
+		    rc += updateRichDep(dbi, dbc, rpmtdGetString(&tagdata),
Lubos Kardos ea526e7
+			&rec, idxupdate);
Lubos Kardos ea526e7
+		}
Lubos Kardos ea526e7
+	    default:
Lubos Kardos ea526e7
+		break;
Lubos Kardos ea526e7
 	    }
Lubos Kardos ea526e7
 	}
Lubos Kardos ea526e7
     }
Lubos Kardos ea526e7
-- 
Lubos Kardos ea526e7
1.9.3
Lubos Kardos ea526e7