Hello community, here is the log from the commit of package libsolv for openSUSE:Factory checked in at 2020-01-27 00:21:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libsolv (Old) and /work/SRC/openSUSE:Factory/.libsolv.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libsolv" Mon Jan 27 00:21:27 2020 rev:77 rq:766756 version:0.7.11 Changes: -------- --- /work/SRC/openSUSE:Factory/libsolv/libsolv.changes 2019-12-23 22:39:38.433877490 +0100 +++ /work/SRC/openSUSE:Factory/.libsolv.new.26092/libsolv.changes 2020-01-27 00:21:54.821479413 +0100 @@ -1,0 +2,8 @@ +Wed Jan 22 13:52:48 CET 2020 - [email protected] + +- fixed solv_zchunk decoding error if large chunks are used +- treat retracted pathes as irrelevant +- made add_update_target work with multiversion installs +- bump version to 0.7.11 + +------------------------------------------------------------------- Old: ---- libsolv-0.7.10.tar.bz2 New: ---- libsolv-0.7.11.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libsolv.spec ++++++ --- /var/tmp/diff_new_pack.nVDBaQ/_old 2020-01-27 00:21:55.661480131 +0100 +++ /var/tmp/diff_new_pack.nVDBaQ/_new 2020-01-27 00:21:55.661480131 +0100 @@ -1,7 +1,7 @@ # # spec file for package libsolv # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -52,7 +52,7 @@ %bcond_with zypp Name: libsolv -Version: 0.7.10 +Version: 0.7.11 Release: 0 Summary: Package dependency solver using a satisfiability algorithm License: BSD-3-Clause ++++++ libsolv-0.7.10.tar.bz2 -> libsolv-0.7.11.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.10/NEWS new/libsolv-0.7.11/NEWS --- old/libsolv-0.7.10/NEWS 2019-12-10 14:26:29.000000000 +0100 +++ new/libsolv-0.7.11/NEWS 2020-01-22 13:59:13.000000000 +0100 @@ -2,6 +2,13 @@ This file contains the major changes between libsolv versions: +Version 0.7.11 +- ENABLE_RPMDB_LIBRPM is now the default +- selected bug fixes: + * fixed solv_zchunk decoding error if large chunks are used + * treat retracted pathes as irrelevant + * made add_update_target work with multiversion installs + Version 0.7.10 - new features: * new rpm_stat_database() function diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.10/README new/libsolv-0.7.11/README --- old/libsolv-0.7.10/README 2019-03-30 18:09:14.000000000 +0100 +++ new/libsolv-0.7.11/README 2020-01-21 14:54:09.000000000 +0100 @@ -13,9 +13,9 @@ resolving package dependencies. The sat-solver code has been written to aim for the newest packages, -record the decision tree to provide introspection, and also allows to -provide the user with suggestions on how to deal with unsolvable -problems. It also takes advantage of the repository storage to +record the decision tree to provide introspection, and also provides +the user with suggestions on how to deal with unsolvable +problems. It also takes advantage of repository storage to minimize memory usage. Supported package formats: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.10/VERSION.cmake new/libsolv-0.7.11/VERSION.cmake --- old/libsolv-0.7.10/VERSION.cmake 2019-12-10 14:26:29.000000000 +0100 +++ new/libsolv-0.7.11/VERSION.cmake 2020-01-22 13:59:13.000000000 +0100 @@ -49,5 +49,5 @@ SET(LIBSOLV_MAJOR "0") SET(LIBSOLV_MINOR "7") -SET(LIBSOLV_PATCH "10") +SET(LIBSOLV_PATCH "11") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.10/doc/gen/libsolv-bindings.3 new/libsolv-0.7.11/doc/gen/libsolv-bindings.3 --- old/libsolv-0.7.10/doc/gen/libsolv-bindings.3 2019-07-01 13:14:18.000000000 +0200 +++ new/libsolv-0.7.11/doc/gen/libsolv-bindings.3 2020-01-21 15:04:15.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: Libsolv-Bindings .\" Author: [see the "Author" section] .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 07/01/2019 +.\" Date: 01/21/2020 .\" Manual: LIBSOLV .\" Source: libsolv .\" Language: English .\" -.TH "LIBSOLV\-BINDINGS" "3" "07/01/2019" "libsolv" "LIBSOLV" +.TH "LIBSOLV\-BINDINGS" "3" "01/21/2020" "libsolv" "LIBSOLV" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -866,6 +866,36 @@ .RS 4 .\} .nf +\fBSolvable *whatcontainsdep(Id\fR \fIkeyname\fR\fB, DepId\fR \fIdep\fR\fB, Id\fR \fImarker\fR \fB= \-1)\fR +my \fI@solvables\fR \fB=\fR \fI$pool\fR\fB\->whatcontainsdep(\fR\fI$keyname\fR\fB,\fR \fI$dep\fR\fB)\fR +\fIsolvables\fR \fB=\fR \fIpool\fR\fB\&.whatcontainsdep(\fR\fIkeyname\fR\fB,\fR \fIdep\fR\fB)\fR +\fIsolvables\fR \fB=\fR \fIpool\fR\fB\&.whatcontainsdep(\fR\fIkeyname\fR\fB,\fR \fIdep\fR\fB)\fR +.fi +.if n \{\ +.RE +.\} +.sp +Return all solvables for which keyname contains the dependency\&. +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fBSolvable *whatmatchesdep(Id\fR \fIkeyname\fR\fB, DepId\fR \fIdep\fR\fB, Id\fR \fImarker\fR \fB= \-1)\fR +my \fI@solvables\fR \fB=\fR \fI$pool\fR\fB\->whatmatchesdep(\fR\fI$keyname\fR\fB,\fR \fI$sdep\fR\fB)\fR +\fIsolvables\fR \fB=\fR \fIpool\fR\fB\&.whatmatchesdep(\fR\fIkeyname\fR\fB,\fR \fIdep\fR\fB)\fR +\fIsolvables\fR \fB=\fR \fIpool\fR\fB\&.whatmatchesdep(\fR\fIkeyname\fR\fB,\fR \fIdep\fR\fB)\fR +.fi +.if n \{\ +.RE +.\} +.sp +Return all solvables that have dependencies in keyname that match the dependency\&. +.sp +.if n \{\ +.RS 4 +.\} +.nf \fBSolvable *whatmatchessolvable(Id\fR \fIkeyname\fR\fB, Solvable\fR \fIsolvable\fR\fB, Id\fR \fImarker\fR \fB= \-1)\fR my \fI@solvables\fR \fB=\fR \fI$pool\fR\fB\->whatmatchessolvable(\fR\fI$keyname\fR\fB,\fR \fI$solvable\fR\fB)\fR \fIsolvables\fR \fB=\fR \fIpool\fR\fB\&.whatmatchessolvable(\fR\fIkeyname\fR\fB,\fR \fIsolvable\fR\fB)\fR @@ -1491,7 +1521,7 @@ .\} .sp The id of this dependency\&. -.SH "METHODS" +.SS "METHODS" .sp .if n \{\ .RS 4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.10/doc/gen/libsolv-pool.3 new/libsolv-0.7.11/doc/gen/libsolv-pool.3 --- old/libsolv-0.7.10/doc/gen/libsolv-pool.3 2018-10-22 14:48:52.000000000 +0200 +++ new/libsolv-0.7.11/doc/gen/libsolv-pool.3 2020-01-21 15:04:15.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: Libsolv-Pool .\" Author: [see the "Author" section] .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 10/22/2018 +.\" Date: 01/21/2020 .\" Manual: LIBSOLV .\" Source: libsolv .\" Language: English .\" -.TH "LIBSOLV\-POOL" "3" "10/22/2018" "libsolv" "LIBSOLV" +.TH "LIBSOLV\-POOL" "3" "01/21/2020" "libsolv" "LIBSOLV" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -1287,7 +1287,7 @@ .sp There can be multiple equivalence classes, the set of allowed vendor changes for an installed package is calculated by building the union of all of the equivalence classes the vendor of the installed package is part of\&. .sp -You can turn off the architecture replacement checks with the Solver\(cqs SOLVER_FLAG_ALLOW_VENDORCHANGE flag\&. +You can turn off the vendor replacement checks with the Solver\(cqs SOLVER_FLAG_ALLOW_VENDORCHANGE flag\&. .SH "BOOLEAN DEPENDENCIES" .sp Boolean Dependencies allow to build complex expressions from simple dependencies\&. Note that depending on the package manager only a subset of those may be useful\&. For example, debian currently only allows an "OR" expression\&. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.10/doc/libsolv-pool.txt new/libsolv-0.7.11/doc/libsolv-pool.txt --- old/libsolv-0.7.10/doc/libsolv-pool.txt 2018-10-01 11:09:18.000000000 +0200 +++ new/libsolv-0.7.11/doc/libsolv-pool.txt 2020-01-21 14:54:09.000000000 +0100 @@ -844,7 +844,7 @@ of all of the equivalence classes the vendor of the installed package is part of. -You can turn off the architecture replacement checks with the Solver's +You can turn off the vendor replacement checks with the Solver's SOLVER_FLAG_ALLOW_VENDORCHANGE flag. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.10/ext/repo_rpmdb_bdb.h new/libsolv-0.7.11/ext/repo_rpmdb_bdb.h --- old/libsolv-0.7.10/ext/repo_rpmdb_bdb.h 2019-12-19 16:34:10.000000000 +0100 +++ new/libsolv-0.7.11/ext/repo_rpmdb_bdb.h 2020-01-22 13:04:17.000000000 +0100 @@ -47,7 +47,7 @@ int dbenvopened; /* database environment opened */ int pkgdbopened; /* package database openend */ - int is_ostree; /* read-only db that lives in /usr/share/rpm */ + const char *dbpath; /* path to the database */ DB_ENV *dbenv; /* database environment */ DB *db; /* packages database */ @@ -70,17 +70,20 @@ } static void -detect_ostree(struct rpmdbstate *state) +detect_dbpath(struct rpmdbstate *state) { - state->is_ostree = access_rootdir(state, "/var/lib/rpm", W_OK) == -1 && - access_rootdir(state, "/usr/share/rpm/Packages", R_OK) == 0 ? 1 : -1; + state->dbpath = access_rootdir(state, "/var/lib/rpm", W_OK) == -1 + && access_rootdir(state, "/usr/share/rpm/Packages", R_OK) == 0 + ? "/usr/share/rpm" : "/var/lib/rpm"; } static int stat_database_name(struct rpmdbstate *state, char *dbname, struct stat *statbuf, int seterror) { char *dbpath; - dbpath = solv_dupjoin(state->rootdir, state->is_ostree > 0 ? "/usr/share/rpm/" : "/var/lib/rpm/", dbname); + if (!state->dbpath) + detect_dbpath(state); + dbpath = solv_dupjoin(state->rootdir, state->dbpath, dbname); if (stat(dbpath, statbuf)) { if (seterror) @@ -95,9 +98,7 @@ static int stat_database(struct rpmdbstate *state, struct stat *statbuf) { - if (!state->is_ostree) - detect_ostree(state); - return stat_database_name(state, "Packages", statbuf, 1); + return stat_database_name(state, "/Packages", statbuf, 1); } @@ -171,7 +172,6 @@ static int opendbenv(struct rpmdbstate *state) { - const char *rootdir = state->rootdir; char *dbpath; DB_ENV *dbenv = 0; int r; @@ -181,16 +181,16 @@ #if (defined(FEDORA) || defined(MAGEIA)) && (DB_VERSION_MAJOR >= 5 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 5)) dbenv->set_thread_count(dbenv, 8); #endif - dbpath = solv_dupjoin(rootdir, "/var/lib/rpm", 0); - state->is_ostree = -1; + state->dbpath = "/var/lib/rpm"; + dbpath = solv_dupjoin(state->rootdir, state->dbpath, 0); if (access(dbpath, W_OK) == -1) { - free(dbpath); - dbpath = solv_dupjoin(rootdir, "/usr/share/rpm/Packages", 0); - if (access(dbpath, R_OK) == 0) - state->is_ostree = 1; - free(dbpath); - dbpath = solv_dupjoin(rootdir, state->is_ostree > 0 ? "/usr/share/rpm" : "/var/lib/rpm", 0); + if (access_rootdir(state, "/usr/share/rpm/Packages", R_OK) == 0) + { + state->dbpath = "/usr/share/rpm"; + free(dbpath); + dbpath = solv_dupjoin(state->rootdir, state->dbpath, 0); + } r = dbenv->open(dbenv, dbpath, DB_CREATE|DB_PRIVATE|DB_INIT_MPOOL, 0); } else @@ -426,7 +426,7 @@ DBT dbkey; DBT dbdata; - if (stat_database_name(state, "Name", &statbuf, 0)) + if (stat_database_name(state, "/Name", &statbuf, 0)) return 0; memset(&dbkey, 0, sizeof(dbkey)); memset(&dbdata, 0, sizeof(dbdata)); @@ -502,7 +502,9 @@ int fd, l; char buf[4096]; - dbpath = solv_dupjoin(state->rootdir, state->is_ostree > 0 ? "/usr/share/rpm/" : "/var/lib/rpm/", "Name"); + if (!state->dbpath) + detect_dbpath(state); + dbpath = solv_dupjoin(state->rootdir, state->dbpath, "/Name"); if ((fd = open(dbpath, O_RDONLY)) < 0) return -1; while ((l = read(fd, buf, sizeof(buf))) > 0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.10/ext/repo_rpmdb_librpm.h new/libsolv-0.7.11/ext/repo_rpmdb_librpm.h --- old/libsolv-0.7.10/ext/repo_rpmdb_librpm.h 2019-12-19 16:34:10.000000000 +0100 +++ new/libsolv-0.7.11/ext/repo_rpmdb_librpm.h 2020-01-22 13:04:17.000000000 +0100 @@ -23,7 +23,7 @@ unsigned int rpmheadsize; int dbenvopened; /* database environment opened */ - int is_ostree; /* read-only db that lives in /usr/share/rpm */ + const char *dbpath; /* path to the database */ rpmts ts; rpmdbMatchIterator mi; /* iterator over packages database */ @@ -43,21 +43,22 @@ } static void -detect_ostree(struct rpmdbstate *state) +detect_dbpath(struct rpmdbstate *state) { - state->is_ostree = access_rootdir(state, "/var/lib/rpm", W_OK) == -1 && - access_rootdir(state, "/usr/share/rpm/Packages", R_OK) == 0 ? 1 : -1; + state->dbpath = access_rootdir(state, "/var/lib/rpm", W_OK) == -1 + && access_rootdir(state, "/usr/share/rpm/Packages", R_OK) == 0 + ? "/usr/share/rpm" : "/var/lib/rpm"; } static int stat_database(struct rpmdbstate *state, struct stat *statbuf) { static const char *dbname[] = { - "Packages", - "Packages.db", - "rpmdb.sqlite", - "data.mdb", - "Packages", /* for error reporting */ + "/Packages", + "/Packages.db", + "/rpmdb.sqlite", + "/data.mdb", + "/Packages", /* for error reporting */ 0, }; int i; @@ -66,11 +67,11 @@ if (state->dbenvopened == 1) return rpmdbFStat(rpmtsGetRdb(state->ts), statbuf); #endif - if (!state->is_ostree) - detect_ostree(state); + if (!state->dbpath) + detect_dbpath(state); for (i = 0; ; i++) { - char *dbpath = solv_dupjoin(state->rootdir, state->is_ostree > 0 ? "/usr/share/rpm/" : "/var/lib/rpm/", dbname[i]); + char *dbpath = solv_dupjoin(state->rootdir, state->dbpath, dbname[i]); if (!stat(dbpath, statbuf)) { free(dbpath); @@ -92,11 +93,12 @@ static int opendbenv(struct rpmdbstate *state) { - const char *rootdir = state->rootdir; rpmts ts; char *dbpath; - detect_ostree(state); - dbpath = solv_dupjoin("_dbpath ", rootdir, state->is_ostree > 0 ? "/usr/share/rpm" : "/var/lib/rpm"); + + if (!state->dbpath) + detect_dbpath(state); + dbpath = solv_dupjoin("_dbpath ", state->rootdir, state->dbpath); rpmDefineMacro(NULL, dbpath, 0); solv_free(dbpath); ts = rpmtsCreate(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.10/package/libsolv.changes new/libsolv-0.7.11/package/libsolv.changes --- old/libsolv-0.7.10/package/libsolv.changes 2019-12-19 16:34:10.000000000 +0100 +++ new/libsolv-0.7.11/package/libsolv.changes 2020-01-22 13:59:13.000000000 +0100 @@ -1,4 +1,12 @@ ------------------------------------------------------------------- +Wed Jan 22 13:52:48 CET 2020 - [email protected] + +- fixed solv_zchunk decoding error if large chunks are used +- treat retracted pathes as irrelevant +- made add_update_target work with multiversion installs +- bump version to 0.7.11 + +------------------------------------------------------------------- Thu Dec 19 16:29:52 CET 2019 - [email protected] - fix solv_zchunk decoding error if large chunks are used diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.10/src/rules.c new/libsolv-0.7.11/src/rules.c --- old/libsolv-0.7.10/src/rules.c 2019-11-15 13:04:10.000000000 +0100 +++ new/libsolv-0.7.11/src/rules.c 2020-01-22 13:04:17.000000000 +0100 @@ -1656,13 +1656,16 @@ } } if (first) - continue; + continue; /* not the first in the group */ + + if (!bestscore) + continue; /* did not find a score for this group */ /* speed up common case where installed package already has best arch */ if (allowedarchs.count == 1 && bests && allowedarchs.elements[0] == bests->arch) allowedarchs.count--; /* installed arch is best */ - if (allowedarchs.count && pool->implicitobsoleteusescolors && installed && bestscore) + if (allowedarchs.count && pool->implicitobsoleteusescolors && installed) { /* need an extra pass for lockstep checking: we only allow to keep an inferior arch * if the corresponding installed package is not lock-stepped */ @@ -1707,7 +1710,7 @@ if (ps->name != s->name || !MAPTST(addedmap, p)) continue; a = pool_arch2score(pool, ps->arch); - if (a != 1 && bestscore && ((a ^ bestscore) & 0xffff0000) != 0) + if (a != 1 && ((a ^ bestscore) & 0xffff0000) != 0) { if (installed && ps->repo == installed) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.10/src/solver.c new/libsolv-0.7.11/src/solver.c --- old/libsolv-0.7.10/src/solver.c 2019-11-08 14:39:59.000000000 +0100 +++ new/libsolv-0.7.11/src/solver.c 2020-01-21 15:24:12.000000000 +0100 @@ -3106,6 +3106,12 @@ if (s->repo == installed) { queue_push2(solv->update_targets, p, p); + FOR_PROVIDES(pi, pip, s->name) + { + Solvable *si = pool->solvables + pi; + if (si->repo == installed && si->name == s->name && pi != p) + queue_push2(solv->update_targets, pi, p); + } return; } identicalp = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.10/src/solvversion.h.in new/libsolv-0.7.11/src/solvversion.h.in --- old/libsolv-0.7.10/src/solvversion.h.in 2019-03-21 15:32:17.000000000 +0100 +++ new/libsolv-0.7.11/src/solvversion.h.in 2020-01-21 14:24:12.000000000 +0100 @@ -45,6 +45,7 @@ #cmakedefine LIBSOLVEXT_FEATURE_LZMA_COMPRESSION #cmakedefine LIBSOLVEXT_FEATURE_BZIP2_COMPRESSION #cmakedefine LIBSOLVEXT_FEATURE_ZSTD_COMPRESSION +#cmakedefine LIBSOLVEXT_FEATURE_ZCHUNK_COMPRESSION /* see tools/common_write.c for toolversion history */ #define LIBSOLV_TOOLVERSION "1.1" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.7.10/src/suse.c new/libsolv-0.7.11/src/suse.c --- old/libsolv-0.7.10/src/suse.c 2018-10-01 11:09:18.000000000 +0200 +++ new/libsolv-0.7.11/src/suse.c 2020-01-21 12:04:12.000000000 +0100 @@ -376,7 +376,11 @@ Pool *pool = s->repo->pool; Id con, *conp; int hadpatchpackage = 0; + const char *status; + status = solvable_lookup_str(s, UPDATE_STATUS); + if (status && !strcmp(status, "retracted")) + return 1; if (!s->conflicts) return 0; conp = s->repo->idarraydata + s->conflicts;
