Compare commits

...

No commits in common. "c8" and "c9-beta" have entirely different histories.
c8 ... c9-beta

13 changed files with 986 additions and 580 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/libsolv-0.7.20.tar.gz SOURCES/libsolv-0.7.24.tar.gz

View File

@ -1 +1 @@
35be0bb4422af55bc8434f3c33367dbb7dc50cba SOURCES/libsolv-0.7.20.tar.gz d5bcae967154dd1e904fd90cc17f5dce3da646f8 SOURCES/libsolv-0.7.24.tar.gz

View File

@ -1,20 +1,20 @@
From c56a7db62db6d62b53830f8f1af4d5a70e86d69f Mon Sep 17 00:00:00 2001 From 49859c1ad32487de6adb65eedf4b81f021e1b0e8 Mon Sep 17 00:00:00 2001
From: Jaroslav Rohel <jrohel@redhat.com> From: Jaroslav Rohel <jrohel@redhat.com>
Date: Fri, 25 Oct 2019 14:33:22 +0200 Date: Fri, 25 Oct 2019 14:33:22 +0200
Subject: [PATCH 1/3] Add support for computing hashes using OpenSSL Subject: [PATCH] Add support for computing hashes using OpenSSL
It adds WITH_OPENSSL build option. It adds WITH_OPENSSL build option.
If it is ON, OpenSSL will be used instead of internal implementation If it is ON, OpenSSL will be used instead of internal implementation
of computing hashes (MD5, SHA1, SHA224, SHA256, SHA384, SHA512). of computing hashes (MD5, SHA1, SHA224, SHA256, SHA384, SHA512).
--- ---
CMakeLists.txt | 13 +++++++++++-- CMakeLists.txt | 13 +++++++++++--
src/CMakeLists.txt | 12 +++++++++--- src/CMakeLists.txt | 13 ++++++++++---
src/chksum.c | 32 ++++++++++++++++++++++++++++++++ src/chksum.c | 32 ++++++++++++++++++++++++++++++++
tools/CMakeLists.txt | 2 +- tools/CMakeLists.txt | 2 +-
4 files changed, 53 insertions(+), 6 deletions(-) 4 files changed, 54 insertions(+), 6 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3541f496..e73dc552 100644 index f899c49..23615bd 100644
--- a/CMakeLists.txt --- a/CMakeLists.txt
+++ b/CMakeLists.txt +++ b/CMakeLists.txt
@@ -40,6 +40,7 @@ OPTION (ENABLE_ZCHUNK_COMPRESSION "Build with zchunk compression support?" OFF) @@ -40,6 +40,7 @@ OPTION (ENABLE_ZCHUNK_COMPRESSION "Build with zchunk compression support?" OFF)
@ -59,22 +59,23 @@ index 3541f496..e73dc552 100644
SET (SYSTEM_LIBRARIES ${RPMDB_LIBRARY} ${SYSTEM_LIBRARIES}) SET (SYSTEM_LIBRARIES ${RPMDB_LIBRARY} ${SYSTEM_LIBRARIES})
ENDIF (ENABLE_RPMDB) ENDIF (ENABLE_RPMDB)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index bbf30bac..6b5ea42b 100644 index ca04b39..a0ce267 100644
--- a/src/CMakeLists.txt --- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt +++ b/src/CMakeLists.txt
@@ -18,9 +18,8 @@ SET (libsolv_SRCS @@ -18,9 +18,9 @@ SET (libsolv_SRCS
solver.c solverdebug.c repo_solv.c repo_write.c evr.c pool.c 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 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 transaction.c order.c rules.c problems.c linkedpkg.c cplxdeps.c
- chksum.c md5.c sha1.c sha2.c solvversion.c selection.c - chksum.c md5.c sha1.c sha2.c solvversion.c selection.c
- fileprovides.c diskusage.c suse.c solver_util.c cleandeps.c - fileprovides.c diskusage.c suse.c solver_util.c cleandeps.c
- userinstalled.c filelistfilter.c) - userinstalled.c filelistfilter.c decision.c)
+ chksum.c solvversion.c selection.c fileprovides.c diskusage.c + chksum.c solvversion.c selection.c fileprovides.c diskusage.c
+ suse.c solver_util.c cleandeps.c userinstalled.c filelistfilter.c) + suse.c solver_util.c cleandeps.c userinstalled.c
+ filelistfilter.c decision.c)
SET (libsolv_HEADERS SET (libsolv_HEADERS
bitmap.h evr.h hash.h policy.h poolarch.h poolvendor.h pool.h bitmap.h evr.h hash.h policy.h poolarch.h poolvendor.h pool.h
@@ -43,6 +42,10 @@ IF (WIN32) @@ -43,14 +43,21 @@ IF (WIN32)
LIST (APPEND libsolv_SRCS ${WIN32_COMPAT_SOURCES}) LIST (APPEND libsolv_SRCS ${WIN32_COMPAT_SOURCES})
ENDIF (WIN32) ENDIF (WIN32)
@ -85,7 +86,8 @@ index bbf30bac..6b5ea42b 100644
IF (HAVE_LINKER_VERSION_SCRIPT) 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") 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) ENDIF (HAVE_LINKER_VERSION_SCRIPT)
@@ -51,6 +54,9 @@ IF (DISABLE_SHARED)
IF (DISABLE_SHARED)
ADD_LIBRARY (libsolv STATIC ${libsolv_SRCS}) ADD_LIBRARY (libsolv STATIC ${libsolv_SRCS})
ELSE (DISABLE_SHARED) ELSE (DISABLE_SHARED)
ADD_LIBRARY (libsolv SHARED ${libsolv_SRCS}) ADD_LIBRARY (libsolv SHARED ${libsolv_SRCS})
@ -96,7 +98,7 @@ index bbf30bac..6b5ea42b 100644
IF (WIN32) IF (WIN32)
diff --git a/src/chksum.c b/src/chksum.c diff --git a/src/chksum.c b/src/chksum.c
index 1f8ab471..9189b744 100644 index 1f8ab47..9189b74 100644
--- a/src/chksum.c --- a/src/chksum.c
+++ b/src/chksum.c +++ b/src/chksum.c
@@ -15,10 +15,42 @@ @@ -15,10 +15,42 @@
@ -143,7 +145,7 @@ index 1f8ab471..9189b744 100644
#include "strfncs.h" #include "strfncs.h"
#endif #endif
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index f19030eb..d477e195 100644 index f19030e..d477e19 100644
--- a/tools/CMakeLists.txt --- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt
@@ -116,7 +116,7 @@ SET(tools_list ${tools_list} repo2solv) @@ -116,7 +116,7 @@ SET(tools_list ${tools_list} repo2solv)
@ -155,6 +157,6 @@ index f19030eb..d477e195 100644
ADD_EXECUTABLE (mergesolv mergesolv.c ) ADD_EXECUTABLE (mergesolv mergesolv.c )
TARGET_LINK_LIBRARIES (mergesolv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES}) TARGET_LINK_LIBRARIES (mergesolv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES})
-- --
2.31.1 libgit2 1.3.2

