Compare commits

...

No commits in common. 'c9' and 'i8c' have entirely different histories.
c9 ... i8c

2
.gitignore vendored

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

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

@ -1,20 +1,20 @@
From 49859c1ad32487de6adb65eedf4b81f021e1b0e8 Mon Sep 17 00:00:00 2001 From c56a7db62db6d62b53830f8f1af4d5a70e86d69f 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] Add support for computing hashes using OpenSSL Subject: [PATCH 1/3] 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 | 13 ++++++++++--- src/CMakeLists.txt | 12 +++++++++---
src/chksum.c | 32 ++++++++++++++++++++++++++++++++ src/chksum.c | 32 ++++++++++++++++++++++++++++++++
tools/CMakeLists.txt | 2 +- tools/CMakeLists.txt | 2 +-
4 files changed, 54 insertions(+), 6 deletions(-) 4 files changed, 53 insertions(+), 6 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt
index f899c49..23615bd 100644 index 3541f496..e73dc552 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,23 +59,22 @@ index f899c49..23615bd 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 ca04b39..a0ce267 100644 index bbf30bac..6b5ea42b 100644
--- a/src/CMakeLists.txt --- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt +++ b/src/CMakeLists.txt
@@ -18,9 +18,9 @@ SET (libsolv_SRCS @@ -18,9 +18,8 @@ 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 decision.c) - userinstalled.c filelistfilter.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 + suse.c solver_util.c cleandeps.c userinstalled.c filelistfilter.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,14 +43,21 @@ IF (WIN32) @@ -43,6 +42,10 @@ IF (WIN32)
LIST (APPEND libsolv_SRCS ${WIN32_COMPAT_SOURCES}) LIST (APPEND libsolv_SRCS ${WIN32_COMPAT_SOURCES})
ENDIF (WIN32) ENDIF (WIN32)
@ -86,8 +85,7 @@ index ca04b39..a0ce267 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})
@ -98,7 +96,7 @@ index ca04b39..a0ce267 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 1f8ab47..9189b74 100644 index 1f8ab471..9189b744 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 @@
@ -145,7 +143,7 @@ index 1f8ab47..9189b74 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 f19030e..d477e19 100644 index f19030eb..d477e195 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)
@ -158,5 +156,5 @@ index f19030e..d477e19 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})
-- --
libgit2 1.3.2 2.31.1

@ -0,0 +1,311 @@
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

@ -1,348 +0,0 @@
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

@ -0,0 +1,68 @@
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

@ -1,23 +0,0 @@
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

@ -1,314 +0,0 @@
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

@ -1,4 +1,4 @@
From 9a3f2a2e161c7bcd2da94f6878b2b1470afc09b2 Mon Sep 17 00:00:00 2001 From 91125fe786cb6de2f050430fa51e11c501f17aed 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 2c55198fb476e616ac29a45befe2746be09b7547 Mon Sep 17 00:00:00 2001 From 11fac9a31e892125e19246101b5604322836467d 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

@ -1,4 +1,4 @@
From ab2ca3eb281c7be17ac23d28c3a57f357555ea04 Mon Sep 17 00:00:00 2001 From 78b2d8148bea1dc12b854d9c11691d5f1bc33fd8 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 008d5940..6dee4c64 100644 index 212df322..bbabc55f 100644
--- a/src/rules.c --- a/src/rules.c
+++ b/src/rules.c +++ b/src/rules.c
@@ -1672,6 +1672,16 @@ solver_addinfarchrules(Solver *solv, Map *addedmap) @@ -1668,6 +1668,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 008d5940..6dee4c64 100644
if (!bestscore) if (!bestscore)
continue; /* did not find a score for this group */ continue; /* did not find a score for this group */
@@ -2578,6 +2588,20 @@ jobtodisablelist(Solver *solv, Id how, Id what, Queue *q) @@ -2456,6 +2466,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 008d5940..6dee4c64 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)
@@ -2587,6 +2611,8 @@ jobtodisablelist(Solver *solv, Id how, Id what, Queue *q) @@ -2465,6 +2489,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 008d5940..6dee4c64 100644
2.40.1 2.40.1
From 847f3f1b21f8c396c831564f849981a450c67dbf Mon Sep 17 00:00:00 2001 From dc4c91a71eda2950df11724945ebd5151883a041 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 6dee4c64..54fefcb8 100644 index bbabc55f..c909ae0b 100644
--- a/src/rules.c --- a/src/rules.c
+++ b/src/rules.c +++ b/src/rules.c
@@ -2367,6 +2367,31 @@ reenablerepopriorule(Solver *solv, Id name) @@ -2279,6 +2279,31 @@ solver_addblackrules(Solver *solv)
#define DISABLE_BLACK 4 #define DISABLE_DUP 3
#define DISABLE_REPOPRIO 5 #define DISABLE_BLACK 4
+/* 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 6dee4c64..54fefcb8 100644
static void static void
jobtodisablelist(Solver *solv, Id how, Id what, Queue *q) jobtodisablelist(Solver *solv, Id how, Id what, Queue *q)
{ {
@@ -2612,7 +2637,8 @@ jobtodisablelist(Solver *solv, Id how, Id what, Queue *q) @@ -2490,7 +2515,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)

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

Loading…
Cancel
Save