Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libsolv for openSUSE:Factory checked in at 2023-04-14 13:12:08 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libsolv (Old) and /work/SRC/openSUSE:Factory/.libsolv.new.19717 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libsolv" Fri Apr 14 13:12:08 2023 rev:89 rq:1079234 version:0.7.24 Changes: -------- --- /work/SRC/openSUSE:Factory/libsolv/libsolv.changes 2023-01-07 17:15:57.744812944 +0100 +++ /work/SRC/openSUSE:Factory/.libsolv.new.19717/libsolv.changes 2023-04-14 13:12:12.199263687 +0200 @@ -1,0 +2,10 @@ +Thu Apr 13 16:03:04 CEST 2023 - [email protected] + +- handle learnt rules in solver_alternativeinfo() +- support x86_64_v[234] architecture levels +- implement decision sorting for package decisionlists +- add back findutils requires for the libsolv-tools packagse + [bsc#1195633] +- bump version to 0.7.24 + +------------------------------------------------------------------- Old: ---- libsolv-0.7.23.tar.bz2 New: ---- libsolv-0.7.24.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libsolv.spec ++++++ --- /var/tmp/diff_new_pack.Ewp4ai/_old 2023-04-14 13:12:12.775266981 +0200 +++ /var/tmp/diff_new_pack.Ewp4ai/_new 2023-04-14 13:12:12.779267003 +0200 @@ -1,7 +1,7 @@ # # spec file for package libsolv # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -56,7 +56,7 @@ %bcond_with zypp Name: libsolv -Version: 0.7.23 +Version: 0.7.24 Release: 0 Summary: Package dependency solver using a satisfiability algorithm License: BSD-3-Clause @@ -134,7 +134,6 @@ dependencies. %endif - %package devel Summary: Development files for libsolv, a package solver Group: Development/Libraries/C and C++ @@ -154,6 +153,7 @@ Conflicts: satsolver-tools-obsolete Obsoletes: satsolver-tools < 0.18 Provides: satsolver-tools = 0.18 +Requires: findutils %description tools libsolv is a library for solving packages and reading repositories. ++++++ libsolv-0.7.23.tar.bz2 -> libsolv-0.7.24.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/CMakeLists.txt new/libsolv-0.7.24/CMakeLists.txt --- old/libsolv-0.7.23/CMakeLists.txt 2022-07-07 14:18:40.000000000 +0200 +++ new/libsolv-0.7.24/CMakeLists.txt 2023-03-13 16:49:56.000000000 +0100 @@ -1,4 +1,4 @@ -PROJECT (libsolv) +PROJECT (libsolv C) CMAKE_MINIMUM_REQUIRED (VERSION 2.8.5) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/NEWS new/libsolv-0.7.24/NEWS --- old/libsolv-0.7.23/NEWS 2022-12-13 12:54:37.000000000 +0100 +++ new/libsolv-0.7.24/NEWS 2023-04-13 16:42:03.000000000 +0200 @@ -1,6 +1,13 @@ This file contains the major changes between libsolv versions: +Version 0.7.24 +- selected bug fixes: + * handle learnt rules in solver_alternativeinfo() +- new features: + * support x86_64_v[234] architecture levels + * implement decision sorting for package decisionlists + Version 0.7.23 - selected bug fixes: * fix "keep installed" jobs not disabling "best update" rules diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/VERSION.cmake new/libsolv-0.7.24/VERSION.cmake --- old/libsolv-0.7.23/VERSION.cmake 2022-12-13 12:54:37.000000000 +0100 +++ new/libsolv-0.7.24/VERSION.cmake 2023-04-13 16:42:03.000000000 +0200 @@ -49,5 +49,5 @@ SET(LIBSOLV_MAJOR "0") SET(LIBSOLV_MINOR "7") -SET(LIBSOLV_PATCH "23") +SET(LIBSOLV_PATCH "24") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/bindings/solv.i new/libsolv-0.7.24/bindings/solv.i --- old/libsolv-0.7.23/bindings/solv.i 2022-12-21 14:09:43.000000000 +0100 +++ new/libsolv-0.7.24/bindings/solv.i 2023-03-13 16:49:56.000000000 +0100 @@ -1693,10 +1693,14 @@ static const int POOL_FLAG_NOINSTALLEDOBSOLETES = POOL_FLAG_NOINSTALLEDOBSOLETES; static const int POOL_FLAG_HAVEDISTEPOCH = POOL_FLAG_HAVEDISTEPOCH; static const int POOL_FLAG_NOOBSOLETESMULTIVERSION = POOL_FLAG_NOOBSOLETESMULTIVERSION; + static const int POOL_FLAG_ADDFILEPROVIDESFILTERED = POOL_FLAG_ADDFILEPROVIDESFILTERED; + static const int POOL_FLAG_NOWHATPROVIDESAUX = POOL_FLAG_NOWHATPROVIDESAUX; + static const int POOL_FLAG_WHATPROVIDESWITHDISABLED = POOL_FLAG_WHATPROVIDESWITHDISABLED; static const int DISTTYPE_RPM = DISTTYPE_RPM; static const int DISTTYPE_DEB = DISTTYPE_DEB; static const int DISTTYPE_ARCH = DISTTYPE_ARCH; static const int DISTTYPE_HAIKU = DISTTYPE_HAIKU; + static const int DISTTYPE_CONDA = DISTTYPE_CONDA; Pool() { Pool *pool = pool_create(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/doc/gen/libsolv-bindings.3 new/libsolv-0.7.24/doc/gen/libsolv-bindings.3 --- old/libsolv-0.7.23/doc/gen/libsolv-bindings.3 2022-12-14 17:07:05.000000000 +0100 +++ new/libsolv-0.7.24/doc/gen/libsolv-bindings.3 2023-03-13 16:49:56.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: Libsolv-Bindings .\" Author: [see the "Author" section] .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 12/13/2022 +.\" Date: 01/31/2023 .\" Manual: LIBSOLV .\" Source: libsolv .\" Language: English .\" -.TH "LIBSOLV\-BINDINGS" "3" "12/13/2022" "libsolv" "LIBSOLV" +.TH "LIBSOLV\-BINDINGS" "3" "01/31/2023" "libsolv" "LIBSOLV" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -611,6 +611,16 @@ .RS 4 Make the addfileprovides method only add files from the standard locations (i\&.e\&. the \(lqbin\(rq and \(lqetc\(rq directories)\&. This is useful if you have only few packages that use non\-standard file dependencies, but you still want the fast speed that addfileprovides() generates\&. .RE +.PP +\fBPOOL_FLAG_NOWHATPROVIDESAUX\fR +.RS 4 +Disable the creation of the auxillary whatprovides index\&. This saves a bit of memory but also makes the whatprovides lookups a bit slower\&. +.RE +.PP +\fBPOOL_FLAG_WHATPROVIDESWITHDISABLED\fR +.RS 4 +Make the whatprovides index also contain disabled packages\&. This means that you do not need to recreate the index if a package is enabled/disabled, i\&.e\&. the poolâconsidered bitmap is changed\&. +.RE .SS "METHODS" .sp .if n \{\ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/doc/libsolv-bindings.txt new/libsolv-0.7.24/doc/libsolv-bindings.txt --- old/libsolv-0.7.23/doc/libsolv-bindings.txt 2022-12-14 17:07:05.000000000 +0100 +++ new/libsolv-0.7.24/doc/libsolv-bindings.txt 2023-03-13 16:49:56.000000000 +0100 @@ -352,6 +352,15 @@ dependencies, but you still want the fast speed that addfileprovides() generates. +*POOL_FLAG_NOWHATPROVIDESAUX*:: +Disable the creation of the auxillary whatprovides index. This saves +a bit of memory but also makes the whatprovides lookups a bit slower. + +*POOL_FLAG_WHATPROVIDESWITHDISABLED*:: +Make the whatprovides index also contain disabled packages. This +means that you do not need to recreate the index if a package is +enabled/disabled, i.e. the pool->considered bitmap is changed. + === METHODS === void free() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/ext/CMakeLists.txt new/libsolv-0.7.24/ext/CMakeLists.txt --- old/libsolv-0.7.23/ext/CMakeLists.txt 2022-07-07 14:18:40.000000000 +0200 +++ new/libsolv-0.7.24/ext/CMakeLists.txt 2023-03-13 16:49:56.000000000 +0100 @@ -103,6 +103,7 @@ ENDIF (ENABLE_CUDFREPO) IF (ENABLE_HAIKU) + enable_language(CXX) SET (libsolvext_SRCS ${libsolvext_SRCS} repo_haiku.cpp) SET (libsolvext_HEADERS ${libsolvext_HEADERS} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/ext/repo_conda.h new/libsolv-0.7.24/ext/repo_conda.h --- old/libsolv-0.7.23/ext/repo_conda.h 2022-07-07 14:18:40.000000000 +0200 +++ new/libsolv-0.7.24/ext/repo_conda.h 2023-03-13 16:49:56.000000000 +0100 @@ -5,7 +5,24 @@ * for further information */ +#ifndef LIBSOLV_REPO_CONDA_H +#define LIBSOLV_REPO_CONDA_H + +#include <stdio.h> + +#include "repo.h" + +#ifdef __cplusplus +extern "C" { +#endif + #define CONDA_ADD_USE_ONLY_TAR_BZ2 (1 << 8) #define CONDA_ADD_WITH_SIGNATUREDATA (1 << 9) extern int repo_add_conda(Repo *repo, FILE *fp, int flags); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBSOLV_REPO_CONDA_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/package/libsolv.changes new/libsolv-0.7.24/package/libsolv.changes --- old/libsolv-0.7.23/package/libsolv.changes 2022-12-13 12:54:37.000000000 +0100 +++ new/libsolv-0.7.24/package/libsolv.changes 2023-04-13 16:42:03.000000000 +0200 @@ -1,4 +1,14 @@ ------------------------------------------------------------------- +Thu Apr 13 16:03:04 CEST 2023 - [email protected] + +- handle learnt rules in solver_alternativeinfo() +- support x86_64_v[234] architecture levels +- implement decision sorting for package decisionlists +- add back findutils requires for the libsolv-tools packagse + [bsc#1195633] +- bump version to 0.7.24 + +------------------------------------------------------------------- Tue Dec 13 11:47:50 CET 2022 - [email protected] - fix "keep installed" jobs not disabling "best update" rules diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/package/libsolv.spec.in new/libsolv-0.7.24/package/libsolv.spec.in --- old/libsolv-0.7.23/package/libsolv.spec.in 2022-12-20 10:54:33.000000000 +0100 +++ new/libsolv-0.7.24/package/libsolv.spec.in 2023-04-13 16:42:03.000000000 +0200 @@ -153,6 +153,7 @@ Conflicts: satsolver-tools-obsolete Obsoletes: satsolver-tools < 0.18 Provides: satsolver-tools = 0.18 +Requires: findutils %description tools libsolv is a library for solving packages and reading repositories. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/src/conda.h new/libsolv-0.7.24/src/conda.h --- old/libsolv-0.7.23/src/conda.h 2022-07-07 14:18:40.000000000 +0200 +++ new/libsolv-0.7.24/src/conda.h 2023-03-13 16:49:56.000000000 +0100 @@ -13,10 +13,21 @@ #ifndef LIBSOLV_CONDA_H #define LIBSOLV_CONDA_H +#include "pooltypes.h" +#include "solvable.h" + +#ifdef __cplusplus +extern "C" { +#endif + int pool_evrcmp_conda(const Pool *pool, const char *evr1, const char *evr2, int mode); int solvable_conda_matchversion(Solvable *s, const char *version); Id pool_addrelproviders_conda(Pool *pool, Id name, Id evr, Queue *plist); Id pool_conda_matchspec(Pool *pool, const char *name); +#ifdef __cplusplus +} +#endif + #endif /* LIBSOLV_CONDA_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/src/decision.c new/libsolv-0.7.24/src/decision.c --- old/libsolv-0.7.23/src/decision.c 2022-12-15 11:04:29.000000000 +0100 +++ new/libsolv-0.7.24/src/decision.c 2023-03-13 16:49:56.000000000 +0100 @@ -322,6 +322,50 @@ queue_deleten(q, from + 8, 8); } +/* sort a block of SOLVER_REASON_UNIT_RULE decisions */ +static void +sort_unit_decisions(Solver *solv, Queue *q, int start, int end, Map *m) +{ + Pool *pool = solv->pool; + int i, j, k, doing = 1; + if (start + 8 == end) + { + Id truelit = q->elements[start]; + MAPSET(m, truelit >= 0 ? truelit : -truelit); + return; + } + /* alternate between conflicts and installs, starting with conflicts */ + for (i = start; i < end; doing ^= 1) + { + for (j = k = i; j < end; j += 8) + { + Rule *or; + Id p, pp; + Id truelit = q->elements[j]; + if ((doing == 0 && truelit < 0) || (doing != 0 && truelit >= 0)) + continue; + or = solv->rules + q->elements[j + 2]; + FOR_RULELITERALS(p, pp, or) + if (p != truelit && !MAPTST(m, p >= 0 ? p : -p)) + break; + if (p) + continue; /* not unit yet */ + if (j > k) + move_decision(q, k, j); + k += 8; + } + if (k == i) + continue; + if (i + 8 < k) + solv_sort(q->elements + i, (k - i) / 8, 8 * sizeof(Id), decisionsort_cmp, solv); + for (; i < k; i += 8) + { + Id truelit = q->elements[i]; + MAPSET(m, truelit >= 0 ? truelit : -truelit); + } + } +} + static void solver_get_proof(Solver *solv, Id id, int flags, Queue *q) { @@ -329,8 +373,7 @@ Map seen, seent; /* seent: was the literal true or false */ Id rid, truelit; int first = 1; - int why, i, j, k; - int cnt, doing; + int why, i, cnt; queue_empty(q); if ((flags & SOLVER_DECISIONLIST_TYPEMASK) == SOLVER_DECISIONLIST_PROBLEM) @@ -444,42 +487,7 @@ /* sort premise block */ if (i > 8) solv_sort(q->elements, i / 8, 8 * sizeof(Id), decisionsort_cmp, solv); - - /* move rules: - * if a package is installed, move conflicts right after - * if a package is conflicted, move requires right after - */ - doing = 1; - while (i < q->count - 8) - { - doing ^= 1; - for (j = k = i; j < q->count - 8; j += 8) - { - Rule *or; - Id p, pp; - Id truelit = q->elements[j]; - if ((doing == 0 && truelit < 0) || (doing != 0 && truelit >= 0)) - continue; - or = solv->rules + q->elements[j + 2]; - FOR_RULELITERALS(p, pp, or) - if (p != truelit && !MAPTST(&seen, p >= 0 ? p : -p)) - break; - if (p) - continue; /* not unit yet */ - if (j > k) - move_decision(q, k, j); - k += 8; - } - if (k == i) - continue; - if (i + 8 < k) - solv_sort(q->elements + i, (k - i) / 8, 8 * sizeof(Id), decisionsort_cmp, solv); - for (; i < k; i += 8) - { - Id truelit = q->elements[i]; - MAPSET(&seen, truelit >= 0 ? truelit : -truelit); - } - } + sort_unit_decisions(solv, q, i, q->count - 8, &seen); } map_free(&seen); @@ -676,18 +684,29 @@ } } queue_free(&iq); - if ((flags & (SOLVER_DECISIONLIST_SORTED | SOLVER_DECISIONLIST_WITHINFO)) == SOLVER_DECISIONLIST_SORTED) + if ((flags & SOLVER_DECISIONLIST_SORTED) != 0) { - int j; - for (i = j = 0; i < decisionlistq->count; i += 8) + /* reuse dm as "seen" map */ + MAPZERO(dm); + MAPSET(dm, 1); + for (i = 0; i < decisionlistq->count; i += 8) { - decisionlistq->elements[j++] = decisionlistq->elements[i]; - decisionlistq->elements[j++] = decisionlistq->elements[i + 1]; - decisionlistq->elements[j++] = decisionlistq->elements[i + 2]; + if (decisionlistq->elements[i + 1] != SOLVER_REASON_UNIT_RULE) + { + Id p = decisionlistq->elements[i] < 0 ? -decisionlistq->elements[i] : decisionlistq->elements[i]; + MAPSET(dm, p); + } + else + { + int j; + for (j = i + 8; j < decisionlistq->count; j += 8) + if (decisionlistq->elements[j + 1] != SOLVER_REASON_UNIT_RULE) + break; + sort_unit_decisions(solv, decisionlistq, i, j, dm); + } } - queue_truncate(decisionlistq, j); } - else + if ((flags & SOLVER_DECISIONLIST_WITHINFO) != 0) { /* set decisioninfo bits */ for (i = 0; i < decisionlistq->count; i += 8) @@ -695,6 +714,18 @@ if (flags & SOLVER_DECISIONLIST_MERGEDINFO) decisionmerge(solv, decisionlistq); } + else if ((flags & SOLVER_DECISIONLIST_SORTED) != 0) + { + /* strip the info elements we added for sorting */ + int j; + for (i = j = 0; i < decisionlistq->count; i += 8) + { + decisionlistq->elements[j++] = decisionlistq->elements[i]; + decisionlistq->elements[j++] = decisionlistq->elements[i + 1]; + decisionlistq->elements[j++] = decisionlistq->elements[i + 2]; + } + queue_truncate(decisionlistq, j); + } } void @@ -707,6 +738,7 @@ map_init(&dm, pool->nsolvables); MAPSET(&dm, id); getdecisionlist(solv, &dm, flags, decisionlistq); + map_free(&dm); if (!decisionlistq->count) { queue_push(decisionlistq, -id); @@ -718,7 +750,6 @@ queue_push2(decisionlistq, 0, 0); } } - map_free(&dm); } void @@ -738,6 +769,7 @@ MAPSET(&dm, p); } getdecisionlist(solv, &dm, flags, decisionlistq); + map_free(&dm); for (i = 0; i < idq->count; i++) { Id p = idq->elements[i]; @@ -752,7 +784,6 @@ queue_push2(decisionlistq, 0, 0); } } - map_free(&dm); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/src/policy.c new/libsolv-0.7.24/src/policy.c --- old/libsolv-0.7.23/src/policy.c 2022-12-21 14:09:43.000000000 +0100 +++ new/libsolv-0.7.24/src/policy.c 2023-03-13 16:49:56.000000000 +0100 @@ -232,13 +232,13 @@ { Pool *pool = solv->pool; Queue q; - queue_init(&q); Id p; int i, qcnt; #if 0 printf("check_complex_dep %s\n", pool_dep2str(pool, dep)); #endif + queue_init(&q); i = pool_normalize_complex_dep(pool, dep, &q, CPLXDEPS_EXPAND); if (i == 0 || i == 1) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/src/poolarch.c new/libsolv-0.7.24/src/poolarch.c --- old/libsolv-0.7.23/src/poolarch.c 2022-07-07 14:18:40.000000000 +0200 +++ new/libsolv-0.7.24/src/poolarch.c 2023-03-13 16:49:56.000000000 +0100 @@ -22,8 +22,14 @@ static const char *archpolicies[] = { #if defined(FEDORA) || defined(MAGEIA) + "x86_64_v4", "x86_64_v4:x86_64_v3:x86_64_v2:x86_64:athlon:i686:i586:i486:i386", + "x86_64_v3", "x86_64_v3:x86_64_v2:x86_64:athlon:i686:i586:i486:i386", + "x86_64_v2", "x86_64_v2:x86_64:athlon:i686:i586:i486:i386", "x86_64", "x86_64:athlon:i686:i586:i486:i386", #else + "x86_64_v4", "x86_64_v4:x86_64_v3:x86_64_v2:x86_64:i686:i586:i486:i386", + "x86_64_v3", "x86_64_v3:x86_64_v2:x86_64:i686:i586:i486:i386", + "x86_64_v2", "x86_64_v2:x86_64:i686:i586:i486:i386", "x86_64", "x86_64:i686:i586:i486:i386", #endif "i686", "i686:i586:i486:i386", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/src/pooltypes.h new/libsolv-0.7.24/src/pooltypes.h --- old/libsolv-0.7.23/src/pooltypes.h 2022-07-07 14:18:40.000000000 +0200 +++ new/libsolv-0.7.24/src/pooltypes.h 2023-03-13 16:49:56.000000000 +0100 @@ -13,6 +13,10 @@ #ifndef LIBSOLV_POOLTYPES_H #define LIBSOLV_POOLTYPES_H +#ifdef __cplusplus +extern "C" { +#endif + /* format version number for .solv files */ #define SOLV_VERSION_0 0 #define SOLV_VERSION_1 1 @@ -42,4 +46,8 @@ /* offset value, e.g. used to 'point' into the stringspace */ typedef unsigned int Offset; +#ifdef __cplusplus +} +#endif + #endif /* LIBSOLV_POOLTYPES_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/src/rules.c new/libsolv-0.7.24/src/rules.c --- old/libsolv-0.7.23/src/rules.c 2022-12-15 11:04:29.000000000 +0100 +++ new/libsolv-0.7.24/src/rules.c 2023-03-13 16:49:56.000000000 +0100 @@ -183,7 +183,7 @@ binr++; else { - dp = solv->pool->whatprovidesdata + r->d; + dp = pool->whatprovidesdata + r->d; while (*dp++) lits++; } @@ -1935,8 +1935,8 @@ void solver_createdupmaps(Solver *solv) { - Queue *job = &solv->job; Pool *pool = solv->pool; + Queue *job = &solv->job; Repo *installed = solv->installed; Id select, how, what, p, pp; Solvable *s; @@ -2203,12 +2203,12 @@ void solver_addblackrules(Solver *solv) { - int i; - Id how, select, what, p, pp; - Queue *job = &solv->job; Pool *pool = solv->pool; Repo *installed = solv->installed; + Id how, select, what, p, pp; + Queue *job = &solv->job; Map updatemap; + int i; map_init(&updatemap, 0); solv->blackrules = solv->nrules; @@ -3990,7 +3990,7 @@ } /* find names so that we can build groups */ queue_init_clone(&qn, q); - prune_to_best_version(solv->pool, &qn); + prune_to_best_version(pool, &qn); #if 0 { for (i = 0; i < qn.count; i++) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/src/solver.c new/libsolv-0.7.24/src/solver.c --- old/libsolv-0.7.23/src/solver.c 2022-12-16 11:19:02.000000000 +0100 +++ new/libsolv-0.7.24/src/solver.c 2023-03-13 16:49:56.000000000 +0100 @@ -151,11 +151,11 @@ solv->decisionmap[vv] = v > 0 ? 1 : -1; IF_POOLDEBUG (SOLV_DEBUG_PROPAGATE) { - Solvable *s = solv->pool->solvables + vv; + Solvable *s = pool->solvables + vv; if (v < 0) - POOL_DEBUG(SOLV_DEBUG_PROPAGATE, "conflicting %s (assertion)\n", pool_solvable2str(solv->pool, s)); + POOL_DEBUG(SOLV_DEBUG_PROPAGATE, "conflicting %s (assertion)\n", pool_solvable2str(pool, s)); else - POOL_DEBUG(SOLV_DEBUG_PROPAGATE, "installing %s (assertion)\n", pool_solvable2str(solv->pool, s)); + POOL_DEBUG(SOLV_DEBUG_PROPAGATE, "installing %s (assertion)\n", pool_solvable2str(pool, s)); } continue; } @@ -311,11 +311,11 @@ solv->decisionmap[vv] = v > 0 ? 1 : -1; IF_POOLDEBUG (SOLV_DEBUG_PROPAGATE) { - Solvable *s = solv->pool->solvables + vv; + Solvable *s = pool->solvables + vv; if (v < 0) - POOL_DEBUG(SOLV_DEBUG_PROPAGATE, "conflicting %s (weak assertion)\n", pool_solvable2str(solv->pool, s)); + POOL_DEBUG(SOLV_DEBUG_PROPAGATE, "conflicting %s (weak assertion)\n", pool_solvable2str(pool, s)); else - POOL_DEBUG(SOLV_DEBUG_PROPAGATE, "installing %s (weak assertion)\n", pool_solvable2str(solv->pool, s)); + POOL_DEBUG(SOLV_DEBUG_PROPAGATE, "installing %s (weak assertion)\n", pool_solvable2str(pool, s)); } continue; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.23/tools/testsolv.c new/libsolv-0.7.24/tools/testsolv.c --- old/libsolv-0.7.23/tools/testsolv.c 2022-12-12 10:09:28.000000000 +0100 +++ new/libsolv-0.7.24/tools/testsolv.c 2023-03-13 16:49:56.000000000 +0100 @@ -90,7 +90,7 @@ i = testcase_str2solvid(pool, showwhypkgstr); if (i) - solver_get_decisionlist(solv, i, SOLVER_DECISIONLIST_SOLVABLE, &dq); + solver_get_decisionlist(solv, i, SOLVER_DECISIONLIST_SOLVABLE | SOLVER_DECISIONLIST_SORTED, &dq); else { int selflags = SELECTION_NAME | SELECTION_CANON; @@ -99,7 +99,7 @@ if (!iq.count) printf("No package matches %s\n", showwhypkgstr); queue_empty(&dq); - solver_get_decisionlist_multiple(solv, &iq, SOLVER_DECISIONLIST_SOLVABLE, &dq); + solver_get_decisionlist_multiple(solv, &iq, SOLVER_DECISIONLIST_SOLVABLE | SOLVER_DECISIONLIST_SORTED, &dq); } for (ii = 0; ii < dq.count; ii += 3) {
