Blob Blame History Raw
From 1edb35a3bd9abcede3a200471a4d1868f8054c99 Mon Sep 17 00:00:00 2001
From: Michael Schroeder <mls@suse.de>
Date: Tue, 18 Apr 2023 11:57:50 +0200
Subject: [PATCH 1/5] Treat condition both as positive and negative literal in
 pool_add_pos_literals_complex_dep

That's because (A IF B ELSE C) gets rewritten to (A OR ~B) AND (C OR B) and
(A UNLESS B ELSE C) gets rewritten to (A AND ~B) OR (C AND B). In both
cases we have A, B, ~B, C.

This resolves issue #527
---
 src/cplxdeps.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/cplxdeps.c b/src/cplxdeps.c
index 6c40752e..26e754d9 100644
--- a/src/cplxdeps.c
+++ b/src/cplxdeps.c
@@ -405,6 +405,7 @@ pool_add_pos_literals_complex_dep(Pool *pool, Id dep, Queue *q, Map *m, int neg)
 	      Reldep *rd2 = GETRELDEP(pool, rd->evr);
 	      if (rd2->flags == REL_ELSE)
 		{
+	          pool_add_pos_literals_complex_dep(pool, rd2->name, q, m, !neg);
 	          pool_add_pos_literals_complex_dep(pool, rd2->evr, q, m, !neg);
 		  dep = rd2->name;
 		}
-- 
2.40.1