From 1f0e7b46f4d910dec0fba1d6b9bbb038bcc3f89f Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Tue, 12 Sep 2023 13:14:17 +0200 Subject: [PATCH] Support rich deps in SOLVABLE_PREREQ_IGNOREINST --- ext/repo_rpmdb.c | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/ext/repo_rpmdb.c b/ext/repo_rpmdb.c index d78893ee..a60ed4fe 100644 --- a/ext/repo_rpmdb.c +++ b/ext/repo_rpmdb.c @@ -678,29 +678,32 @@ makedeps(Pool *pool, Repo *repo, RpmHead *rpmhead, int tagn, int tagv, int tagf, if ((f[i] & (DEP_LESS|DEP_EQUAL|DEP_GREATER)) == 0 && n[i][0] == '(') { id = pool_parserpmrichdep(pool, n[i]); - if (id) - *ida++ = id; - else - cc--; - continue; + if (!id) + { + cc--; + continue; + } } + else #endif - id = pool_str2id(pool, n[i], 1); - if (f[i] & (DEP_LESS|DEP_GREATER|DEP_EQUAL)) { - Id evr; - int fl = 0; - if ((f[i] & DEP_LESS) != 0) - fl |= REL_LT; - if ((f[i] & DEP_EQUAL) != 0) - fl |= REL_EQ; - if ((f[i] & DEP_GREATER) != 0) - fl |= REL_GT; - if (v[i][0] == '0' && v[i][1] == ':' && v[i][2]) - evr = pool_str2id(pool, v[i] + 2, 1); - else - evr = pool_str2id(pool, v[i], 1); - id = pool_rel2id(pool, id, evr, fl, 1); + id = pool_str2id(pool, n[i], 1); + if (f[i] & (DEP_LESS|DEP_GREATER|DEP_EQUAL)) + { + Id evr; + int fl = 0; + if ((f[i] & DEP_LESS) != 0) + fl |= REL_LT; + if ((f[i] & DEP_EQUAL) != 0) + fl |= REL_EQ; + if ((f[i] & DEP_GREATER) != 0) + fl |= REL_GT; + if (v[i][0] == '0' && v[i][1] == ':' && v[i][2]) + evr = pool_str2id(pool, v[i] + 2, 1); + else + evr = pool_str2id(pool, v[i], 1); + id = pool_rel2id(pool, id, evr, fl, 1); + } } *ida++ = id; if (haspre == 2 && ignq) -- 2.47.2