Skip to content

Commit 4c4f8e5

Browse files
committed
Make arch<->noarch pkg changes work for suse patches
This means we add a single pkg < evr conflict for noarch packages, and both pkg.arch < evr and pkg.noarch < evr conflicts otherwise.
1 parent b8c3b20 commit 4c4f8e5

1 file changed

Lines changed: 17 additions & 11 deletions

File tree

ext/repo_updateinfoxml.c

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,7 @@ startElement(struct solv_xmlparser *xmlp, int state, const char *name, const cha
298298
{
299299
const char *arch = 0, *name = 0;
300300
Id evr = makeevr_atts(pool, pd, atts); /* parse "epoch", "version", "release" */
301-
Id n, a = 0;
302-
Id rel_id;
301+
Id n, a, id;
303302

304303
for (; *atts; atts += 2)
305304
{
@@ -308,17 +307,24 @@ startElement(struct solv_xmlparser *xmlp, int state, const char *name, const cha
308307
else if (!strcmp(*atts, "name"))
309308
name = atts[1];
310309
}
311-
/* generated Id for name */
312-
n = pool_str2id(pool, name, 1);
313-
rel_id = n;
314-
if (arch)
310+
n = name ? pool_str2id(pool, name, 1) : 0;
311+
a = arch ? pool_str2id(pool, arch, 1) : 0;
312+
313+
/* generated conflicts for the package */
314+
if (a && a != ARCH_NOARCH)
315+
{
316+
id = pool_rel2id(pool, n, a, REL_ARCH, 1);
317+
id = pool_rel2id(pool, id, evr, REL_LT, 1);
318+
solvable->conflicts = repo_addid_dep(pd->repo, solvable->conflicts, id, 0);
319+
id = pool_rel2id(pool, n, ARCH_NOARCH, REL_ARCH, 1);
320+
id = pool_rel2id(pool, id, evr, REL_LT, 1);
321+
solvable->conflicts = repo_addid_dep(pd->repo, solvable->conflicts, id, 0);
322+
}
323+
else
315324
{
316-
/* generate Id for arch and combine with name */
317-
a = pool_str2id(pool, arch, 1);
318-
rel_id = pool_rel2id(pool, n, a, REL_ARCH, 1);
325+
id = pool_rel2id(pool, n, evr, REL_LT, 1);
326+
solvable->conflicts = repo_addid_dep(pd->repo, solvable->conflicts, id, 0);
319327
}
320-
rel_id = pool_rel2id(pool, rel_id, evr, REL_LT, 1);
321-
solvable->conflicts = repo_addid_dep(pd->repo, solvable->conflicts, rel_id, 0);
322328

323329
/* who needs the collection anyway? */
324330
pd->collhandle = repodata_new_handle(pd->data);

0 commit comments

Comments
 (0)