View File

@ -1,311 +0,0 @@
From 9b89a186e3769631b6cee859be9d69063cfdfb94 Mon Sep 17 00:00:00 2001
From: Michael Schroeder <mls@suse.de>
Date: Fri, 25 Feb 2022 16:47:21 +0100
Subject: [PATCH 2/3] Add support for storing user data in a solv file
Userdata can be arbritrary (binary)data with a maximum size of
65535 bytes. It can be read without reading the complete
solv file, but do not forget to rewind the fp after reading
the user data.
New functions:
void
void repowriter_set_userdata(Repowriter *writer, const void *data, int len)
int solv_read_userdata(FILE *fp, unsigned char **datap, int *lenp)
---
src/libsolv.ver | 2 ++
src/pooltypes.h | 6 ++++--
src/repo_solv.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++
src/repo_solv.h | 1 +
src/repo_write.c | 24 ++++++++++++++++++++-
src/repo_write.h | 3 +++
tools/dumpsolv.c | 50 ++++++++++++++++++++++++++++++++++++++++----
7 files changed, 133 insertions(+), 7 deletions(-)
diff --git a/src/libsolv.ver b/src/libsolv.ver
index ee40d0ad..4c6fbf4f 100644
--- a/src/libsolv.ver
+++ b/src/libsolv.ver
@@ -255,6 +255,7 @@ SOLV_1.0 {
repowriter_set_keyqueue;
repowriter_set_repodatarange;
repowriter_set_solvablerange;
+ repowriter_set_userdata;
repowriter_write;
selection_add;
selection_filter;
@@ -288,6 +289,7 @@ SOLV_1.0 {
solv_malloc;
solv_malloc2;
solv_oom;
+ solv_read_userdata;
solv_realloc;
solv_realloc2;
solv_replacebadutf8;
diff --git a/src/pooltypes.h b/src/pooltypes.h
index e1f77b0e..3bde155a 100644
--- a/src/pooltypes.h
+++ b/src/pooltypes.h
@@ -23,9 +23,11 @@
#define SOLV_VERSION_6 6
#define SOLV_VERSION_7 7
#define SOLV_VERSION_8 8
+#define SOLV_VERSION_9 9
-#define SOLV_FLAG_PREFIX_POOL 4
-#define SOLV_FLAG_SIZE_BYTES 8
+#define SOLV_FLAG_PREFIX_POOL 4
+#define SOLV_FLAG_SIZE_BYTES 8
+#define SOLV_FLAG_USERDATA 16
struct s_Stringpool;
typedef struct s_Stringpool Stringpool;
diff --git a/src/repo_solv.c b/src/repo_solv.c
index 761d06e6..2ba602b2 100644
--- a/src/repo_solv.c
+++ b/src/repo_solv.c
@@ -514,6 +514,7 @@ repo_add_solv(Repo *repo, FILE *fp, int flags)
switch (solvversion)
{
case SOLV_VERSION_8:
+ case SOLV_VERSION_9:
break;
default:
return pool_error(pool, SOLV_ERROR_UNSUPPORTED, "unsupported SOLV version");
@@ -552,6 +553,18 @@ repo_add_solv(Repo *repo, FILE *fp, int flags)
return pool_error(pool, SOLV_ERROR_CORRUPT, "main repository contains holes, cannot extend");
}
+ /******* Part 0: skip optional userdata ******************************/
+
+ if (solvflags & SOLV_FLAG_USERDATA)
+ {
+ unsigned int userdatalen = read_u32(&data);
+ if (userdatalen >= 65536)
+ return pool_error(pool, SOLV_ERROR_CORRUPT, "illegal userdata length");
+ while (userdatalen--)
+ if (getc(data.fp) == EOF)
+ return pool_error(pool, SOLV_ERROR_EOF, "unexpected EOF");
+ }
+
/******* Part 1: string IDs *****************************************/
sizeid = read_u32(&data); /* size of string space */
@@ -1353,3 +1366,44 @@ printf("=> %s %s %p\n", pool_id2str(pool, keys[key].name), pool_id2str(pool, key
return 0;
}
+int
+solv_read_userdata(FILE *fp, unsigned char **datap, int *lenp)
+{
+ unsigned char d[4 * 10], *ud = 0;
+ unsigned int n;
+ if (fread(d, sizeof(d), 1, fp) != 1)
+ return SOLV_ERROR_EOF;
+ n = d[0] << 24 | d[1] << 16 | d[2] << 8 | d[3];
+ if (n != ('S' << 24 | 'O' << 16 | 'L' << 8 | 'V'))
+ return SOLV_ERROR_NOT_SOLV;
+ n = d[4] << 24 | d[5] << 16 | d[6] << 8 | d[7];
+ switch(n)
+ {
+ case SOLV_VERSION_8:
+ case SOLV_VERSION_9:
+ break;
+ default:
+ return SOLV_ERROR_UNSUPPORTED;
+ }
+ n = d[32] << 24 | d[33] << 16 | d[34] << 8 | d[35];
+ if (!(n & SOLV_FLAG_USERDATA))
+ n = 0;
+ else
+ n = d[36] << 24 | d[37] << 16 | d[38] << 8 | d[39];
+ if (n >= 65536)
+ return SOLV_ERROR_CORRUPT;
+ if (n)
+ {
+ ud = solv_malloc(n + 1);
+ if (fread(ud, n, 1, fp) != 1)
+ {
+ solv_free(ud);
+ return SOLV_ERROR_EOF;
+ }
+ ud[n] = 0;
+ }
+ *datap = ud;
+ if (lenp)
+ *lenp = (int)n;
+ return 0;
+}
diff --git a/src/repo_solv.h b/src/repo_solv.h
index 0c663949..57bf1772 100644
--- a/src/repo_solv.h
+++ b/src/repo_solv.h
@@ -23,6 +23,7 @@ extern "C" {
#endif
extern int repo_add_solv(Repo *repo, FILE *fp, int flags);
+extern int solv_read_userdata(FILE *fp, unsigned char **datap, int *lenp);
#define SOLV_ADD_NO_STUBS (1 << 8)
diff --git a/src/repo_write.c b/src/repo_write.c
index af4e7599..a11de002 100644
--- a/src/repo_write.c
+++ b/src/repo_write.c
@@ -1071,6 +1071,7 @@ repowriter_create(Repo *repo)
Repowriter *
repowriter_free(Repowriter *writer)
{
+ solv_free(writer->userdata);
return solv_free(writer);
}
@@ -1107,6 +1108,17 @@ repowriter_set_solvablerange(Repowriter *writer, int solvablestart, int solvable
writer->solvableend = solvableend;
}
+void
+repowriter_set_userdata(Repowriter *writer, const void *data, int len)
+{
+ writer->userdata = solv_free(writer->userdata);
+ writer->userdatalen = 0;
+ if (len < 0 || len >= 65536)
+ return;
+ writer->userdata = len ? solv_memdup(data, len) : 0;
+ writer->userdatalen = len;
+}
+
/*
* the code works the following way:
*
@@ -1898,7 +1910,10 @@ for (i = 1; i < target.nkeys; i++)
/* write file header */
write_u32(&target, 'S' << 24 | 'O' << 16 | 'L' << 8 | 'V');
- write_u32(&target, SOLV_VERSION_8);
+ if (writer->userdatalen)
+ write_u32(&target, SOLV_VERSION_9);
+ else
+ write_u32(&target, SOLV_VERSION_8);
/* write counts */
@@ -1911,7 +1926,14 @@ for (i = 1; i < target.nkeys; i++)
solv_flags = 0;
solv_flags |= SOLV_FLAG_PREFIX_POOL;
solv_flags |= SOLV_FLAG_SIZE_BYTES;
+ if (writer->userdatalen)
+ solv_flags |= SOLV_FLAG_USERDATA;
write_u32(&target, solv_flags);
+ if (writer->userdatalen)
+ {
+ write_u32(&target, writer->userdatalen);
+ write_blob(&target, writer->userdata, writer->userdatalen);
+ }
if (nstrings)
{
diff --git a/src/repo_write.h b/src/repo_write.h
index 34716705..7734b013 100644
--- a/src/repo_write.h
+++ b/src/repo_write.h
@@ -32,6 +32,8 @@ typedef struct s_Repowriter {
int (*keyfilter)(Repo *repo, Repokey *key, void *kfdata);
void *kfdata;
Queue *keyq;
+ void *userdata;
+ int userdatalen;
} Repowriter;
/* repowriter flags */
@@ -46,6 +48,7 @@ void repowriter_set_keyfilter(Repowriter *writer, int (*keyfilter)(Repo *repo, R
void repowriter_set_keyqueue(Repowriter *writer, Queue *keyq);
void repowriter_set_repodatarange(Repowriter *writer, int repodatastart, int repodataend);
void repowriter_set_solvablerange(Repowriter *writer, int solvablestart, int solvableend);
+void repowriter_set_userdata(Repowriter *writer, const void *data, int len);
int repowriter_write(Repowriter *writer, FILE *fp);
/* convenience functions */
diff --git a/tools/dumpsolv.c b/tools/dumpsolv.c
index 13076574..49651fbe 100644
--- a/tools/dumpsolv.c
+++ b/tools/dumpsolv.c
@@ -13,6 +13,7 @@
static int with_attr;
static int dump_json;
+static int dump_userdata;
#include "pool.h"
#include "chksum.h"
@@ -394,10 +395,7 @@ int main(int argc, char **argv)
int c, i, j, n;
Solvable *s;
- pool = pool_create();
- pool_setloadcallback(pool, loadcallback, 0);
-
- while ((c = getopt(argc, argv, "haj")) >= 0)
+ while ((c = getopt(argc, argv, "uhaj")) >= 0)
{
switch(c)
{
@@ -410,11 +408,55 @@ int main(int argc, char **argv)
case 'j':
dump_json = 1;
break;
+ case 'u':
+ dump_userdata++;
+ break;
default:
usage(1);
break;
}
}
+ if (dump_userdata)
+ {
+ if (optind == argc)
+ argc++;
+ for (; optind < argc; optind++)
+ {
+ unsigned char *userdata = 0;
+ int r, userdatalen = 0;
+ if (argv[optind] && freopen(argv[optind], "r", stdin) == 0)
+ {
+ perror(argv[optind]);
+ exit(1);
+ }
+ r = solv_read_userdata(stdin, &userdata, &userdatalen);
+ if (r)
+ {
+ fprintf(stderr, "could not read userdata: error %d\n", r);
+ exit(1);
+ }
+ if (dump_userdata > 1)
+ {
+ /* dump raw */
+ if (userdatalen && fwrite(userdata, userdatalen, 1, stdout) != 1)
+ {
+ perror("fwrite");
+ exit(1);
+ }
+ }
+ else
+ {
+ for (r = 0; r < userdatalen; r++)
+ printf("%02x", userdata[r]);
+ printf("\n");
+ }
+ solv_free(userdata);
+ }
+ exit(0);
+ }
+
+ pool = pool_create();
+ pool_setloadcallback(pool, loadcallback, 0);
if (!dump_json)
pool_setdebuglevel(pool, 1);
if (dump_json)
--
2.31.1

View File

@ -0,0 +1,348 @@
From 21090e6067660e4a22d6227118d5cfc30629d548 Mon Sep 17 00:00:00 2001
From: Nicola Sella <nsella@redhat.com>
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

View File

@ -1,68 +0,0 @@
From 07a1a0fd83f108a0e9b1f801b52ff2bd26722097 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= <amatej@redhat.com>
Date: Thu, 27 Jan 2022 08:38:27 +0100
Subject: [PATCH] Allow accessing toolversion at runtime and increase it
---
src/libsolv.ver | 1 +
src/solvversion.c | 1 +
src/solvversion.h.in | 3 ++-
tools/common_write.c | 1 +
4 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/libsolv.ver b/src/libsolv.ver
index 4c6fbf4f..89517f50 100644
--- a/src/libsolv.ver
+++ b/src/libsolv.ver
@@ -306,6 +306,7 @@ SOLV_1.0 {
solv_version_major;
solv_version_minor;
solv_version_patch;
+ solv_toolversion;
solvable_add_deparray;
solvable_add_idarray;
solvable_add_poolstr_array;
diff --git a/src/solvversion.c b/src/solvversion.c
index d66e1958..51d57a63 100644
--- a/src/solvversion.c
+++ b/src/solvversion.c
@@ -11,3 +11,4 @@ const char solv_version[] = LIBSOLV_VERSION_STRING;
int solv_version_major = LIBSOLV_VERSION_MAJOR;
int solv_version_minor = LIBSOLV_VERSION_MINOR;
int solv_version_patch = LIBSOLV_VERSION_PATCH;
+const char solv_toolversion[] = LIBSOLV_TOOLVERSION;
diff --git a/src/solvversion.h.in b/src/solvversion.h.in
index 43b566a1..da0ad743 100644
--- a/src/solvversion.h.in
+++ b/src/solvversion.h.in
@@ -23,6 +23,7 @@ extern const char solv_version[];
extern int solv_version_major;
extern int solv_version_minor;
extern int solv_version_patch;
+extern const char solv_toolversion[];
#cmakedefine LIBSOLV_FEATURE_LINKED_PKGS
#cmakedefine LIBSOLV_FEATURE_COMPLEX_DEPS
@@ -48,6 +49,6 @@ extern int solv_version_patch;
#cmakedefine LIBSOLVEXT_FEATURE_ZCHUNK_COMPRESSION
/* see tools/common_write.c for toolversion history */
-#define LIBSOLV_TOOLVERSION "1.1"
+#define LIBSOLV_TOOLVERSION "1.2"
#endif
diff --git a/tools/common_write.c b/tools/common_write.c
index 36f8dd89..8fda3e33 100644
--- a/tools/common_write.c
+++ b/tools/common_write.c
@@ -19,6 +19,7 @@
/* toolversion history
* 1.0: initial tool version
* 1.1: changed PRODUCT_ENDOFLIFE parsing
+ * 1.2: added UPDATE_COLLECTIONLIST to updateinfo
*/
static int
--
2.31.1

View File

@ -0,0 +1,23 @@
From 6087b30a65d1a742ff0ff75f00aedd39ded33bf6 Mon Sep 17 00:00:00 2001
From: Nicola Sella <nsella@redhat.com>
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 <inline>
#>=Pkg: B 1 1 noarch
#>=Prv: P = 1
--
2.38.1

View File

@ -0,0 +1,314 @@
From 5fef9bb8c9899e64306a87ab89574f3afb9968de Mon Sep 17 00:00:00 2001
From: Nicola Sella <nsella@redhat.com>
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 <inline>
-#>=Pkg: B 1 1 noarch
-#>=Prv: P = 1
-repo available 0 testtags <inline>
-#>=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 <inline>
-result transaction,problems <inline>
-#>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 <inline>
-#>=Pkg: B 1 1 noarch
-#>=Prv: P = 1
-repo available 0 testtags <inline>
-#>=Pkg: X 1 1 noarch
-#>=Pkg: Y 1 1 noarch
-#>=Pkg: A 2 1 noarch
-#>=Req: P = 2 <IF> (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 <inline>
-result transaction,problems <inline>
-#>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 <inline>
#>=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 <inline>
-#>=Pkg: A 1 1 noarch
-#>=Req: P = 1
-#>=Pkg: B 1 1 noarch
-#>=Prv: P = 1
-repo available 0 testtags <inline>
-#>=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 <inline>
-#>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 <inline>
#>=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 <inline>
-#>=Pkg: A 1 1 noarch
-#>=Prv: libA
-#>=Pkg: B 1 1 noarch
-#>=Req: libA
-repo available 0 testtags <inline>
-#>=Pkg: A 2 1 noarch
-#>=Pkg: Anew 2 1 noarch
-#>=Prv: libA
-system i686 rpm system
-
-job update all packages
-result transaction,problems <inline>
-#>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 <inline>
#>=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 <inline>
-#>=Pkg: A 1 1 noarch
-#>=Prv: libA
-#>=Pkg: B 1 1 noarch
-#>=Req: libA
-repo available 0 testtags <inline>
-#>=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 <inline>
-#>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 <inline>
-#>=Pkg: glibc 2.17 325 noarch
-#>=Prv: libcrypt
-#>=Pkg: php 5.4.16 48 noarch
-repo available 0 testtags <inline>
-#>=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 <inline>
-#>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

View File

@ -1,4 +1,4 @@
From 91125fe786cb6de2f050430fa51e11c501f17aed Mon Sep 17 00:00:00 2001 From 9a3f2a2e161c7bcd2da94f6878b2b1470afc09b2 Mon Sep 17 00:00:00 2001
From: Michael Schroeder <mls@suse.de> From: Michael Schroeder <mls@suse.de>
Date: Tue, 18 Apr 2023 11:57:50 +0200 Date: Tue, 18 Apr 2023 11:57:50 +0200
Subject: [PATCH] Treat condition both as positive and negative literal in Subject: [PATCH] Treat condition both as positive and negative literal in
@ -29,7 +29,7 @@ index 6c40752e..26e754d9 100644
2.40.1 2.40.1
From 11fac9a31e892125e19246101b5604322836467d Mon Sep 17 00:00:00 2001 From 2c55198fb476e616ac29a45befe2746be09b7547 Mon Sep 17 00:00:00 2001
From: Michael Schroeder <mls@suse.de> From: Michael Schroeder <mls@suse.de>
Date: Tue, 18 Apr 2023 12:36:40 +0200 Date: Tue, 18 Apr 2023 12:36:40 +0200
Subject: [PATCH] Add testcase for last commit Subject: [PATCH] Add testcase for last commit

View File

@ -1,4 +1,4 @@
From 78b2d8148bea1dc12b854d9c11691d5f1bc33fd8 Mon Sep 17 00:00:00 2001 From ab2ca3eb281c7be17ac23d28c3a57f357555ea04 Mon Sep 17 00:00:00 2001
From: Michael Schroeder <mls@suse.de> From: Michael Schroeder <mls@suse.de>
Date: Wed, 19 Apr 2023 13:09:10 +0200 Date: Wed, 19 Apr 2023 13:09:10 +0200
Subject: [PATCH] Allow to break arch lock-step on erase operations Subject: [PATCH] Allow to break arch lock-step on erase operations
@ -9,10 +9,10 @@ We allow it if SOLVER_SETARCH is (auto-)set in the erase job.
1 file changed, 26 insertions(+) 1 file changed, 26 insertions(+)
diff --git a/src/rules.c b/src/rules.c diff --git a/src/rules.c b/src/rules.c
index 212df322..bbabc55f 100644 index 008d5940..6dee4c64 100644
--- a/src/rules.c --- a/src/rules.c
+++ b/src/rules.c +++ b/src/rules.c
@@ -1668,6 +1668,16 @@ solver_addinfarchrules(Solver *solv, Map *addedmap) @@ -1672,6 +1672,16 @@ solver_addinfarchrules(Solver *solv, Map *addedmap)
if (first) if (first)
continue; /* not the first in the group */ continue; /* not the first in the group */
@ -29,7 +29,7 @@ index 212df322..bbabc55f 100644
if (!bestscore) if (!bestscore)
continue; /* did not find a score for this group */ continue; /* did not find a score for this group */
@@ -2456,6 +2466,20 @@ jobtodisablelist(Solver *solv, Id how, Id what, Queue *q) @@ -2578,6 +2588,20 @@ jobtodisablelist(Solver *solv, Id how, Id what, Queue *q)
case SOLVER_ERASE: case SOLVER_ERASE:
if (!installed) if (!installed)
break; break;
@ -50,7 +50,7 @@ index 212df322..bbabc55f 100644
if (select == SOLVER_SOLVABLE_ALL || (select == SOLVER_SOLVABLE_REPO && what == installed->repoid)) if (select == SOLVER_SOLVABLE_ALL || (select == SOLVER_SOLVABLE_REPO && what == installed->repoid))
{ {
FOR_REPO_SOLVABLES(installed, p, s) FOR_REPO_SOLVABLES(installed, p, s)
@@ -2465,6 +2489,8 @@ jobtodisablelist(Solver *solv, Id how, Id what, Queue *q) @@ -2587,6 +2611,8 @@ jobtodisablelist(Solver *solv, Id how, Id what, Queue *q)
if (pool->solvables[p].repo == installed) if (pool->solvables[p].repo == installed)
{ {
queue_push2(q, DISABLE_UPDATE, p); queue_push2(q, DISABLE_UPDATE, p);
@ -63,7 +63,7 @@ index 212df322..bbabc55f 100644
2.40.1 2.40.1
From dc4c91a71eda2950df11724945ebd5151883a041 Mon Sep 17 00:00:00 2001 From 847f3f1b21f8c396c831564f849981a450c67dbf Mon Sep 17 00:00:00 2001
From: Michael Schroeder <mls@suse.de> From: Michael Schroeder <mls@suse.de>
Date: Fri, 21 Apr 2023 16:15:10 +0200 Date: Fri, 21 Apr 2023 16:15:10 +0200
Subject: [PATCH] Only disable infarch rules on erase if the package was in Subject: [PATCH] Only disable infarch rules on erase if the package was in
@ -75,12 +75,12 @@ Fiexes issue #528
1 file changed, 27 insertions(+), 1 deletion(-) 1 file changed, 27 insertions(+), 1 deletion(-)
diff --git a/src/rules.c b/src/rules.c diff --git a/src/rules.c b/src/rules.c
index bbabc55f..c909ae0b 100644 index 6dee4c64..54fefcb8 100644
--- a/src/rules.c --- a/src/rules.c
+++ b/src/rules.c +++ b/src/rules.c
@@ -2279,6 +2279,31 @@ solver_addblackrules(Solver *solv) @@ -2367,6 +2367,31 @@ reenablerepopriorule(Solver *solv, Id name)
#define DISABLE_DUP 3 #define DISABLE_BLACK 4
#define DISABLE_BLACK 4 #define DISABLE_REPOPRIO 5
+/* check if installed package p is in lock-step with another installed package */ +/* check if installed package p is in lock-step with another installed package */
+static int +static int
@ -110,7 +110,7 @@ index bbabc55f..c909ae0b 100644
static void static void
jobtodisablelist(Solver *solv, Id how, Id what, Queue *q) jobtodisablelist(Solver *solv, Id how, Id what, Queue *q)
{ {
@@ -2490,7 +2515,8 @@ jobtodisablelist(Solver *solv, Id how, Id what, Queue *q) @@ -2612,7 +2637,8 @@ jobtodisablelist(Solver *solv, Id how, Id what, Queue *q)
{ {
queue_push2(q, DISABLE_UPDATE, p); queue_push2(q, DISABLE_UPDATE, p);
if ((set & SOLVER_SETARCH) != 0 && pool->implicitobsoleteusescolors && solv->infarchrules != solv->infarchrules_end) if ((set & SOLVER_SETARCH) != 0 && pool->implicitobsoleteusescolors && solv->infarchrules != solv->infarchrules_end)

View File

@ -0,0 +1,41 @@
From 86717630b78f015ed3e0d41aa299cdde532b9c6f Mon Sep 17 00:00:00 2001
From: Michael Schroeder <mls@suse.de>
Date: Fri, 21 Jul 2023 13:53:46 +0200
Subject: [PATCH] repo_conda: overwrite the package subdir with the info subdir
if there is a conflict
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This is what classic conda does, so we also need to do it.
Fixes issue #529
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
ext/repo_conda.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/ext/repo_conda.c b/ext/repo_conda.c
index 9211cbea..356d3b11 100644
--- a/ext/repo_conda.c
+++ b/ext/repo_conda.c
@@ -314,8 +314,16 @@ parse_package(struct parsedata *pd, struct solv_jsonparser *jp, char *kfn, char
/* if we have a global subdir make sure that it matches */
if (subdir && pd->subdir && strcmp(subdir, pd->subdir) != 0)
{
+ /* we used to return an error here, but classic conda
+ * just overwrites the package subdir with the global
+ * subdir */
+#if 0
pd->error = "subdir mismatch";
return JP_ERROR;
+#else
+ solv_free(subdir);
+ subdir = solv_strdup(pd->subdir);
+#endif
}
if (fn || kfn)
--
2.44.0

View File

@ -0,0 +1,34 @@
diff -up libsolv-0.7.24/ext/repo_rpmmd.c.orig libsolv-0.7.24/ext/repo_rpmmd.c
--- libsolv-0.7.24/ext/repo_rpmmd.c.orig 2023-04-13 10:10:14.000000000 -0400
+++ libsolv-0.7.24/ext/repo_rpmmd.c 2024-04-08 14:00:05.923253315 -0400
@@ -609,6 +609,8 @@ fill_cshash_from_new_solvables(struct pa
KeyValue kv;
Repokey *key;
+ memset(&kv, 0, sizeof(kv));
+
for (i = pd->first; i < pool->nsolvables; i++)
{
if (pool->solvables[i].repo != pd->repo)
diff -up libsolv-0.7.24/ext/repo_susetags.c.orig libsolv-0.7.24/ext/repo_susetags.c
--- libsolv-0.7.24/ext/repo_susetags.c.orig 2023-04-13 10:10:14.000000000 -0400
+++ libsolv-0.7.24/ext/repo_susetags.c 2024-04-08 14:00:50.560276418 -0400
@@ -339,6 +339,7 @@ lookup_shared_id(Repodata *data, Id p, I
if (uninternalized)
{
KeyValue kv;
+ memset(&kv, 0, sizeof(kv));
Repokey *key = repodata_lookup_kv_uninternalized(data, p, keyname, &kv);
if (!key)
return 0;
diff -up libsolv-0.7.24/ext/testcase.c.orig libsolv-0.7.24/ext/testcase.c
--- libsolv-0.7.24/ext/testcase.c.orig 2023-04-13 10:10:14.000000000 -0400
+++ libsolv-0.7.24/ext/testcase.c 2024-04-08 14:12:49.660462318 -0400
@@ -1497,6 +1497,7 @@ testcase_solverresult(Solver *solv, int
if ((resultflags & TESTCASE_RESULT_USERINSTALLED) != 0)
{
Queue q;
+ queue_init(&q);
solver_get_userinstalled(solv, &q, 0);
for (i = 0; i < q.count; i++)
{

View File

@ -10,49 +10,34 @@
%bcond_without conda %bcond_without conda
# For rich dependencies # For rich dependencies
%bcond_without complex_deps %bcond_without complex_deps
%if 0%{?rhel}
%bcond_with helix_repo
%bcond_with suse_repo
%bcond_with debian_repo
%bcond_with arch_repo
# For handling deb + rpm at the same time
%bcond_with multi_semantics
%bcond_with zchunk
%else
%bcond_without helix_repo %bcond_without helix_repo
%bcond_without suse_repo %bcond_without suse_repo
%bcond_without debian_repo %bcond_without debian_repo
%bcond_without arch_repo %bcond_without arch_repo
# For handling deb + rpm at the same time # For handling deb + rpm at the same time
%bcond_without multi_semantics %bcond_without multi_semantics
%bcond_without zchunk %bcond_with zchunk
%endif
%bcond_without zstd %bcond_without zstd
#global commitnum 2901 %define __cmake_switch(b:) %[%{expand:%%{?with_%{-b*}}} ? "ON" : "OFF"]
#global commit 47fbaa2a0892866d30ec0e1b4c885532d0aca7b8
#global shortcommit %%(c=%%{commit}; echo ${c:0:7})
%define __cmake_switch(b:) %{expand:%%{?with_%{-b*}:ON}}%{expand:%%{!?with_%{-b*}:OFF}}
Name: lib%{libname} Name: lib%{libname}
Version: 0.7.20 Version: 0.7.24
Release: 6%{?dist} Release: 3%{?dist}
Summary: Package dependency solver Summary: Package dependency solver
License: BSD License: BSD
URL: https://github.com/openSUSE/libsolv URL: https://github.com/openSUSE/libsolv
%if %{defined commit}
Source: %{url}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz
%else
Source: %{url}/archive/%{version}/%{name}-%{version}.tar.gz Source: %{url}/archive/%{version}/%{name}-%{version}.tar.gz
%endif # https://bugzilla.redhat.com/show_bug.cgi?id=1993126
# https://bugzilla.redhat.com/show_bug.cgi?id=1630300
Patch1: 0001-Add-support-for-computing-hashes-using-OpenSSL.patch Patch1: 0001-Add-support-for-computing-hashes-using-OpenSSL.patch
Patch2: 0002-Add-support-for-storing-user-data-in-a-solv-file.patch Patch2: 0002-Revert-Improve-choice-rule-generation.patch
Patch3: 0003-Allow-accessing-toolversion-at-runtime-and-increase-.patch Patch3: 0003-Revert-Add-complex_deps-requirement-to-choice1b-test.patch
Patch4: 0004-Treat-condition-both-as-positive-and-negative-litera.patch Patch4: 0004-Revert-Add-more-choicerules-tests.patch
Patch5: 0005-Allow_break_arch_lock_step_on_erase.patch Patch5: 0005-Treat-condition-both-as-positive-and-negative-litera.patch
Patch6: 0006-Allow_break_arch_lock_step_on_erase.patch
Patch7: libsolv-0.7.24-static_analysis_fixes.patch
Patch8: libsolv-0.7.24-repo_conda-overwrite-the-package-subdir-with-the-inf.patch
BuildRequires: cmake BuildRequires: cmake
BuildRequires: gcc-c++ BuildRequires: gcc-c++
@ -75,8 +60,6 @@ BuildRequires: libzstd-devel
# -DENABLE_ZCHUNK_COMPRESSION=ON # -DENABLE_ZCHUNK_COMPRESSION=ON
BuildRequires: pkgconfig(zck) BuildRequires: pkgconfig(zck)
%endif %endif
# https://bugzilla.redhat.com/show_bug.cgi?id=1830346
Conflicts: rpm%{?_isa} < 4.14.3
%description %description
A free package dependency solver using a satisfiability algorithm. The A free package dependency solver using a satisfiability algorithm. The
@ -153,7 +136,7 @@ Python 3 version.
%endif %endif
%prep %prep
%autosetup -p1 %{?commit:-n %{name}-%{commit}} %autosetup -p1
%build %build
%cmake -GNinja \ %cmake -GNinja \
@ -281,24 +264,47 @@ export LD_LIBRARY_PATH=%{buildroot}%{_libdir}
%endif %endif
%changelog %changelog
* Wed Jun 21 2023 Jaroslav Rohel <jrohel@redhat.com> - 0.7.20-6 * Tue Apr 09 2024 Petr Pisar <ppisar@redhat.com> - 0.7.24-3
- Some static analysis fixes for unitialized structs
Resolves: RHEL-25498
- Fix a memory leak in parse_package() of repo conda (RHEL-25496)
* Wed Jun 21 2023 Jaroslav Rohel <jrohel@redhat.com> - 0.7.24-2
- Backport Allow to break arch lock-step on erase operations (RhBug:2172288,2172292) - Backport Allow to break arch lock-step on erase operations (RhBug:2172288,2172292)
* Wed May 17 2023 Jaroslav Rohel <jrohel@redhat.com> - 0.7.20-5 * Tue May 16 2023 Jaroslav Rohel <jrohel@redhat.com> - 0.7.24-1
- Update to 0.7.24
- Backport Treat condition both as positive and negative literal in pool_add_pos_literals_complex_dep - Backport Treat condition both as positive and negative literal in pool_add_pos_literals_complex_dep
(RhBug:2185061,2190136) (RhBug:2185061,2190136)
* Wed Dec 07 2022 Nicola Sella <nsella@redhat.com> - 0.7.20-4 * Thu Dec 15 2022 Nicola Sella <nsella@redhat.com> - 0.7.22-4
- Drop patch to fix pick of old build (RhBug:2150300,RhBug:2151551) - Delete patch "Move OpenSSL functions" to fix ABI change
* Thu May 05 2022 Lukas Hrazky <lhrazky@redhat.com> - 0.7.20-3 * Wed Dec 07 2022 Nicola Sella <nsella@redhat.com> - 0.7.22-3
- Allow accessing toolversion at runtime and increase it - Revert choice rule generation to fix pick of old build (RhBug:2150300,RhBug:2151551)
* Wed May 04 2022 Lukas Hrazky <lhrazky@redhat.com> - 0.7.20-2 * Mon Oct 31 2022 Nicola Sella <nsella@redhat.com> - 0.7.22-2
- Add support for storing user data in a solv file - Move OpenSSL functions to use 3.0 compatible API
- Improve choice rule generation
* Tue Nov 09 2021 Pavla Kratochvilova <pkratoch@redhat.com> - 0.7.20-1 * Thu Apr 28 2022 Pavla Kratochvilova <pkratoch@redhat.com> - 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 <pkratoch@redhat.com> - 0.7.20-2
- Build without support of zchunk (RhBug:2021084)
* Mon Oct 25 2021 Pavla Kratochvilova <pkratoch@redhat.com> - 0.7.20-1
- Update to 0.7.20 - Update to 0.7.20
- new SOLVER_EXCLUDEFROMWEAK job to ignore pkgs for weak dependencies - new SOLVER_EXCLUDEFROMWEAK job to ignore pkgs for weak dependencies
- support for environments in comps parser - support for environments in comps parser
@ -306,161 +312,178 @@ export LD_LIBRARY_PATH=%{buildroot}%{_libdir}
- choice rules: treat orphaned packages as newest - choice rules: treat orphaned packages as newest
- fix compatibility with Python 3.10 - fix compatibility with Python 3.10
* Tue Jul 27 2021 Pavla Kratochvilova <pkratoch@redhat.org> - 0.7.19-1 * Thu Aug 12 2021 Pavla Kratochvilova <pkratoch@redhat.com> - 0.7.19-3
- Use OpenSSL for computing hashes (RhBug:1993126)
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 0.7.19-2
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Tue Jul 27 2021 Pavla Kratochvilova <pkratoch@redhat.com> - 0.7.19-1
- Update to 0.7.19 - Update to 0.7.19
- repo_add_conda: add flag to skip v2 packages - repo_add_conda: add flag to skip v2 packages
- fix rare segfault in resolve_jobrules() that could happen if new rules are learnt - fix rare segfault in resolve_jobrules() that could happen if new rules are learnt
- fix error handling in solv_xfopen_fd()
- fix memory leaks - fix memory leaks
* Fri Apr 30 2021 Pavla Kratochvilova <pkratoch@redhat.org> - 0.7.17-2 * Tue Jul 27 2021 Pavla Kratochvilova <pkratoch@redhat.com> - 0.7.17-6
- Fix rpm dependency - Fix issues detected by static analyzers
* Thu Apr 29 2021 Pavla Kratochvilova <pkratoch@redhat.org> - 0.7.17-1 * Tue Jun 22 2021 Mohan Boddu <mboddu@redhat.com> - 0.7.17-5
- Rebuilt for RHEL 9 BETA for openssl 3.0
Related: rhbz#1971065
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 0.7.17-4
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.17-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Sat Jan 23 2021 Igor Raits <ignatenkobrain@fedoraproject.org> - 0.7.17-2
- Drop unneeded explicit dependency on RPM
* Thu Jan 21 2021 Igor Raits <ignatenkobrain@fedoraproject.org> - 0.7.17-1
- Update to 0.7.17 - Update to 0.7.17
- selected bug fixes:
* repo_write: fix handling of nested flexarray
* improve choicerule generation a bit more to cover more cases
* harden testcase parser against repos being added too late
* support python-3.10
* check %_dbpath macro in rpmdb code
- new features:
* handle default/visible/langonly attributes in comps parser
* support multiple collections in updateinfo parser
* add '-D' option in rpmdb2solv to set the dbpath
* Thu Jan 14 2021 Nicola Sella <nsella@redhat.com> - 0.7.16-2 * Thu Jan 7 2021 Vít Ondruch <vondruch@redhat.com> - 0.7.15-3
- Enable zstd compression in libsolv - Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_3.0
* Wed Nov 11 2020 Nicola Sella <nsella@redhat.com> - 0.7.16-1 * Mon Nov 16 2020 Miro Hrončok <mhroncok@redhat.com> - 0.7.15-2
- Update to 0.7.16 - Backport upstream fix for Python 3.10 compatibility
- selected bug fixes: - Fixes: rhbz#1896411
* make testcase_mangle_repo_names deal correctly with freed repos
[bnc#1177238]
* fix add_complex_recommends() selecting conflicted packages in
rare cases leading to crashes
* improve choicerule generation so that package updates are
prefered in more cases
* fix deduceq2addedmap clearing bits outside of the map
* conda: feature depriorization and fix startswith implementation
* Fix solvable swapping messing up idarrays
* fix ruleinfo of complex dependencies returning the wrong origin
* fix solv_zchunk decoding error if large chunks are used
[bnc#1159314]
- new features
* new testcase_mangle_repo_names() function
* new solv_fmemopen() function
* Enable zstd compression support for sle15 and sle15-sp2
* Support blacklisted packages in solver_findproblemrule()
[bnc#1172135]
* Support rules with multiple negative literals in choice rule
generation
* build with -DENABLE_RPMDB_LIBRPM=1 on SUSE to support
multiple rpm database backends
* added two new function to make libzypp independent of the rpm
database format
* support conda constrains dependencies
* Mon Oct 19 2020 Igor Raits <ignatenkobrain@fedoraproject.org> - 0.7.15-1
- Update to 0.7.15
* Mon Apr 06 2020 Ales Matej <amatej@redhat.org> - 0.7.11-1 * Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.14-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Fri Jul 03 2020 Igor Raits <ignatenkobrain@fedoraproject.org> - 0.7.14-3
- Switch to %%cmake_build/%%cmake_install
- Drop Python 2 bindings
* Wed Jun 03 2020 Igor Raits <ignatenkobrain@fedoraproject.org> - 0.7.14-2
- Raise lowest compatible RPM version
* Wed May 27 2020 Igor Raits <ignatenkobrain@fedoraproject.org> - 0.7.14-1
- Update to 0.7.14
* Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 0.7.12-4
- Rebuilt for Python 3.9
* Mon May 25 2020 Colin Walters <walters@verbum.org> - 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 <mhroncok@redhat.com> - 0.7.12-2
- Rebuilt for Python 3.9
* Tue Apr 21 2020 Igor Raits <ignatenkobrain@fedoraproject.org> - 0.7.12-1
- Update to 0.7.12
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.11-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Jan 23 05:17:39 EST 2020 Neal Gompa <ngompa13@gmail.com> - 0.7.11-1
- Update to 0.7.11 - Update to 0.7.11
- selected bug fixes:
* support arch<->noarch package changes when creating patch
conflicts from the updateinfo data
* also support other rpm database types
* fixed solv_zchunk decoding error if large chunks are used
* treat retracted pathes as irrelevant
* made add_update_target work with multiversion installs
- new features
* support for SOLVER_BLACKLIST jobs that block the installation of matched
packages unless they are directly selected by an SOLVER_INSTALL job
* libsolv now also parses the patch status in the updateinfo parser
* new solvable_matchessolvable() function
* support conda constrains dependencies
* new rpm_stat_database() function
* new rpm_hash_database_state() function
* Tue Dec 17 08:41:00 CET 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.7.10-1
- Update to 0.7.10
* Tue Jun 11 2019 Ales Matej <amatej@redhat.org> - 0.7.7-1 * Tue Nov 12 12:52:58 CET 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.7.8-1
- Update to 0.7.8
* Sat Oct 19 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.7.7-1
- Update to 0.7.7 - Update to 0.7.7
- selected bug fixes:
* fix updating of too many packages in focusbest mode
* fix handling of disabled installed packages in distupgrade
* fix repository priority handling for multiversion packages
* better support of inverval deps in pool_match_dep()
* support src rpms that have non-empty provides
* fix favorq leaking between solver runs if the solver is reused
* fix SOLVER_FLAG_FOCUS_BEST updateing packages without reason
* be more correct with multiversion packages that obsolete their
own name
* allow building with swig-4.0.0
* lock jobs now take precedence over dup and forcebest jobs
- new features
* new POOL_FLAG_WHATPROVIDESWITHDISABLED pool flag
* bindings: add get_disabled_list() and set_disabled_list()
* bindings: add whatcontainsdep()
* bindings: make the selection filters return the self object
* MSVC compilation support
* Tue Jun 11 2019 Pavla Kratochvilova <pkratoch@redhat.org> - 0.7.4-3 * Mon Oct 14 2019 Jaroslav Mracek <jmracek@redhat.com> - 0.7.6-3
- Backport patches: Use OpenSSL for computing hashes (RhBug:1630300) - Backport support of POOL_FLAG_WHATPROVIDESWITHDISABLED pool flag
* Wed May 29 2019 Pavla Kratochvilova <pkratoch@redhat.org> - 0.7.4-2 * Thu Oct 03 2019 Miro Hrončok <mhroncok@redhat.com> - 0.7.6-2
- Backport patch: Not considered excluded packages as a best candidate (RhBug:1677583) - Rebuilt for Python 3.8.0rc1 (#1748018)
* Fri Apr 26 2019 Pavla Kratochvilova <pkratoch@redhat.org> - 0.7.4-1 * Fri Aug 30 09:08:03 CEST 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.7.6-1
- soname bump to "1" - Update to 0.7.6
- incompatible API changes:
* bindings: Selection.flags is now an attribute
* repodata_lookup_num now works like the other lookup_num functions
- new functions:
* selection_make_matchsolvable
* selection_make_matchsolvablelist
* pool_whatmatchessolvable
* repodata_search_arrayelement
* repodata_lookup_kv_uninternalized
* repodata_search_uninternalized
* repodata_translate_dir
- new repowriter interface to write solv files allowing better
control over what gets written
- support for filtered file lists with a custom filter
- dropped support of (since a long time unused) REPOKEY_TYPE_U32
- selected bug fixes:
* fix nasty off-by-one error in repo_write
* do not autouninstall packages because of forcebest updates
* fixed a couple of null pointer derefs and potential memory
leaks
* made disfavoring recommended packages work if strong recommends
is enabled
* no longer disable infarch rules when they don't conflict with
the job
* repo_add_rpmdb: do not copy bad solvables from the old solv file
* fix cleandeps updates not updating all packages
- new features:
* support rpm's new '^' version separator
* support set/get_considered_list in bindings
* new experimental SOLVER_FLAG_ONLY_NAMESPACE_RECOMMENDED flag
* do favor evaluation before pruning allowing to (dis)favor
specific package versions
* bindings: support pool.matchsolvable(), pool.whatmatchessolvable()
pool.best_solvables() and selection.matchsolvable()
* experimental DISTTYPE_CONDA and REL_CONDA support
* Fri Feb 08 2019 Jaroslav Mracek <jmracek@redhat.com> - 0.6.35-6 * Sun Aug 18 2019 Miro Hrončok <mhroncok@redhat.com> - 0.7.5-4
- Backport patch to add support for modular updateinfoxml data - Rebuilt for Python 3.8
* Wed Feb 06 2019 Jaroslav Mracek <jmracek@redhat.com> - 0.6.35-5 * Sun Aug 04 11:07:46 CEST 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.7.5-3
- Backport patches for: Install of update of nss.x86_64 adds i686 into transaction (RhBug:1663136) - Fix queries with src.rpm with DynamicBuildRequires
* Wed Dec 12 2018 Pavla Kratochvilova <pkratoch@redhat.org> - 0.6.35-4 * Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.5-2
- Backport patch: Fix memory leaks, memory access, not used values - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Mon Oct 15 2018 Jaroslav Mracek <jmracek@redhat.org> - 0.6.35-3 * Wed Jun 12 15:58:49 CEST 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.7.5-1
- Update to 0.6.35 - Update to 0.7.5
* Mon Jun 10 22:13:20 CET 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.7.4-5
- Rebuild for RPM 4.15
* Mon Jun 10 15:42:03 CET 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.7.4-4
- Rebuild for RPM 4.15
* Tue May 21 2019 Jitka Plesnikova <jplesnik@redhat.com> - 0.7.4-3
- Fixed build for SWIG 4.0.0 (#1707367)
* Tue Apr 02 14:45:22 CEST 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 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 <ignatenkobrain@fedoraproject.org> - 0.7.4-1
- Update to 0.7.4
* Tue Feb 26 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 0.7.3-4
- Backport: Add support for modular updateinfo.xml data
* Wed Feb 13 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.7.3-3
- bindings: Add best_solvables/whatmatchessolvable
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Wed Jan 30 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.7.3-1
- Update to 0.7.3
* Tue Jan 15 2019 Jaroslav Mracek <jmracek@redhat.com> - 0.7.2-2
- Backport Do-not-disable-infarch-rules-when-they-dont-conflict-with-the-job
* Sat Jan 12 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.7.2-2
- Fix small security issues
* Mon Dec 10 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.7.2-1
- Update to 0.7.2
* Fri Nov 30 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org - 0.7.1-2
- Backport fixes for autouninstall
* Wed Oct 31 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.7.1-1
- Update to 0.7.1
* Sun Oct 28 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.7.0-1
- Update to 0.7.0
* Mon Oct 01 2018 Jaroslav Rohel <jrohel@redhat.org> - 0.6.35-3
- Backport patch: Make sure that targeted updates don't do reinstalls - Backport patch: Make sure that targeted updates don't do reinstalls
* Sun Jun 10 2018 Charalampos Stratakis <cstratak@redhat.com> - 0.6.34-2 * Mon Oct 01 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.6.35-2
- Conditionalize the python2 subpackage - Disable python2 subpackage
* Thu Aug 09 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.6.35-1
- Update to 0.6.35
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.34-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Mon Jul 02 2018 Miro Hrončok <mhroncok@redhat.com> - 0.6.34-5
- Rebuilt for Python 3.7
* Mon Jul 02 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.6.34-4
- Rebuilt for Python 3.7
* Fri Jun 29 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.6.34-3
- Backport few fixes and enhancements from upstream
* Tue Jun 19 2018 Miro Hrončok <mhroncok@redhat.com> - 0.6.34-2
- Rebuilt for Python 3.7
* Mon Mar 26 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.6.34-1 * Mon Mar 26 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.6.34-1
- Update to 0.6.34 - Update to 0.6.34