From 8ecb7e6d51dbff238ad2f4d9a9d6346a78e0bb51 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 28 Mar 2023 09:13:13 +0000 Subject: [PATCH] import libsolv-0.7.22-4.el9 --- .gitignore | 1 + .libsolv.metadata | 1 + ...t-for-computing-hashes-using-OpenSSL.patch | 165 ++++ ...evert-Improve-choice-rule-generation.patch | 348 ++++++++ ...ex_deps-requirement-to-choice1b-test.patch | 23 + ...04-Revert-Add-more-choicerules-tests.patch | 314 +++++++ SPECS/libsolv.spec | 844 ++++++++++++++++++ 7 files changed, 1696 insertions(+) create mode 100644 .gitignore create mode 100644 .libsolv.metadata create mode 100644 SOURCES/0001-Add-support-for-computing-hashes-using-OpenSSL.patch create mode 100644 SOURCES/0002-Revert-Improve-choice-rule-generation.patch create mode 100644 SOURCES/0003-Revert-Add-complex_deps-requirement-to-choice1b-test.patch create mode 100644 SOURCES/0004-Revert-Add-more-choicerules-tests.patch create mode 100644 SPECS/libsolv.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e6ccce1 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/libsolv-0.7.22.tar.gz diff --git a/.libsolv.metadata b/.libsolv.metadata new file mode 100644 index 0000000..cd9f6bd --- /dev/null +++ b/.libsolv.metadata @@ -0,0 +1 @@ +d58e6030f2ee6ffaf34642e1da841708ab21eefc SOURCES/libsolv-0.7.22.tar.gz diff --git a/SOURCES/0001-Add-support-for-computing-hashes-using-OpenSSL.patch b/SOURCES/0001-Add-support-for-computing-hashes-using-OpenSSL.patch new file mode 100644 index 0000000..5a7c78a --- /dev/null +++ b/SOURCES/0001-Add-support-for-computing-hashes-using-OpenSSL.patch @@ -0,0 +1,165 @@ +From 11eab76046e2df31248d358ab85bdbcf366d2c78 Mon Sep 17 00:00:00 2001 +From: Nicola Sella +Date: Wed, 11 Nov 2020 14:52:14 +0100 +Subject: [PATCH 1/1] Add support for computing hashes using OpenSSL + +It adds WITH_OPENSSL build option. +If it is ON, OpenSSL will be used instead of internal implementation +of computing hashes (MD5, SHA1, SHA224, SHA256, SHA384, SHA512). + +Rebase of https://github.com/openSUSE/libsolv/commit/9839a88e4fda23b46015170b201c98da7bcdd55e +--- + CMakeLists.txt | 13 +++++++++++-- + src/CMakeLists.txt | 16 +++++++++++----- + src/chksum.c | 32 ++++++++++++++++++++++++++++++++ + tools/CMakeLists.txt | 2 +- + 4 files changed, 55 insertions(+), 8 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 3541f496..e73dc552 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -40,6 +40,7 @@ OPTION (ENABLE_ZCHUNK_COMPRESSION "Build with zchunk compression support?" OFF) + OPTION (WITH_SYSTEM_ZCHUNK "Use system zchunk library?" OFF) + OPTION (WITH_LIBXML2 "Build with libxml2 instead of libexpat?" OFF) + OPTION (WITHOUT_COOKIEOPEN "Disable the use of stdio cookie opens?" OFF) ++OPTION (WITH_OPENSSL "Use OpenSSL instead of internal implementation of hashes?" OFF) + + include (GNUInstallDirs) + message (STATUS "Libraries will be installed in ${CMAKE_INSTALL_FULL_LIBDIR}") +@@ -164,6 +165,11 @@ INCLUDE_DIRECTORIES (${EXPAT_INCLUDE_DIRS}) + ENDIF (WITH_LIBXML2 ) + ENDIF (ENABLE_RPMMD OR ENABLE_SUSEREPO OR ENABLE_APPDATA OR ENABLE_COMPS OR ENABLE_HELIXREPO OR ENABLE_MDKREPO) + ++IF (WITH_OPENSSL) ++FIND_PACKAGE (OpenSSL REQUIRED) ++INCLUDE_DIRECTORIES (${OPENSSL_INCLUDE_DIR}) ++ENDIF(WITH_OPENSSL) ++ + IF (ENABLE_ZLIB_COMPRESSION) + FIND_PACKAGE (ZLIB REQUIRED) + INCLUDE_DIRECTORIES (${ZLIB_INCLUDE_DIRS}) +@@ -288,8 +294,8 @@ ENDIF (${CMAKE_MAJOR_VERSION} GREATER 2) + + # should create config.h with #cmakedefine instead... + FOREACH (VAR HAVE_STRCHRNUL HAVE_FOPENCOOKIE HAVE_FUNOPEN WORDS_BIGENDIAN +- HAVE_RPM_DB_H HAVE_RPMDBNEXTITERATORHEADERBLOB HAVE_RPMDBFSTAT +- WITH_LIBXML2 WITHOUT_COOKIEOPEN) ++ HAVE_RPM_DB_H HAVE_PGPDIGGETPARAMS HAVE_RPMDBNEXTITERATORHEADERBLOB HAVE_RPMDBFSTAT ++ WITH_LIBXML2 WITHOUT_COOKIEOPEN WITH_OPENSSL) + IF(${VAR}) + ADD_DEFINITIONS (-D${VAR}=1) + SET (SWIG_FLAGS ${SWIG_FLAGS} -D${VAR}) +@@ -426,6 +432,9 @@ ENDIF (ENABLE_ZSTD_COMPRESSION) + IF (WITH_SYSTEM_ZCHUNK) + SET (SYSTEM_LIBRARIES ${SYSTEM_LIBRARIES} ${ZCHUNK_LIBRARIES}) + ENDIF (WITH_SYSTEM_ZCHUNK) ++IF (WITH_OPENSSL) ++SET (SYSTEM_LIBRARIES ${SYSTEM_LIBRARIES} ${OPENSSL_CRYPTO_LIBRARY}) ++ENDIF (WITH_OPENSSL) + IF (ENABLE_RPMDB) + SET (SYSTEM_LIBRARIES ${RPMDB_LIBRARY} ${SYSTEM_LIBRARIES}) + ENDIF (ENABLE_RPMDB) +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index bbf30bac..ece870ee 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -18,9 +18,8 @@ SET (libsolv_SRCS + solver.c solverdebug.c repo_solv.c repo_write.c evr.c pool.c + queue.c repo.c repodata.c repopage.c util.c policy.c solvable.c + transaction.c order.c rules.c problems.c linkedpkg.c cplxdeps.c +- chksum.c md5.c sha1.c sha2.c solvversion.c selection.c +- fileprovides.c diskusage.c suse.c solver_util.c cleandeps.c +- userinstalled.c filelistfilter.c) ++ chksum.c solvversion.c selection.c fileprovides.c diskusage.c ++ suse.c solver_util.c cleandeps.c userinstalled.c filelistfilter.c) + + SET (libsolv_HEADERS + bitmap.h evr.h hash.h policy.h poolarch.h poolvendor.h pool.h +@@ -43,14 +42,21 @@ IF (WIN32) + LIST (APPEND libsolv_SRCS ${WIN32_COMPAT_SOURCES}) + ENDIF (WIN32) + ++IF (NOT WITH_OPENSSL) ++ SET (libsolv_SRCS ${libsolv_SRCS} md5.c sha1.c sha2.c) ++ENDIF (NOT WITH_OPENSSL) ++ + IF (HAVE_LINKER_VERSION_SCRIPT) + SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINK_FLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/src/libsolv.ver") + ENDIF (HAVE_LINKER_VERSION_SCRIPT) + + IF (DISABLE_SHARED) +- ADD_LIBRARY (libsolv STATIC ${libsolv_SRCS}) ++ ADD_LIBRARY (libsolv STATIC ${libsolv_SRCS}) + ELSE (DISABLE_SHARED) +- ADD_LIBRARY (libsolv SHARED ${libsolv_SRCS}) ++ ADD_LIBRARY (libsolv SHARED ${libsolv_SRCS}) ++ IF (WITH_OPENSSL) ++ TARGET_LINK_LIBRARIES (libsolv ${OPENSSL_CRYPTO_LIBRARY}) ++ ENDIF (WITH_OPENSSL) + ENDIF (DISABLE_SHARED) + + IF (WIN32) +diff --git a/src/chksum.c b/src/chksum.c +index 1f8ab471..9189b744 100644 +--- a/src/chksum.c ++++ b/src/chksum.c +@@ -15,10 +15,42 @@ + #include "util.h" + #include "chksum.h" + ++#ifdef WITH_OPENSSL ++ ++#include ++#include ++ ++typedef SHA_CTX SHA1_CTX; ++typedef SHA256_CTX SHA224_CTX; ++typedef SHA512_CTX SHA384_CTX; ++ ++#define solv_MD5_Init(ctx) MD5_Init(ctx) ++#define solv_MD5_Update(ctx, data, len) MD5_Update(ctx, data, len) ++#define solv_MD5_Final(md, ctx) MD5_Final(md, ctx) ++#define solv_SHA1_Init(ctx) SHA1_Init(ctx) ++#define solv_SHA1_Update(ctx, data, len) SHA1_Update(ctx, data, len) ++#define solv_SHA1_Final(ctx, md) SHA1_Final(md, ctx) ++#define solv_SHA224_Init(ctx) SHA224_Init(ctx) ++#define solv_SHA224_Update(ctx, data, len) SHA224_Update(ctx, data, len) ++#define solv_SHA224_Final(md, ctx) SHA224_Final(md, ctx) ++#define solv_SHA256_Init(ctx) SHA256_Init(ctx) ++#define solv_SHA256_Update(ctx, data, len) SHA256_Update(ctx, data, len) ++#define solv_SHA256_Final(md, ctx) SHA256_Final(md, ctx) ++#define solv_SHA384_Init(ctx) SHA384_Init(ctx) ++#define solv_SHA384_Update(ctx, data, len) SHA384_Update(ctx, data, len) ++#define solv_SHA384_Final(md, ctx) SHA384_Final(md, ctx) ++#define solv_SHA512_Init(ctx) SHA512_Init(ctx) ++#define solv_SHA512_Update(ctx, data, len) SHA512_Update(ctx, data, len) ++#define solv_SHA512_Final(md, ctx) SHA512_Final(md, ctx) ++ ++#else ++ + #include "md5.h" + #include "sha1.h" + #include "sha2.h" + ++#endif ++ + #ifdef _WIN32 + #include "strfncs.h" + #endif +diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt +index f19030eb..d477e195 100644 +--- a/tools/CMakeLists.txt ++++ b/tools/CMakeLists.txt +@@ -116,7 +116,7 @@ SET(tools_list ${tools_list} repo2solv) + ENDIF (NOT WIN32) + + ADD_EXECUTABLE (dumpsolv dumpsolv.c ) +-TARGET_LINK_LIBRARIES (dumpsolv libsolv) ++TARGET_LINK_LIBRARIES (dumpsolv libsolv ${SYSTEM_LIBRARIES}) + + ADD_EXECUTABLE (mergesolv mergesolv.c ) + TARGET_LINK_LIBRARIES (mergesolv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) +-- +2.26.2 + diff --git a/SOURCES/0002-Revert-Improve-choice-rule-generation.patch b/SOURCES/0002-Revert-Improve-choice-rule-generation.patch new file mode 100644 index 0000000..1045808 --- /dev/null +++ b/SOURCES/0002-Revert-Improve-choice-rule-generation.patch @@ -0,0 +1,348 @@ +From 21090e6067660e4a22d6227118d5cfc30629d548 Mon Sep 17 00:00:00 2001 +From: Nicola Sella +Date: Wed, 7 Dec 2022 16:11:10 +0100 +Subject: [PATCH 1/3] Revert "Improve choice rule generation" + +This reverts commit 1da9bef88dd269055cbd7eda2f3572963d6d9b64. +--- + src/rules.c | 169 ++++++++++++++++++++++++++++++++++++++------------- + src/solver.c | 45 -------------- + 2 files changed, 126 insertions(+), 88 deletions(-) + +diff --git a/src/rules.c b/src/rules.c +index 2c56959c..a260c2de 100644 +--- a/src/rules.c ++++ b/src/rules.c +@@ -3255,12 +3255,6 @@ solver_rule2rules(Solver *solv, Id rid, Queue *q, int recursive) + + + /* check if the newest versions of pi still provides the dependency we're looking for */ +-/* pi: installed package +- * r: rule for the dependency +- * m: map with all positive elements of r +- * return 0: at least one provider +- * return 1: the newest versions do not provide the dependency +- */ + static int + solver_choicerulecheck(Solver *solv, Id pi, Rule *r, Map *m, Queue *q) + { +@@ -3309,6 +3303,94 @@ solver_choicerulecheck(Solver *solv, Id pi, Rule *r, Map *m, Queue *q) + return 1; /* none of the new packages provided it */ + } + ++static int ++solver_choicerulecheck2(Solver *solv, Id pi, Id pt, Queue *q) ++{ ++ Pool *pool = solv->pool; ++ Rule *ur; ++ Id p, pp; ++ int i; ++ ++ if (!q->count || q->elements[0] != pi) ++ { ++ if (q->count) ++ queue_empty(q); ++ ur = solv->rules + solv->updaterules + (pi - pool->installed->start); ++ if (!ur->p) ++ ur = solv->rules + solv->featurerules + (pi - pool->installed->start); ++ if (!ur->p) ++ return 1; /* orphaned, thus newest */ ++ queue_push2(q, pi, 0); ++ FOR_RULELITERALS(p, pp, ur) ++ if (p > 0 && p != pi) ++ queue_push(q, p); ++ queue_push(q, pi); ++ } ++ if (q->count <= 3) ++ return q->count == 3 && q->elements[2] == pt ? 1 : 0; ++ if (!q->elements[1]) ++ { ++ queue_deleten(q, 0, 2); ++ policy_filter_unwanted(solv, q, POLICY_MODE_CHOOSE); ++ queue_unshift(q, 1); /* filter mark */ ++ queue_unshift(q, pi); ++ } ++ for (i = 2; i < q->count; i++) ++ if (q->elements[i] == pt) ++ return 1; ++ return 0; /* not newest */ ++} ++ ++static int ++solver_choicerulecheck3(Solver *solv, Id pt, Queue *q) ++{ ++ Pool *pool = solv->pool; ++ Id p, pp; ++ int i; ++ ++ if (!q->count || q->elements[0] != pt) ++ { ++ Solvable *s = pool->solvables + pt; ++ if (q->count) ++ queue_empty(q); ++ /* no installed package, so check all with same name */ ++ queue_push2(q, pt, 0); ++ FOR_PROVIDES(p, pp, s->name) ++ if (pool->solvables[p].name == s->name && p != pt) ++ queue_push(q, p); ++ queue_push(q, pt); ++ } ++ if (q->count <= 3) ++ return q->count == 3 && q->elements[2] == pt ? 1 : 0; ++ if (!q->elements[1]) ++ { ++ queue_deleten(q, 0, 2); ++ policy_filter_unwanted(solv, q, POLICY_MODE_CHOOSE); ++ queue_unshift(q, 1); /* filter mark */ ++ queue_unshift(q, pt); ++ } ++ for (i = 2; i < q->count; i++) ++ if (q->elements[i] == pt) ++ return 1; ++ return 0; /* not newest */ ++} ++ ++static inline void ++queue_removeelement(Queue *q, Id el) ++{ ++ int i, j; ++ for (i = 0; i < q->count; i++) ++ if (q->elements[i] == el) ++ break; ++ if (i < q->count) ++ { ++ for (j = i++; i < q->count; i++) ++ if (q->elements[i] != el) ++ q->elements[j++] = q->elements[i]; ++ queue_truncate(q, j); ++ } ++} ++ + static Id + choicerule_find_installed(Pool *pool, Id p) + { +@@ -3357,14 +3439,14 @@ solver_addchoicerules(Solver *solv) + Pool *pool = solv->pool; + Map m, mneg; + Rule *r; +- Queue q, qi, qcheck, infoq; ++ Queue q, qi, qcheck, qcheck2, infoq; + int i, j, rid, havechoice, negcnt; + Id p, d, pp, p2; + Solvable *s; + Id lastaddedp, lastaddedd; + int lastaddedcnt; + unsigned int now; +- int isinstalled; ++ int isnewest = 0; + + solv->choicerules = solv->nrules; + if (!pool->installed) +@@ -3376,6 +3458,7 @@ solver_addchoicerules(Solver *solv) + queue_init(&q); + queue_init(&qi); + queue_init(&qcheck); ++ queue_init(&qcheck2); + queue_init(&infoq); + map_init(&m, pool->nsolvables); + map_init(&mneg, pool->nsolvables); +@@ -3395,28 +3478,20 @@ solver_addchoicerules(Solver *solv) + if (r->p >= 0 || ((r->d == 0 || r->d == -1) && r->w2 <= 0)) + continue; /* only look at requires rules */ + /* solver_printrule(solv, SOLV_DEBUG_RESULT, r); */ ++ queue_empty(&q); + queue_empty(&qi); + havechoice = 0; +- isinstalled = 0; + FOR_RULELITERALS(p, pp, r) + { + if (p < 0) +- { +- Solvable *s = pool->solvables - p; +- p2 = s->repo == pool->installed ? -p : 0; +- if (p2) +- { +- if (!(solv->updatemap_all || (solv->updatemap.size && MAPTST(&solv->updatemap, p2 - solv->installed->start)))) +- isinstalled = 1; +- } +- continue; +- } ++ continue; + s = pool->solvables + p; + if (!s->repo) + continue; + if (s->repo == pool->installed) + { + queue_push2(&qi, p, p); ++ queue_push(&q, p); + continue; + } + /* find an installed package p2 that we can update/downgrade to p */ +@@ -3428,6 +3503,7 @@ solver_addchoicerules(Solver *solv) + if (policy_is_illegal(solv, pool->solvables + p2, s, 0)) + continue; + queue_push2(&qi, p2, p); ++ queue_push(&q, p); + continue; + } + /* package p is independent of the installed ones */ +@@ -3436,31 +3512,47 @@ solver_addchoicerules(Solver *solv) + #if 0 + printf("havechoice: %d qcount %d qicount %d\n", havechoice, q.count, qi.count); + #endif +- if (!havechoice || !qi.count) ++ if (!havechoice || !q.count || !qi.count) + continue; /* no choice */ + + FOR_RULELITERALS(p, pp, r) + if (p > 0) + MAPSET(&m, p); + +- if (!isinstalled) ++ isnewest = 1; ++ FOR_RULELITERALS(p, pp, r) + { +- /* do extra checking for packages related to installed packages */ +- for (i = j = 0; i < qi.count; i += 2) ++ if (p > 0) ++ break; ++ p2 = choicerule_find_installed(pool, -p); ++ if (p2 && !solver_choicerulecheck2(solv, p2, -p, &qcheck2)) + { +- p2 = qi.elements[i]; +- if (solv->updatemap_all || (solv->updatemap.size && MAPTST(&solv->updatemap, p2 - solv->installed->start))) +- { +- if (solver_choicerulecheck(solv, p2, r, &m, &qcheck)) +- continue; +- } +- qi.elements[j++] = p2; +- qi.elements[j++] = qi.elements[i + 1]; ++ isnewest = 0; ++ break; ++ } ++ if (!p2 && !solver_choicerulecheck3(solv, -p, &qcheck2)) ++ { ++ isnewest = 0; ++ break; + } +- queue_truncate(&qi, j); + } ++ /* do extra checking */ ++ for (i = j = 0; i < qi.count; i += 2) ++ { ++ p2 = qi.elements[i]; ++ if (!p2) ++ continue; ++ if (isnewest && solver_choicerulecheck(solv, p2, r, &m, &qcheck)) ++ { ++ /* oops, remove element p from q */ ++ queue_removeelement(&q, qi.elements[i + 1]); ++ continue; ++ } ++ qi.elements[j++] = p2; ++ } ++ queue_truncate(&qi, j); + +- if (!qi.count) ++ if (!q.count || !qi.count) + { + FOR_RULELITERALS(p, pp, r) + if (p > 0) +@@ -3468,15 +3560,6 @@ solver_addchoicerules(Solver *solv) + continue; + } + +- queue_empty(&q); +- /* split q from qi */ +- for (i = j = 0; i < qi.count; i += 2) +- { +- queue_push(&q, qi.elements[i + 1]); +- qi.elements[j++] = qi.elements[i]; +- } +- queue_truncate(&qi, j); +- + + /* now check the update rules of the installed package. + * if all packages of the update rules are contained in +@@ -3496,7 +3579,6 @@ solver_addchoicerules(Solver *solv) + break; + if (p) + break; +- /* speed improvement: only check each package once */ + for (j = i + 1; j < qi.count; j++) + if (qi.elements[i] == qi.elements[j]) + qi.elements[j] = 0; +@@ -3554,6 +3636,7 @@ solver_addchoicerules(Solver *solv) + queue_free(&q); + queue_free(&qi); + queue_free(&qcheck); ++ queue_free(&qcheck2); + queue_free(&infoq); + map_free(&m); + map_free(&mneg); +diff --git a/src/solver.c b/src/solver.c +index 28341d6d..23285ff2 100644 +--- a/src/solver.c ++++ b/src/solver.c +@@ -2620,43 +2620,6 @@ resolve_orphaned(Solver *solv, int level, int disablerules, Queue *dq, int *reru + return level; + } + +-int +-solver_check_unneeded_choicerules(Solver *solv) +-{ +- Pool *pool = solv->pool; +- Rule *r, *or; +- Id p, pp, p2, pp2; +- int i; +- int havedisabled = 0; +- +- /* check if some choice rules could have been broken */ +- for (i = solv->choicerules, r = solv->rules + i; i < solv->choicerules_end; i++, r++) +- { +- if (r->d < 0) +- continue; +- or = solv->rules + solv->choicerules_info[i - solv->choicerules]; +- if (or->d < 0) +- continue; +- FOR_RULELITERALS(p, pp, or) +- { +- if (p < 0 || solv->decisionmap[p] <= 0) +- continue; +- FOR_RULELITERALS(p2, pp2, r) +- if (p2 == p) +- break; +- if (!p2) +- { +- /* did not find p in choice rule, disable it */ +- POOL_DEBUG(SOLV_DEBUG_SOLVER, "disabling unneeded choice rule #%d\n", i); +- solver_disablechoicerules(solv, r); +- havedisabled = 1; +- break; +- } +- } +- } +- return havedisabled; +-} +- + /*------------------------------------------------------------------- + * + * solver_run_sat +@@ -2842,14 +2805,6 @@ solver_run_sat(Solver *solv, int disablerules, int doweak) + continue; + } + +- if (solv->choicerules != solv->choicerules_end && solver_check_unneeded_choicerules(solv)) +- { +- POOL_DEBUG(SOLV_DEBUG_SOLVER, "did choice rule minimization, rerunning solver\n"); +- solver_reset(solv); +- level = 0; /* restart from scratch */ +- continue; +- } +- + if (solv->solution_callback) + { + solv->solution_callback(solv, solv->solution_callback_data); +-- +2.38.1 + diff --git a/SOURCES/0003-Revert-Add-complex_deps-requirement-to-choice1b-test.patch b/SOURCES/0003-Revert-Add-complex_deps-requirement-to-choice1b-test.patch new file mode 100644 index 0000000..83e0c1a --- /dev/null +++ b/SOURCES/0003-Revert-Add-complex_deps-requirement-to-choice1b-test.patch @@ -0,0 +1,23 @@ +From 6087b30a65d1a742ff0ff75f00aedd39ded33bf6 Mon Sep 17 00:00:00 2001 +From: Nicola Sella +Date: Wed, 7 Dec 2022 16:53:58 +0100 +Subject: [PATCH 2/3] Revert "Add complex_deps requirement to choice1b + testcase" + +This reverts commit 9cb62e9db34cb62031cc5b0a444b4bff16d39db9. +--- + test/testcases/choicerules/choice1b.t | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/test/testcases/choicerules/choice1b.t b/test/testcases/choicerules/choice1b.t +index cf6051ce..fc47b722 100644 +--- a/test/testcases/choicerules/choice1b.t ++++ b/test/testcases/choicerules/choice1b.t +@@ -1,4 +1,3 @@ +-feature complex_deps + repo system 0 testtags + #>=Pkg: B 1 1 noarch + #>=Prv: P = 1 +-- +2.38.1 + diff --git a/SOURCES/0004-Revert-Add-more-choicerules-tests.patch b/SOURCES/0004-Revert-Add-more-choicerules-tests.patch new file mode 100644 index 0000000..644b475 --- /dev/null +++ b/SOURCES/0004-Revert-Add-more-choicerules-tests.patch @@ -0,0 +1,314 @@ +From 5fef9bb8c9899e64306a87ab89574f3afb9968de Mon Sep 17 00:00:00 2001 +From: Nicola Sella +Date: Wed, 7 Dec 2022 16:54:02 +0100 +Subject: [PATCH 3/3] Revert "Add more choicerules tests" + +This reverts commit ce9dda7d3e5b27f4cd883eb69e7ea5cace0a2828. +--- + test/testcases/choicerules/choice1.t | 27 --------------- + test/testcases/choicerules/choice1b.t | 18 ---------- + test/testcases/choicerules/choice2.t | 21 ------------ + test/testcases/choicerules/choice2b.t | 47 --------------------------- + test/testcases/choicerules/choice3.t | 16 --------- + test/testcases/choicerules/choice3b.t | 31 ------------------ + test/testcases/choicerules/choice4.t | 18 ---------- + test/testcases/choicerules/choice5.t | 21 ------------ + test/testcases/choicerules/choice6.t | 28 ---------------- + 9 files changed, 227 deletions(-) + delete mode 100644 test/testcases/choicerules/choice1.t + delete mode 100644 test/testcases/choicerules/choice1b.t + delete mode 100644 test/testcases/choicerules/choice2b.t + delete mode 100644 test/testcases/choicerules/choice3b.t + delete mode 100644 test/testcases/choicerules/choice5.t + delete mode 100644 test/testcases/choicerules/choice6.t + +diff --git a/test/testcases/choicerules/choice1.t b/test/testcases/choicerules/choice1.t +deleted file mode 100644 +index fbd5184a..00000000 +--- a/test/testcases/choicerules/choice1.t ++++ /dev/null +@@ -1,27 +0,0 @@ +-# +-#Rule #2: +-# !A-2-1.noarch [3] (w1) +-# B-2-1.noarch [4] (w2) +-# C-2-1.noarch [5] +-# +-# ==> Choice Rule +-# !A-2-1.noarch [3] (w1) +-# B-2-1.noarch [4] (w2) +-# +-repo system 0 testtags +-#>=Pkg: B 1 1 noarch +-#>=Prv: P = 1 +-repo available 0 testtags +-#>=Pkg: A 2 1 noarch +-#>=Req: P = 2 +-#>=Pkg: B 2 1 noarch +-#>=Prv: P = 2 +-#>=Pkg: C 2 1 noarch +-#>=Prv: P = 2 +-system i686 rpm system +- +-job install name A +-result transaction,problems +-result transaction,problems +-#>install A-2-1.noarch@available +-#>upgrade B-1-1.noarch@system B-2-1.noarch@available +diff --git a/test/testcases/choicerules/choice1b.t b/test/testcases/choicerules/choice1b.t +deleted file mode 100644 +index fc47b722..00000000 +--- a/test/testcases/choicerules/choice1b.t ++++ /dev/null +@@ -1,18 +0,0 @@ +-repo system 0 testtags +-#>=Pkg: B 1 1 noarch +-#>=Prv: P = 1 +-repo available 0 testtags +-#>=Pkg: X 1 1 noarch +-#>=Pkg: Y 1 1 noarch +-#>=Pkg: A 2 1 noarch +-#>=Req: P = 2 (X & Y) +-#>=Pkg: B 2 1 noarch +-#>=Prv: P = 2 +-#>=Pkg: C 2 1 noarch +-#>=Prv: P = 2 +-system i686 rpm system +- +-job install name A +-result transaction,problems +-result transaction,problems +-#>install A-2-1.noarch@available +diff --git a/test/testcases/choicerules/choice2.t b/test/testcases/choicerules/choice2.t +index 1eb6c7c3..cb067b18 100644 +--- a/test/testcases/choicerules/choice2.t ++++ b/test/testcases/choicerules/choice2.t +@@ -1,24 +1,3 @@ +-# +-# Test that updating package B will update package A +-# instead of pulling in new package C +-# +-#Rule #5: +-# !A-2-2.noarch [5] (w1) +-# B-2-1.noarch [6] (w2) +-# C-2-1.noarch [8] +-#Rule #7: +-# !A-2-1.noarch [4] (w1) +-# B-2-1.noarch [6] (w2) +-# C-2-1.noarch [8] +-#Rule #8: +-# !A-1-1.noarch [2]I (w1) +-# B-1-1.noarch [3]I (w2) +-# C-1-1.noarch [7] +-# +-# ==> Choice Rule for #8: +-# !A-1-1.noarch [2]I (w1) +-# B-1-1.noarch [3]I (w2) +-# + repo system 0 testtags + #>=Pkg: A 1 1 noarch + #>=Req: P = 1 +diff --git a/test/testcases/choicerules/choice2b.t b/test/testcases/choicerules/choice2b.t +deleted file mode 100644 +index ae619f77..00000000 +--- a/test/testcases/choicerules/choice2b.t ++++ /dev/null +@@ -1,47 +0,0 @@ +-# +-# Test that updating package B will update package A +-# instead of pulling in new package C +-# +-#Rule #5: +-# !A-2-2.noarch [5] (w1) +-# B-2-1.noarch [6] (w2) +-# C-2-1.noarch [8] +-#Rule #7: +-# !A-2-1.noarch [4] (w1) +-# B-2-1.noarch [6] (w2) +-# C-2-1.noarch [8] +-#Rule #8: +-# !A-1-1.noarch [2]I (w1) +-# B-1-1.noarch [3]I (w2) +-# C-1-1.noarch [7] +-# +-# ==> Choice Rule for #8: +-# !A-1-1.noarch [2]I (w1) +-# B-1-1.noarch [3]I (w2) +-# +-repo system 0 testtags +-#>=Pkg: A 1 1 noarch +-#>=Req: P = 1 +-#>=Pkg: B 1 1 noarch +-#>=Prv: P = 1 +-repo available 0 testtags +-#>=Pkg: A 1 1 noarch +-#>=Req: P = 1 +-#>=Pkg: B 1 1 noarch +-#>=Prv: P = 1 +-#>=Pkg: A 2 1 noarch +-#>=Req: P = 2 +-#>=Pkg: A 2 2 noarch +-#>=Req: P = 2 +-#>=Pkg: B 2 1 noarch +-#>=Prv: P = 2 +-#>=Pkg: C 1 1 noarch +-#>=Prv: P = 1 +-#>=Pkg: C 2 1 noarch +-#>=Prv: P = 2 +-system i686 rpm system +- +-job update name B +-result transaction,problems +-#>upgrade A-1-1.noarch@system A-2-2.noarch@available +-#>upgrade B-1-1.noarch@system B-2-1.noarch@available +diff --git a/test/testcases/choicerules/choice3.t b/test/testcases/choicerules/choice3.t +index 1b82e691..d5d41acc 100644 +--- a/test/testcases/choicerules/choice3.t ++++ b/test/testcases/choicerules/choice3.t +@@ -1,19 +1,3 @@ +-# Do not block an update because of a choice rule +-# +-#Rule #3: +-# !B-1-1.noarch [4] (w1) +-# A-1-1.noarch [2]I (w2) +-# Anew-2-1.noarch [6] +-#Rule #4: +-# !B-1-1.noarch [3]I (w1) +-# A-1-1.noarch [2]I (w2) +-# Anew-2-1.noarch [6] +-# +-# ==> No choice rule for Rule#4! +-# ==> Choice Rule for #3: +-# !B-1-1.noarch [4] (w1) +-# A-1-1.noarch [2]I (w2) +-# + repo system 0 testtags + #>=Pkg: A 1 1 noarch + #>=Prv: libA +diff --git a/test/testcases/choicerules/choice3b.t b/test/testcases/choicerules/choice3b.t +deleted file mode 100644 +index fb9c7250..00000000 +--- a/test/testcases/choicerules/choice3b.t ++++ /dev/null +@@ -1,31 +0,0 @@ +-# Do not block an update because of a choice rule +-# +-#Rule #3: +-# !B-1-1.noarch [4] (w1) +-# A-1-1.noarch [2]I (w2) +-# Anew-2-1.noarch [6] +-#Rule #4: +-# !B-1-1.noarch [3]I (w1) +-# A-1-1.noarch [2]I (w2) +-# Anew-2-1.noarch [6] +-# +-# ==> No choice rule for Rule#4! +-# ==> Choice Rule for #3: +-# !B-1-1.noarch [4] (w1) +-# A-1-1.noarch [2]I (w2) +-# +-repo system 0 testtags +-#>=Pkg: A 1 1 noarch +-#>=Prv: libA +-#>=Pkg: B 1 1 noarch +-#>=Req: libA +-repo available 0 testtags +-#>=Pkg: A 2 1 noarch +-#>=Pkg: Anew 2 1 noarch +-#>=Prv: libA +-system i686 rpm system +- +-job update all packages +-result transaction,problems +-#>install Anew-2-1.noarch@available +-#>upgrade A-1-1.noarch@system A-2-1.noarch@available +diff --git a/test/testcases/choicerules/choice4.t b/test/testcases/choicerules/choice4.t +index 7378a569..1bf9f487 100644 +--- a/test/testcases/choicerules/choice4.t ++++ b/test/testcases/choicerules/choice4.t +@@ -1,21 +1,3 @@ +-# This tests that A is updated instead of Anew being installed +-# +-#Rule #4: +-# !B-2-2.noarch [11] (w1) +-# A-2-2.noarch [9] (w2) +-# Anew-2-2.noarch [10] +-#Rule #11: +-# !B-2-1.noarch [8] (w1) +-# A-2-1.noarch [6] (w2) +-# Anew-2-1.noarch [7] +-# +-#Choice Rule for #4: +-# !B-2-2.noarch [11] (w1) +-# A-2-2.noarch [9] (w2) +-#Choice Rule for #11 +-# !B-2-1.noarch [8] (w1) +-# A-2-1.noarch [6] (w2) +-# + repo system 0 testtags + #>=Pkg: A 1 1 noarch + #>=Prv: libA = 1-1 +diff --git a/test/testcases/choicerules/choice5.t b/test/testcases/choicerules/choice5.t +deleted file mode 100644 +index 9f43c8a3..00000000 +--- a/test/testcases/choicerules/choice5.t ++++ /dev/null +@@ -1,21 +0,0 @@ +-# +-# test that a package split does not update unrelated packages +-# +-repo system 0 testtags +-#>=Pkg: A 1 1 noarch +-#>=Prv: libA +-#>=Pkg: B 1 1 noarch +-#>=Req: libA +-repo available 0 testtags +-#>=Pkg: A 1 1 noarch +-#>=Prv: libA +-#>=Pkg: A 2 1 noarch +-#>=Pkg: Asplit 2 1 noarch +-#>=Prv: libA +-#>=Pkg: B 2 1 noarch +-#>=Req: libA +-system i686 rpm system +-job update name A +-result transaction,problems +-#>install Asplit-2-1.noarch@available +-#>upgrade A-1-1.noarch@system A-2-1.noarch@available +diff --git a/test/testcases/choicerules/choice6.t b/test/testcases/choicerules/choice6.t +deleted file mode 100644 +index e860ae20..00000000 +--- a/test/testcases/choicerules/choice6.t ++++ /dev/null +@@ -1,28 +0,0 @@ +-#Rule #4: +-# !php-fpm-7.2.24-1.noarch [5] (w1) +-# glibc-2.17-325.noarch [2]I (w2) +-# libcrypt-4.1.1-6.noarch [7] +-#=> no choice rule for #4 +-# +-repo @System 0 testtags +-#>=Pkg: glibc 2.17 325 noarch +-#>=Prv: libcrypt +-#>=Pkg: php 5.4.16 48 noarch +-repo available 0 testtags +-#>=Pkg: php 7.2.24 1 noarch +-#>=Rec: php-fpm = 7.2.24-1 +-#>=Pkg: php-fpm 7.2.24 1 noarch +-#>=Req: libcrypt +-#>=Pkg: php-fpm 8.0.13 2 noarch +-#>=Req: libcrypt +-#>=Pkg: libcrypt 4.1.1 6 noarch +-#>=Req: libc +-#>=Pkg: glibc 2.28 181 noarch +-#>=Prv: libc +-system i686 rpm @System +-job update all packages +-result transaction,problems +-#>install libcrypt-4.1.1-6.noarch@available +-#>install php-fpm-7.2.24-1.noarch@available +-#>upgrade glibc-2.17-325.noarch@@System glibc-2.28-181.noarch@available +-#>upgrade php-5.4.16-48.noarch@@System php-7.2.24-1.noarch@available +-- +2.38.1 + diff --git a/SPECS/libsolv.spec b/SPECS/libsolv.spec new file mode 100644 index 0000000..04d8913 --- /dev/null +++ b/SPECS/libsolv.spec @@ -0,0 +1,844 @@ +%global libname solv + +%bcond_without python_bindings +%bcond_without perl_bindings +%bcond_without ruby_bindings +# Creates special prefixed pseudo-packages from appdata metadata +%bcond_without appdata +# Creates special prefixed "group:", "category:" pseudo-packages +%bcond_without comps +%bcond_without conda +# For rich dependencies +%bcond_without complex_deps +%bcond_without helix_repo +%bcond_without suse_repo +%bcond_without debian_repo +%bcond_without arch_repo +# For handling deb + rpm at the same time +%bcond_without multi_semantics +%bcond_with zchunk +%bcond_without zstd + +%define __cmake_switch(b:) %[%{expand:%%{?with_%{-b*}}} ? "ON" : "OFF"] + +Name: lib%{libname} +Version: 0.7.22 +Release: 4%{?dist} +Summary: Package dependency solver + +License: BSD +URL: https://github.com/openSUSE/libsolv +Source: %{url}/archive/%{version}/%{name}-%{version}.tar.gz +# https://bugzilla.redhat.com/show_bug.cgi?id=1993126 +Patch1: 0001-Add-support-for-computing-hashes-using-OpenSSL.patch +Patch2: 0002-Revert-Improve-choice-rule-generation.patch +Patch3: 0003-Revert-Add-complex_deps-requirement-to-choice1b-test.patch +Patch4: 0004-Revert-Add-more-choicerules-tests.patch + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: ninja-build +BuildRequires: pkgconfig(rpm) +BuildRequires: zlib-devel +# -DWITH_LIBXML2=ON +BuildRequires: libxml2-devel +# -DWITH_OPENSSL=ON +BuildRequires: pkgconfig(openssl) +# -DENABLE_LZMA_COMPRESSION=ON +BuildRequires: xz-devel +# -DENABLE_BZIP2_COMPRESSION=ON +BuildRequires: bzip2-devel +%if %{with zstd} +# -DENABLE_ZSTD_COMPRESSION=ON +BuildRequires: libzstd-devel +%endif +%if %{with zchunk} +# -DENABLE_ZCHUNK_COMPRESSION=ON +BuildRequires: pkgconfig(zck) +%endif + +%description +A free package dependency solver using a satisfiability algorithm. The +library is based on two major, but independent, blocks: + +- Using a dictionary approach to store and retrieve package + and dependency information. + +- Using satisfiability, a well known and researched topic, for + resolving package dependencies. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: rpm-devel%{?_isa} + +%description devel +Development files for %{name}. + +%package tools +Summary: Package dependency solver tools +Requires: %{name}%{?_isa} = %{version}-%{release} +# repo2solv dependencies. Used as execl() +Requires: /usr/bin/find + +%description tools +Package dependency solver tools. + +%package demo +Summary: Applications demoing the %{name} library +Requires: %{name}%{?_isa} = %{version}-%{release} +# solv dependencies. Used as execlp() and system() +Requires: /usr/bin/curl +Requires: /usr/bin/gpg2 + +%description demo +Applications demoing the %{name} library. + +%if %{with perl_bindings} +%package -n perl-%{libname} +Summary: Perl bindings for the %{name} library +BuildRequires: swig +BuildRequires: perl-devel +BuildRequires: perl-generators +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description -n perl-%{libname} +Perl bindings for the %{name} library. +%endif + +%if %{with ruby_bindings} +%package -n ruby-%{libname} +Summary: Ruby bindings for the %{name} library +BuildRequires: swig +BuildRequires: ruby-devel +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description -n ruby-%{libname} +Ruby bindings for the %{name} library. +%endif + +%if %{with python_bindings} +%package -n python3-%{libname} +Summary: Python bindings for the %{name} library +%{?python_provide:%python_provide python3-%{libname}} +BuildRequires: swig +BuildRequires: python3-devel +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description -n python3-%{libname} +Python bindings for the %{name} library. + +Python 3 version. +%endif + +%prep +%autosetup -p1 + +%build +%cmake -GNinja \ + -DFEDORA=1 \ + -DENABLE_RPMDB=ON \ + -DENABLE_RPMDB_BYRPMHEADER=ON \ + -DENABLE_RPMDB_LIBRPM=ON \ + -DENABLE_RPMPKG_LIBRPM=ON \ + -DENABLE_RPMMD=ON \ + -DENABLE_COMPS=%{__cmake_switch -b comps} \ + -DENABLE_APPDATA=%{__cmake_switch -b appdata} \ + -DUSE_VENDORDIRS=ON \ + -DWITH_LIBXML2=ON \ + -DWITH_OPENSSL=ON \ + -DENABLE_LZMA_COMPRESSION=ON \ + -DENABLE_BZIP2_COMPRESSION=ON \ + -DENABLE_ZSTD_COMPRESSION=%{__cmake_switch -b zstd} \ + -DENABLE_ZCHUNK_COMPRESSION=%{__cmake_switch -b zchunk} \ +%if %{with zchunk} + -DWITH_SYSTEM_ZCHUNK=ON \ +%endif + -DENABLE_HELIXREPO=%{__cmake_switch -b helix_repo} \ + -DENABLE_SUSEREPO=%{__cmake_switch -b suse_repo} \ + -DENABLE_DEBIAN=%{__cmake_switch -b debian_repo} \ + -DENABLE_ARCHREPO=%{__cmake_switch -b arch_repo} \ + -DMULTI_SEMANTICS=%{__cmake_switch -b multi_semantics} \ + -DENABLE_COMPLEX_DEPS=%{__cmake_switch -b complex_deps} \ + -DENABLE_CONDA=%{__cmake_switch -b conda} \ + -DENABLE_PERL=%{__cmake_switch -b perl_bindings} \ + -DENABLE_RUBY=%{__cmake_switch -b ruby_bindings} \ + -DENABLE_PYTHON=%{__cmake_switch -b python_bindings} \ +%if %{with python_bindings} + -DPYTHON_EXECUTABLE=%{python3} \ +%endif + %{nil} +%cmake_build + +%install +%cmake_install + +%check +%ctest + +# Python smoke test (not tested in %%ctest): +export PYTHONPATH=%{buildroot}%{python3_sitearch} +export LD_LIBRARY_PATH=%{buildroot}%{_libdir} +%python3 -c 'import solv' + +%files +%license LICENSE* +%doc README +%{_libdir}/%{name}.so.* +%{_libdir}/%{name}ext.so.* + +%files devel +%{_libdir}/%{name}.so +%{_libdir}/%{name}ext.so +%{_includedir}/%{libname}/ +%{_libdir}/pkgconfig/%{name}.pc +%{_libdir}/pkgconfig/%{name}ext.pc +# Own directory because we don't want to depend on cmake +%dir %{_datadir}/cmake/Modules/ +%{_datadir}/cmake/Modules/FindLibSolv.cmake +%{_mandir}/man3/%{name}*.3* + +# Some small macro to list tools with mans +%global solv_tool() \ +%{_bindir}/%{1}\ +%{_mandir}/man1/%{1}.1* + +%files tools +%solv_tool deltainfoxml2solv +%solv_tool dumpsolv +%solv_tool installcheck +%solv_tool mergesolv +%solv_tool repomdxml2solv +%solv_tool rpmdb2solv +%solv_tool rpmmd2solv +%solv_tool rpms2solv +%solv_tool testsolv +%solv_tool updateinfoxml2solv +%solv_tool repo2solv +%if %{with comps} + %solv_tool comps2solv +%endif +%if %{with appdata} + %solv_tool appdata2solv +%endif +%if %{with debian_repo} + %solv_tool deb2solv +%endif +%if %{with arch_repo} + %solv_tool archpkgs2solv + %solv_tool archrepo2solv +%endif +%if %{with helix_repo} + %solv_tool helix2solv +%endif +%if %{with suse_repo} + %solv_tool susetags2solv +%endif +%if %{with conda} + %{_bindir}/conda2solv +%endif + +%files demo +%solv_tool solv + +%if %{with perl_bindings} +%files -n perl-%{libname} +%{perl_vendorarch}/%{libname}.pm +%{perl_vendorarch}/%{libname}.so +%endif + +%if %{with ruby_bindings} +%files -n ruby-%{libname} +%{ruby_vendorarchdir}/%{libname}.so +%endif + +%if %{with python_bindings} +%files -n python3-%{libname} +%{python3_sitearch}/_%{libname}.so +%{python3_sitearch}/%{libname}.py +%{python3_sitearch}/__pycache__/%{libname}.* +%endif + +%changelog +* Thu Dec 15 2022 Nicola Sella - 0.7.22-4 +- Delete patch "Move OpenSSL functions" to fix ABI change + +* Wed Dec 07 2022 Nicola Sella - 0.7.22-3 +- Revert choice rule generation to fix pick of old build (RhBug:2150300,RhBug:2151551) + +* Mon Oct 31 2022 Nicola Sella - 0.7.22-2 +- Move OpenSSL functions to use 3.0 compatible API + +* Thu Apr 28 2022 Pavla Kratochvilova - 0.7.22-1 +- Update to 0.7.22 +- support strict repository priorities new solver flag: SOLVER_FLAG_STRICT_REPO_PRIORITY +- support zstd compressed control files in debian packages +- add an ifdef allowing to rename Solvable dependency members ("requires" is a keyword in C++20) +- support setting/reading userdata in solv files new functions: repowriter_set_userdata, solv_read_userdata +- support queying of the custom vendor check function new function: pool_get_custom_vendorcheck +- support solv files with an idarray block +- allow accessing the toolversion at runtime +- support parsing of Debian's Multi-Arch indicator +- fix segfault on conflict resolution when using bindings +- fix split provides not working if the update includes a forbidden vendor change +- reworked choice rule generation to cover more usecases +- support SOLVABLE_PREREQ_IGNOREINST in the ordering code + +* Wed Nov 10 2021 Pavla Kratochvilova - 0.7.20-2 +- Build without support of zchunk (RhBug:2021084) + +* Mon Oct 25 2021 Pavla Kratochvilova - 0.7.20-1 +- Update to 0.7.20 +- new SOLVER_EXCLUDEFROMWEAK job to ignore pkgs for weak dependencies +- support for environments in comps parser +- fix misparsing of '&' in attributes with libxml2 +- choice rules: treat orphaned packages as newest +- fix compatibility with Python 3.10 + +* Thu Aug 12 2021 Pavla Kratochvilova - 0.7.19-3 +- Use OpenSSL for computing hashes (RhBug:1993126) + +* Mon Aug 09 2021 Mohan Boddu - 0.7.19-2 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Tue Jul 27 2021 Pavla Kratochvilova - 0.7.19-1 +- Update to 0.7.19 +- repo_add_conda: add flag to skip v2 packages +- fix rare segfault in resolve_jobrules() that could happen if new rules are learnt +- fix memory leaks + +* Tue Jul 27 2021 Pavla Kratochvilova - 0.7.17-6 +- Fix issues detected by static analyzers + +* Tue Jun 22 2021 Mohan Boddu - 0.7.17-5 +- Rebuilt for RHEL 9 BETA for openssl 3.0 + Related: rhbz#1971065 + +* Fri Apr 16 2021 Mohan Boddu - 0.7.17-4 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Tue Jan 26 2021 Fedora Release Engineering - 0.7.17-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sat Jan 23 2021 Igor Raits - 0.7.17-2 +- Drop unneeded explicit dependency on RPM + +* Thu Jan 21 2021 Igor Raits - 0.7.17-1 +- Update to 0.7.17 + +* Thu Jan 7 2021 Vít Ondruch - 0.7.15-3 +- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_3.0 + +* Mon Nov 16 2020 Miro Hrončok - 0.7.15-2 +- Backport upstream fix for Python 3.10 compatibility +- Fixes: rhbz#1896411 + +* Mon Oct 19 2020 Igor Raits - 0.7.15-1 +- Update to 0.7.15 + +* Tue Jul 28 2020 Fedora Release Engineering - 0.7.14-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri Jul 03 2020 Igor Raits - 0.7.14-3 +- Switch to %%cmake_build/%%cmake_install +- Drop Python 2 bindings + +* Wed Jun 03 2020 Igor Raits - 0.7.14-2 +- Raise lowest compatible RPM version + +* Wed May 27 2020 Igor Raits - 0.7.14-1 +- Update to 0.7.14 + +* Tue May 26 2020 Miro Hrončok - 0.7.12-4 +- Rebuilt for Python 3.9 + +* Mon May 25 2020 Colin Walters - 0.7.12-3 +- Apply https://github.com/openSUSE/libsolv/pull/386 + to fix https://bugzilla.redhat.com/show_bug.cgi?id=1838691 + +* Mon May 25 2020 Miro Hrončok - 0.7.12-2 +- Rebuilt for Python 3.9 + +* Tue Apr 21 2020 Igor Raits - 0.7.12-1 +- Update to 0.7.12 + +* Wed Jan 29 2020 Fedora Release Engineering - 0.7.11-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Jan 23 05:17:39 EST 2020 Neal Gompa - 0.7.11-1 +- Update to 0.7.11 + +* Tue Dec 17 08:41:00 CET 2019 Igor Gnatenko - 0.7.10-1 +- Update to 0.7.10 + +* Tue Nov 12 12:52:58 CET 2019 Igor Gnatenko - 0.7.8-1 +- Update to 0.7.8 + +* Sat Oct 19 2019 Igor Gnatenko - 0.7.7-1 +- Update to 0.7.7 + +* Mon Oct 14 2019 Jaroslav Mracek - 0.7.6-3 +- Backport support of POOL_FLAG_WHATPROVIDESWITHDISABLED pool flag + +* Thu Oct 03 2019 Miro Hrončok - 0.7.6-2 +- Rebuilt for Python 3.8.0rc1 (#1748018) + +* Fri Aug 30 09:08:03 CEST 2019 Igor Gnatenko - 0.7.6-1 +- Update to 0.7.6 + +* Sun Aug 18 2019 Miro Hrončok - 0.7.5-4 +- Rebuilt for Python 3.8 + +* Sun Aug 04 11:07:46 CEST 2019 Igor Gnatenko - 0.7.5-3 +- Fix queries with src.rpm with DynamicBuildRequires + +* Thu Jul 25 2019 Fedora Release Engineering - 0.7.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed Jun 12 15:58:49 CEST 2019 Igor Gnatenko - 0.7.5-1 +- Update to 0.7.5 + +* Mon Jun 10 22:13:20 CET 2019 Igor Gnatenko - 0.7.4-5 +- Rebuild for RPM 4.15 + +* Mon Jun 10 15:42:03 CET 2019 Igor Gnatenko - 0.7.4-4 +- Rebuild for RPM 4.15 + +* Tue May 21 2019 Jitka Plesnikova - 0.7.4-3 +- Fixed build for SWIG 4.0.0 (#1707367) + +* Tue Apr 02 14:45:22 CEST 2019 Igor Gnatenko - 0.7.4-2 +- Backport patch to fix solver_solve() running multiple times with SOLVER_FAVOR + +* Fri Mar 29 16:13:00 CET 2019 Igor Gnatenko - 0.7.4-1 +- Update to 0.7.4 + +* Tue Feb 26 2019 Pavla Kratochvilova - 0.7.3-4 +- Backport: Add support for modular updateinfo.xml data + +* Wed Feb 13 2019 Igor Gnatenko - 0.7.3-3 +- bindings: Add best_solvables/whatmatchessolvable + +* Fri Feb 01 2019 Fedora Release Engineering - 0.7.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Jan 30 2019 Igor Gnatenko - 0.7.3-1 +- Update to 0.7.3 + +* Tue Jan 15 2019 Jaroslav Mracek - 0.7.2-2 +- Backport Do-not-disable-infarch-rules-when-they-dont-conflict-with-the-job + +* Sat Jan 12 2019 Igor Gnatenko - 0.7.2-2 +- Fix small security issues + +* Mon Dec 10 2018 Igor Gnatenko - 0.7.2-1 +- Update to 0.7.2 + +* Fri Nov 30 2018 Igor Gnatenko - 0.7.1-1 +- Update to 0.7.1 + +* Sun Oct 28 2018 Igor Gnatenko - 0.7.0-1 +- Update to 0.7.0 + +* Mon Oct 01 2018 Jaroslav Rohel - 0.6.35-3 +- Backport patch: Make sure that targeted updates don't do reinstalls + +* Mon Oct 01 2018 Igor Gnatenko - 0.6.35-2 +- Disable python2 subpackage + +* Thu Aug 09 2018 Igor Gnatenko - 0.6.35-1 +- Update to 0.6.35 + +* Fri Jul 13 2018 Fedora Release Engineering - 0.6.34-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Jul 02 2018 Miro Hrončok - 0.6.34-5 +- Rebuilt for Python 3.7 + +* Mon Jul 02 2018 Igor Gnatenko - 0.6.34-4 +- Rebuilt for Python 3.7 + +* Fri Jun 29 2018 Igor Gnatenko - 0.6.34-3 +- Backport few fixes and enhancements from upstream + +* Tue Jun 19 2018 Miro Hrončok - 0.6.34-2 +- Rebuilt for Python 3.7 + +* Mon Mar 26 2018 Igor Gnatenko - 0.6.34-1 +- Update to 0.6.34 + +* Wed Feb 28 2018 Igor Gnatenko - 0.6.33-1 +- Update to 0.6.33 + +* Tue Feb 13 2018 Igor Gnatenko - 0.6.32-1 +- Update to 0.6.32 + +* Wed Feb 07 2018 Fedora Release Engineering - 0.6.31-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Jan 31 2018 Igor Gnatenko - 0.6.31-1 +- Update to 0.6.31 + +* Tue Jan 30 2018 Igor Gnatenko - 0.6.30-9.git.2901.47fbaa2 +- Use librpm to access rpm headers + +* Tue Jan 30 2018 Igor Gnatenko - 0.6.30-8.git.2900.8bdcce1 +- Use librpm to access DB + +* Tue Jan 30 2018 Igor Gnatenko - 0.6.30-7.git.2898.ae214a6 +- Switch to %%ldconfig_scriptlets + +* Mon Jan 29 2018 Igor Gnatenko - 0.6.30-6.git.2898.ae214a6 +- Disable librpm from accessing DB + +* Mon Jan 29 2018 Igor Gnatenko - 0.6.30-5.git.2898.ae214a6 +- Allow disabling python2 bindings + +* Mon Jan 29 2018 Igor Gnatenko - 0.6.30-4.git.2898.ae214a6 +- Switch to ninja-build + +* Mon Jan 29 2018 Igor Gnatenko - 0.6.30-3.git.2898.ae214a6 +- Update to latest git version +- Switch to use librpm for accessing headers / rpmdb + +* Mon Nov 20 2017 Igor Gnatenko - 0.6.30-3.git.2887.97b8c0c +- Update to latest snapshot + +* Mon Nov 06 2017 Panu Matilainen - 0.6.30-2 +- Better error message on DB_VERSION_MISMATCH errors + +* Tue Oct 24 2017 Igor Gnatenko - 0.6.30-1 +- Update to 0.6.30 + +* Tue Sep 19 2017 Panu Matilainen - 0.6.29-2 +- Band-aid for DB_VERSION_MISMATCH errors on glibc updates + +* Thu Sep 07 2017 Igor Gnatenko - 0.6.29-1 +- Update to 0.6.29 + +* Fri Aug 11 2017 Igor Gnatenko - 0.6.28-8 +- Rebuilt after RPM update (№ 3) + +* Thu Aug 10 2017 Igor Gnatenko - 0.6.28-7 +- Rebuilt for RPM soname bump + +* Thu Aug 10 2017 Igor Gnatenko - 0.6.28-6 +- Rebuilt for RPM soname bump + +* Thu Aug 03 2017 Igor Gnatenko - 0.6.28-5 +- Add support for REL_WITHOUT + +* Thu Aug 03 2017 Fedora Release Engineering - 0.6.28-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 0.6.28-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Jul 21 2017 Igor Gnatenko - 0.6.28-2 +- Backport patch for fixing yumobs + +* Sat Jul 01 2017 Igor Gnatenko - 0.6.28-1 +- Update to 0.6.28 + +* Mon May 29 2017 Igor Gnatenko - 0.6.27-2 +- Backport few fixes for bindings + +* Thu May 04 2017 Igor Gnatenko - 0.6.27-1 +- Update to 0.6.27 + +* Mon Mar 27 2017 Igor Gnatenko - 0.6.26-5.git.20.668e249 +- Update to latest snapshot + +* Sat Mar 18 2017 Neal Gompa - 0.6.26-4.git.19.2262346 +- Enable AppData support (#1427171) + +* Thu Mar 16 2017 Igor Gnatenko - 0.6.26-3.git.19.2262346 +- Update to latest git +- Switch to libxml2 + +* Mon Mar 06 2017 Igor Gnatenko - 0.6.26-2 +- Use %%{__python3} as PYTHON3_EXECUTABLE + +* Wed Feb 15 2017 Igor Gnatenko - 0.6.26-1 +- Update to 0.6.26 + +* Tue Feb 07 2017 Igor Gnatenko - 0.6.25-1 +- Update to 0.6.25 + +* Fri Jan 13 2017 Vít Ondruch - 0.6.24-4 +- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.4 + +* Mon Dec 12 2016 Charalampos Stratakis - 0.6.24-3 +- Rebuild for Python 3.6 + +* Fri Dec 09 2016 Orion Poplawski - 0.6.24-2 +- Use upstream python build options + +* Fri Nov 11 2016 Igor Gnatenko - 0.6.24-1 +- Update to 0.6.24 + +* Sat Oct 29 2016 Denis Ollier - 0.6.23-6 +- Typo fixes in spec: s/MULTI_SYMANTICS/MULTI_SEMANTICS/ + +* Tue Sep 13 2016 Igor Gnatenko - 0.6.23-5 +- Trivial fixes in spec + +* Sat Aug 27 2016 Neal Gompa - 0.6.23-4 +- Enable suserepo on Fedora to enable making openSUSE containers with Zypper + +* Fri Aug 12 2016 Igor Gnatenko - 0.6.23-3 +- Enable helixrepo on Fedora + +* Wed Aug 03 2016 Igor Gnatenko - 0.6.23-2 +- Backport patch to fix dnf --debugsolver crash (RHBZ #1361831) + +* Wed Jul 27 2016 Igor Gnatenko - 0.6.23-1 +- Update to 0.6.23 + +* Wed Jul 20 2016 Igor Gnatenko - 0.6.22-3 +- Backport couple of patches from upstream + +* Tue Jul 19 2016 Fedora Release Engineering - 0.6.22-2 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Tue Jun 14 2016 Igor Gnatenko - 0.6.22-1 +- Update to 0.6.22 +- Backport patch which will help to not autoremove needed packages + (RHBZ #1227066, #1284349) + +* Mon Jun 06 2016 Igor Gnatenko - 0.6.21-3 +- Enable deb/arch support for non-rhel distros + +* Mon May 30 2016 Igor Gnatenko - 0.6.21-2 +- Modify enabled/disabled features + +* Wed May 18 2016 Igor Gnatenko - 0.6.21-1 +- Update to 0.6.21 + +* Tue May 17 2016 Igor Gnatenko - 0.6.20-2 +- Backport patch to fix crashing on reading some repos (RHBZ #1318662) +- Backport patch to fix installing multilib packages with weak deps + (RHBZ #1325471) + +* Sat Apr 09 2016 Igor Gnatenko - 0.6.20-1 +- Update to 0.6.20 + +* Tue Apr 05 2016 Igor Gnatenko - 0.6.19-3 +- Reorganize spec file +- Enable helixrepo feature +- enable appdata feature + +* Tue Mar 8 2016 Jaroslav Mracek - 0.6.19-2 +- Apply 9 patches from upstream + +* Sat Feb 27 2016 Igor Gnatenko - 0.6.19-1 +- Update to 0.6.19 + +* Tue Feb 2 2016 Peter Robinson 0.6.15-6 +- Explicitly add rubypick and ruubygems build dependencies + +* Tue Jan 12 2016 Vít Ondruch - 0.6.15-5 +- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.3 + +* Sun Jan 10 2016 Dan Horák - 0.6.15-4 +- fix build on non-Fedora with python3 + +* Tue Jan 05 2016 Jaroslav Mracek - 0.6.15-3 +- Fix bz2 compression support for python3 (RhBug:1293652) + +* Fri Dec 18 2015 Michal Luscon - 0.6.15-2 +- Revert reworked multiversion orphaned handling + +* Thu Dec 17 2015 Igor Gnatenko - 0.6.15-1 +- Update to 0.6.15 + +* Tue Dec 08 2015 Jaroslav Mracek - 0.6.14-7 +- Rebase to upstream b1ea392 +- Enable bz2 compression support (Mikolaj Izdebski ) (RhBug:1226647) + +* Thu Nov 26 2015 Adam Williamson - 0.6.14-6 +- revert obsolete, as %%python_provide does it (undocumented) + +* Wed Nov 18 2015 Adam Williamson - 0.6.14-5 +- adjust obsolete for stupid packaging + +* Wed Nov 18 2015 Adam Williamson - 0.6.14-4 +- python2-solv obsoletes python-solv (#1263230) + +* Tue Nov 10 2015 Fedora Release Engineering - 0.6.14-3 +- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 + +* Wed Oct 14 2015 Michal Luscon - 0.6.14-2 +- Backport patches from upstream + +* Mon Oct 12 2015 Igor Gnatenko - 0.6.14-1 +- Update to 0.6.14 +- Backport patches from upstream + +* Thu Sep 10 2015 Igor Gnatenko - 0.6.12-1 +- Update to 0.6.12 + +* Wed Aug 05 2015 Jan Silhan - 0.6.11-3 +- added compile flag to support rich dependencies +- new version adding MIPS support +- Distribute testsolv in -tools subpackage (Igor Gnatenko) +- Enable python3 bindings for fedora (Igor Gnatenko) + +* Tue Aug 04 2015 Adam Williamson - 0.6.11-2 +- make bindings require the exact matching version of the lib (#1243737) + +* Mon Jun 22 2015 Jan Silhan - 0.6.11-1 +- new version fixing segfault +- RbConfig fixed in the upstream (1928f1a), libsolv-ruby22-rbconfig.patch erased + +* Wed Jun 17 2015 Fedora Release Engineering - 0.6.10-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed Mar 25 2015 Jan Silhan - 0.6.10-1 +- new version fixing segfault + +* Fri Mar 6 2015 Jan Silhan - 0.6.8-3 +- Rebuilt with new provides selection feature + +* Mon Jan 19 2015 Vít Ondruch - 0.6.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.2 + +* Fri Jan 16 2015 Richard Hughes - 0.6.8-2 +- Update to latest upstream release to fix a crash in PackageKit. + +* Sun Aug 17 2014 Fedora Release Engineering - 0.6.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + + +* Mon Aug 11 2014 Jan Silhan - 0.6.4-2 +- Rebase to upstream 12af31a + +* Mon Jul 28 2014 Aleš Kozumplík - 0.6.4-1 +- Rebase to upstream 5bd9589 + +* Mon Jul 14 2014 Jan Silhan - 0.6.4-0.git2a5c1c4 +- Rebase to upstream 2a5c1c4 +- Filename selector can start with a star + +* Sat Jun 07 2014 Fedora Release Engineering - 0.6.1-2.git6d968f1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue May 27 2014 Aleš Kozumplík - 0.6.1-1.git6d968f1 +- Rebase to upstream 6d968f1 +- Fix RhBug:1049209 + +* Fri Apr 25 2014 Jan Silhan - 0.6.1-0.gitf78f5de +- Rebase to 0.6.0, upstream commit f78f5de. + +* Thu Apr 24 2014 Vít Ondruch - 0.6.0-0.git05baf54.1 +- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.1 + +* Wed Apr 9 2014 Jan Silhan - 0.6.0-0.git05baf54 +- Rebase to 0.6.0, upstream commit 05baf54. + +* Mon Dec 16 2013 Aleš Kozumplík - 0.4.1-1.gitbcedc98 +- Rebase upstream bcedc98 +- Fix RhBug:1051917. + +* Mon Dec 16 2013 Aleš Kozumplík - 0.4.1-0.gita8e47f1 +- Rebase to 0.4.1, upstream commit a8e47f1. + +* Fri Nov 22 2013 Zdenek Pavlas - 0.4.0-2.git4442b7f +- Rebase to 0.4.0, upstream commit 4442b7f. +- support DELTA_LOCATION_BASE for completeness + +* Tue Oct 29 2013 Aleš Kozumplík - 0.4.0-1.gitd49d319 +- Rebase to 0.4.0, upstream commit d49d319. + +* Sat Aug 03 2013 Petr Pisar - 0.3.0-9.gita59d11d +- Perl 5.18 rebuild + +* Wed Jul 31 2013 Aleš Kozumplík - 0.3.0-8.gita59d11d +- Rebase to upstream a59d11d. + +* Fri Jul 19 2013 Aleš Kozumplík - 0.3.0-7.git228d412 +- Add build flags, including Deb, Arch, LZMA and MULTI_SEMANTICS. (RhBug:985905) + +* Wed Jul 17 2013 Petr Pisar - 0.3.0-6.git228d412 +- Perl 5.18 rebuild + +* Mon Jun 24 2013 Aleš Kozumplík - 0.3.0-5.git228d412 +- Rebase to upstream 228d412. +- Fixes hawkey github issue https://github.com/akozumpl/hawkey/issues/13 + +* Thu Jun 20 2013 Aleš Kozumplík - 0.3.0-4.git209e9cb +- Rebase to upstream 209e9cb. +- Package the new man pages. + +* Thu May 16 2013 Aleš Kozumplík - 0.3.0-3.git7399ad1 +- Run 'make test' with libsolv build. + +* Mon Apr 8 2013 Aleš Kozumplík - 0.3.0-2.git7399ad1 +- Rebase to upstream 7399ad1. +- Fixes RhBug:905209 + +* Mon Apr 8 2013 Aleš Kozumplík - 0.3.0-1.gite372b78 +- Rebase to upstream e372b78. +- Fixes RhBug:e372b78 + +* Thu Feb 14 2013 Fedora Release Engineering - 0.2.3-2.gitf663ca2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Aug 23 2012 Aleš Kozumplík - 0.0.0-17.git6c9d3eb +- Rebase to upstream 6c9d3eb. +- Drop the solv.i stdbool.h fix integrated upstream. +- Dropped the job reasons fix. + +* Mon Jul 23 2012 Aleš Kozumplík - 0.0.0-16.git1617994 +- Fix build problems with Perl bindings. + +* Mon Jul 23 2012 Aleš Kozumplík - 0.0.0-15.git1617994 +- Rebuilt after a failed mass rebuild. + +* Thu Jul 19 2012 Fedora Release Engineering - 0.0.0-14.git1617994 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Jul 16 2012 Aleš Kozumplik - 0.0.0-13.git1617994%{?dist} +- preliminary fix for JOB resons in solver_describe_decision(). + +* Sun Jul 1 2012 Aleš Kozumplik - 0.0.0-12.git1617994%{?dist} +- Rebase to upstream 1617994. +- Support for RPM_ADD_WITH_HDRID. + +* Thu Jun 7 2012 Aleš Kozumplik - 0.0.0-11.gitd39a42b%{?dist} +- Rebase to upstream d39a42b. +- Fix the epochs. +- Move the ruby modules into vendorarch dir, where they are expected. + +* Thu May 17 2012 Aleš Kozumplik - 0.0.0-9.git8cf7650%{?dist} +- Rebase to upstream 8cf7650. +- ruby bindings: fix USE_VENDORDIRS for Fedora. + +* Thu Apr 12 2012 Aleš Kozumplik - 0.0.0-7.gitaf1465a2%{?dist} +- Rebase to the upstream. +- Make repo_add_solv() work without stub repodata. + +* Thu Apr 5 2012 Karel Klíč - 0.0.0-6.git80afaf7%{?dist} +- Rebuild for the new libdb package. + +* Mon Apr 2 2012 Karel Klíč - 0.0.0-5.git80afaf7%{?dist} +- Rebuild for the new rpm package. + +* Wed Mar 21 2012 Aleš Kozumplík - 0.0.0-4.git80afaf7%{?dist} +- New upstream version, fix the .rpm release number. + +* Wed Mar 21 2012 Aleš Kozumplík - 0.0.0-3.git80afaf7%{?dist} +- New upstream version. + +* Tue Feb 7 2012 Karel Klíč - 0.0.0-2.git857fe28%{?dist} +- Adapted to Ruby 1.9.3 (workaround for broken CMake in Fedora and + ruby template correction in bindings) + +* Thu Feb 2 2012 Karel Klíč - 0.0.0-1.git857fe28 +- Initial packaging +- Based on Jindra Novy's spec file +- Based on upstream spec file