From 65707fea930b76901aeb570b91f1ddaa862995be Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Oct 19 2019 08:21:52 +0000 Subject: Update to 0.7.7 Signed-off-by: Igor Gnatenko --- diff --git a/.gitignore b/.gitignore index 7db5e21..c3b3abc 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,4 @@ /libsolv-0.7.4.tar.gz /libsolv-0.7.5.tar.gz /libsolv-0.7.6.tar.gz +/libsolv-0.7.7.tar.gz diff --git a/0001-Add-POOL_FLAG_WHATPROVIDESWITHDISABLED-pool-flag.patch b/0001-Add-POOL_FLAG_WHATPROVIDESWITHDISABLED-pool-flag.patch deleted file mode 100644 index 98b348a..0000000 --- a/0001-Add-POOL_FLAG_WHATPROVIDESWITHDISABLED-pool-flag.patch +++ /dev/null @@ -1,224 +0,0 @@ -From bfdc347fdfc350a9b290543fac905cb21f9a71a8 Mon Sep 17 00:00:00 2001 -From: Michael Schroeder -Date: Mon, 30 Sep 2019 14:35:57 +0200 -Subject: [PATCH] Add POOL_FLAG_WHATPROVIDESWITHDISABLED pool flag - -This makes libsolv keep disabled packages (i.e. packages -not in the considered map) in the whatprovides hash. - -It is useful if you want to modify the considered map after -the whatprovides hash is generated. - -Note that using the flag will change the reported problems -as disabled packages are now seen by the solver but -considered uninstallable. ---- - ext/testcase.c | 1 + - src/policy.c | 2 ++ - src/pool.c | 16 +++++++++------- - src/pool.h | 2 ++ - src/repo.h | 20 ++++++++++++++++++++ - src/rules.c | 22 ++++++++++++++++++++++ - 6 files changed, 56 insertions(+), 7 deletions(-) - -diff --git a/ext/testcase.c b/ext/testcase.c -index fcebcfa..bd0643a 100644 ---- a/ext/testcase.c -+++ b/ext/testcase.c -@@ -152,6 +152,7 @@ static struct poolflags2str { - { POOL_FLAG_NOOBSOLETESMULTIVERSION, "noobsoletesmultiversion", 0 }, - { POOL_FLAG_ADDFILEPROVIDESFILTERED, "addfileprovidesfiltered", 0 }, - { POOL_FLAG_NOWHATPROVIDESAUX, "nowhatprovidesaux", 0 }, -+ { POOL_FLAG_WHATPROVIDESWITHDISABLED, "whatprovideswithdisabled", 0 }, - { 0, 0, 0 } - }; - -diff --git a/src/policy.c b/src/policy.c -index 823a008..10a2c4d 100644 ---- a/src/policy.c -+++ b/src/policy.c -@@ -1579,6 +1579,8 @@ policy_findupdatepackages(Solver *solv, Solvable *s, Queue *qs, int allow_all) - continue; - - ps = pool->solvables + p; -+ if (pool->considered && pool->whatprovideswithdisabled && ps->repo != pool->installed && pool_disabled_solvable(pool, ps)) -+ continue; - if (s->name == ps->name) /* name match */ - { - if (pool->implicitobsoleteusescolors && !pool_colormatch(pool, s, ps)) -diff --git a/src/pool.c b/src/pool.c -index 4b63727..d2053b9 100644 ---- a/src/pool.c -+++ b/src/pool.c -@@ -202,6 +202,8 @@ pool_get_flag(Pool *pool, int flag) - return pool->addfileprovidesfiltered; - case POOL_FLAG_NOWHATPROVIDESAUX: - return pool->nowhatprovidesaux; -+ case POOL_FLAG_WHATPROVIDESWITHDISABLED: -+ return pool->whatprovideswithdisabled; - default: - break; - } -@@ -247,6 +249,9 @@ pool_set_flag(Pool *pool, int flag, int value) - case POOL_FLAG_NOWHATPROVIDESAUX: - pool->nowhatprovidesaux = value; - break; -+ case POOL_FLAG_WHATPROVIDESWITHDISABLED: -+ pool->whatprovideswithdisabled = value; -+ break; - default: - break; - } -@@ -473,9 +478,7 @@ pool_createwhatprovides(Pool *pool) - s = pool->solvables + i; - if (!s->provides || !s->repo || s->repo->disabled) - continue; -- /* we always need the installed solvable in the whatprovides data, -- otherwise obsoletes/conflicts on them won't work */ -- if (s->repo != installed && !pool_installable(pool, s)) -+ if (!pool_installable_whatprovides(pool, s)) - continue; - pp = s->repo->idarraydata + s->provides; - while ((id = *pp++) != 0) -@@ -534,9 +537,8 @@ pool_createwhatprovides(Pool *pool) - s = pool->solvables + i; - if (!s->provides || !s->repo || s->repo->disabled) - continue; -- if (s->repo != installed && !pool_installable(pool, s)) -+ if (!pool_installable_whatprovides(pool, s)) - continue; -- - /* for all provides of this solvable */ - pp = s->repo->idarraydata + s->provides; - while ((id = *pp++) != 0) -@@ -963,7 +965,7 @@ pool_addstdproviders(Pool *pool, Id d) - * and those should not use filelist entries */ - if (s->repo->disabled) - continue; -- if (s->repo != pool->installed && !pool_installable(pool, s)) -+ if (!pool_installable_whatprovides(pool, s)) - continue; - queue_push(&q, di.solvid); - } -@@ -1243,7 +1245,7 @@ pool_addrelproviders(Pool *pool, Id d) - FOR_POOL_SOLVABLES(p) - { - Solvable *s = pool->solvables + p; -- if (s->repo != pool->installed && !pool_installable(pool, s)) -+ if (!pool_installable_whatprovides(pool, s)) - continue; - if (s->arch == evr) - queue_push(&plist, p); -diff --git a/src/pool.h b/src/pool.h -index c90c29a..aa173ea 100644 ---- a/src/pool.h -+++ b/src/pool.h -@@ -166,6 +166,7 @@ struct s_Pool { - Id *whatprovidesauxdata; - Offset whatprovidesauxdataoff; - -+ int whatprovideswithdisabled; - #endif - }; - -@@ -204,6 +205,7 @@ struct s_Pool { - #define POOL_FLAG_ADDFILEPROVIDESFILTERED 9 - #define POOL_FLAG_IMPLICITOBSOLETEUSESCOLORS 10 - #define POOL_FLAG_NOWHATPROVIDESAUX 11 -+#define POOL_FLAG_WHATPROVIDESWITHDISABLED 12 - - /* ----------------------------------------------- */ - -diff --git a/src/repo.h b/src/repo.h -index 58704f1..9a5e981 100644 ---- a/src/repo.h -+++ b/src/repo.h -@@ -123,6 +123,26 @@ static inline int pool_installable(const Pool *pool, Solvable *s) - return 1; - } - -+#ifdef LIBSOLV_INTERNAL -+static inline int pool_installable_whatprovides(const Pool *pool, Solvable *s) -+{ -+ /* we always need the installed solvable in the whatprovides data, -+ otherwise obsoletes/conflicts on them won't work */ -+ if (s->repo != pool->installed) -+ { -+ if (s->arch == ARCH_SRC || s->arch == ARCH_NOSRC || pool_badarch_solvable(pool, s)) -+ return 0; -+ if (pool->considered && !pool->whatprovideswithdisabled) -+ { -+ Id id = s - pool->solvables; -+ if (!MAPTST(pool->considered, id)) -+ return 0; -+ } -+ } -+ return 1; -+} -+#endif -+ - /* not in solvable.h because we need the repo definition */ - static inline Solvable *solvable_free(Solvable *s, int reuseids) - { -diff --git a/src/rules.c b/src/rules.c -index 3aef6ee..4075b9d 100644 ---- a/src/rules.c -+++ b/src/rules.c -@@ -3323,6 +3323,21 @@ prune_best_update(Solver *solv, Id p, Queue *q) - policy_filter_unwanted(solv, q, POLICY_MODE_RECOMMEND); - } - -+static void -+prune_disabled(Pool *pool, Queue *q) -+{ -+ int i, j; -+ for (i = j = 0; i < q->count; i++) -+ { -+ Id p = q->elements[i]; -+ Solvable *s = pool->solvables + p; -+ if (s->repo && s->repo != pool->installed && !MAPTST(pool->considered, p)) -+ continue; -+ q->elements[j++] = p; -+ } -+ queue_truncate(q, j); -+} -+ - void - solver_addbestrules(Solver *solv, int havebestinstalljobs, int haslockjob) - { -@@ -3377,15 +3392,19 @@ solver_addbestrules(Solver *solv, int havebestinstalljobs, int haslockjob) - else if (p2 < 0) - queue_push(&q2, p2); - } -+ if (pool->considered && pool->whatprovideswithdisabled) -+ prune_disabled(pool, &q); - if (!q.count) - continue; /* orphaned */ - /* select best packages, just look at prio and version */ - oldcnt = q.count; - policy_filter_unwanted(solv, &q, POLICY_MODE_RECOMMEND); - if (q.count == oldcnt) - continue; /* nothing filtered */ - if (lockedmap) - { -+ queue_insertn(&q, 0, q2.count, q2.elements); -+ queue_empty(&q2); - FOR_RULELITERALS(p2, pp2, r) - { - if (p2 <= 0) -@@ -3399,9 +3418,12 @@ solver_addbestrules(Solver *solv, int havebestinstalljobs, int haslockjob) - continue; - queue_push(&q2, p2); - } -+ if (pool->considered && pool->whatprovideswithdisabled) -+ prune_disabled(pool, &q2); - policy_filter_unwanted(solv, &q2, POLICY_MODE_RECOMMEND); - for (k = 0; k < q2.count; k++) - queue_pushunique(&q, q2.elements[k]); -+ queue_empty(&q2); - } - if (q2.count) - queue_insertn(&q, 0, q2.count, q2.elements); --- -libgit2 0.28.2 - diff --git a/0002-Fix-handling-of-disabled-installed-packages-in-distupgrade.patch b/0002-Fix-handling-of-disabled-installed-packages-in-distupgrade.patch deleted file mode 100644 index a9dd427..0000000 --- a/0002-Fix-handling-of-disabled-installed-packages-in-distupgrade.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 954862319e32e97b20afd0f598cd461ece320e4f Mon Sep 17 00:00:00 2001 -From: Michael Schroeder -Date: Tue, 8 Oct 2019 13:40:45 +0200 -Subject: [PATCH] Fix handling of disabled installed packages in distupgrade - -Such packages must not be touched, i.e. they must stay installed. ---- - src/pool.c | 1 - - src/rules.c | 10 ++++++++++ - 2 files changed, 10 insertions(+), 1 deletion(-) - -diff --git a/src/pool.c b/src/pool.c -index d2053b9..76636a7 100644 ---- a/src/pool.c -+++ b/src/pool.c -@@ -455,7 +455,6 @@ pool_createwhatprovides(Pool *pool) - Offset *whatprovides; - Id *whatprovidesdata, *dp, *whatprovidesauxdata; - Offset *whatprovidesaux; -- Repo *installed = pool->installed; - unsigned int now; - - now = solv_timems(0); -diff --git a/src/rules.c b/src/rules.c -index 4075b9d..57895c0 100644 ---- a/src/rules.c -+++ b/src/rules.c -@@ -1373,6 +1373,14 @@ solver_addupdaterule(Solver *solv, Solvable *s) - int dupinvolved = 0; - - p = s - pool->solvables; -+ -+ if (pool->considered && pool_disabled_solvable(pool, s)) -+ { -+ /* disabled installed solvables must stay installed */ -+ solver_addrule(solv, p, 0, 0); -+ return; -+ } -+ - /* Orphan detection. We cheat by looking at the feature rule, which - * we already calculated */ - r = solv->rules + solv->featurerules + (p - solv->installed->start); -@@ -2003,6 +2011,8 @@ solver_addduprules(Solver *solv, Map *addedmap) - continue; - if (installed && ps->repo == installed) - { -+ if (pool->considered && pool_disabled_solvable(pool, ps)) -+ continue; /* always keep disabled installed packages */ - if (!MAPTST(&solv->dupmap, p)) - { - Id ip, ipp; --- -libgit2 0.28.2 - diff --git a/0003-Add-testcases-for-POOL_FLAG_WHATPROVIDESWITHDISABLED.patch b/0003-Add-testcases-for-POOL_FLAG_WHATPROVIDESWITHDISABLED.patch deleted file mode 100644 index 7c25cda..0000000 --- a/0003-Add-testcases-for-POOL_FLAG_WHATPROVIDESWITHDISABLED.patch +++ /dev/null @@ -1,110 +0,0 @@ -From 7477a28ca57c9fd2df73e24a36d2a0f0734662ef Mon Sep 17 00:00:00 2001 -From: Michael Schroeder -Date: Tue, 8 Oct 2019 13:41:45 +0200 -Subject: [PATCH] Add testcases for POOL_FLAG_WHATPROVIDESWITHDISABLED - ---- - test/testcases/whatprovideswithdisabled/dup.t | 14 ++++++++++++++ - test/testcases/whatprovideswithdisabled/dup2.t | 14 ++++++++++++++ - test/testcases/whatprovideswithdisabled/forcebest_in.t | 19 +++++++++++++++++++ - test/testcases/whatprovideswithdisabled/forcebest_up.t | 20 ++++++++++++++++++++ - 4 files changed, 67 insertions(+) - create mode 100644 test/testcases/whatprovideswithdisabled/dup.t - create mode 100644 test/testcases/whatprovideswithdisabled/dup2.t - create mode 100644 test/testcases/whatprovideswithdisabled/forcebest_in.t - create mode 100644 test/testcases/whatprovideswithdisabled/forcebest_up.t - -diff --git a/test/testcases/whatprovideswithdisabled/dup.t b/test/testcases/whatprovideswithdisabled/dup.t -new file mode 100644 -index 0000000..825a0c4 ---- /dev/null -+++ b/test/testcases/whatprovideswithdisabled/dup.t -@@ -0,0 +1,14 @@ -+repo system 0 testtags -+#>=Pkg: A 1 1 noarch -+#>=Vnd: foo -+repo available 0 testtags -+#>=Pkg: A 2 1 noarch -+#>=Vnd: foo -+system i686 rpm system -+poolflags whatprovideswithdisabled -+ -+disable pkg A-2-1.noarch@available -+ -+job distupgrade all packages -+result transaction,problems -+ -diff --git a/test/testcases/whatprovideswithdisabled/dup2.t b/test/testcases/whatprovideswithdisabled/dup2.t -new file mode 100644 -index 0000000..40fe69e ---- /dev/null -+++ b/test/testcases/whatprovideswithdisabled/dup2.t -@@ -0,0 +1,14 @@ -+repo system 0 testtags -+#>=Pkg: A 1 1 noarch -+#>=Vnd: foo -+repo available 0 testtags -+#>=Pkg: A 2 1 noarch -+#>=Vnd: foo -+system i686 rpm system -+poolflags whatprovideswithdisabled -+ -+disable pkg A-1-1.noarch@system -+ -+job distupgrade all packages -+result transaction,problems -+ -diff --git a/test/testcases/whatprovideswithdisabled/forcebest_in.t b/test/testcases/whatprovideswithdisabled/forcebest_in.t -new file mode 100644 -index 0000000..da5a440 ---- /dev/null -+++ b/test/testcases/whatprovideswithdisabled/forcebest_in.t -@@ -0,0 +1,19 @@ -+repo system 0 testtags -+#>=Pkg: D 1 1 noarch -+#>=Vnd: foo -+#>=Con: A = 3-1 -+repo available 0 testtags -+#>=Pkg: A 2 1 noarch -+#>=Vnd: foo -+#>=Pkg: A 3 1 noarch -+#>=Vnd: bar -+system i686 rpm system -+ -+poolflags whatprovideswithdisabled -+disable pkg A-3-1.noarch@available -+ -+job install name A [forcebest] -+result transaction,problems -+#>install A-2-1.noarch@available -+ -+ -diff --git a/test/testcases/whatprovideswithdisabled/forcebest_up.t b/test/testcases/whatprovideswithdisabled/forcebest_up.t -new file mode 100644 -index 0000000..f6f5379 ---- /dev/null -+++ b/test/testcases/whatprovideswithdisabled/forcebest_up.t -@@ -0,0 +1,20 @@ -+repo system 0 testtags -+#>=Pkg: A 1 1 noarch -+#>=Vnd: foo -+#>=Pkg: D 1 1 noarch -+#>=Vnd: foo -+#>=Con: A = 3-1 -+repo available 0 testtags -+#>=Pkg: A 2 1 noarch -+#>=Vnd: foo -+#>=Pkg: A 3 1 noarch -+#>=Vnd: bar -+system i686 rpm system -+ -+poolflags whatprovideswithdisabled -+disable pkg A-3-1.noarch@available -+ -+job install name A [forcebest] -+result transaction,problems -+#>upgrade A-1-1.noarch@system A-2-1.noarch@available -+ --- -libgit2 0.28.2 - diff --git a/libsolv.spec b/libsolv.spec index 8c0a2f2..0829e3f 100644 --- a/libsolv.spec +++ b/libsolv.spec @@ -20,16 +20,13 @@ %bcond_without zstd Name: lib%{libname} -Version: 0.7.6 -Release: 3%{?dist} +Version: 0.7.7 +Release: 1%{?dist} Summary: Package dependency solver License: BSD URL: https://github.com/openSUSE/libsolv Source: %{url}/archive/%{version}/%{name}-%{version}.tar.gz -Patch0001: 0001-Add-POOL_FLAG_WHATPROVIDESWITHDISABLED-pool-flag.patch -Patch0002: 0002-Fix-handling-of-disabled-installed-packages-in-distupgrade.patch -Patch0003: 0003-Add-testcases-for-POOL_FLAG_WHATPROVIDESWITHDISABLED.patch BuildRequires: cmake BuildRequires: gcc-c++ @@ -279,6 +276,9 @@ Python 3 version. %endif %changelog +* Sat Oct 19 2019 Igor Gnatenko - 0.7.7-1 +- Update to 0.7.7 + * Mon Oct 14 2019 Jaroslav Mracek - 0.7.6-3 - Backport support of POOL_FLAG_WHATPROVIDESWITHDISABLED pool flag diff --git a/sources b/sources index 5b93ada..574974a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (libsolv-0.7.6.tar.gz) = f275545cab73fa7fcf3a4547a0a0ebd21184efccfee176e9f311023d0bf4f979efc1d2882bf6b328fd42493ca724dd8d2ff2d5fb10d1f648723910a50019eadd +SHA512 (libsolv-0.7.7.tar.gz) = d357788feda66929baa8de0e6d0312905fdf2e9abefedb4d659bfc433aa7818d1e9fcd89586d38269e0182c817a2a47fb317dea35997ede0640d7ae4f3aad4cc