diff --git a/.gitignore b/.gitignore index 5418234..ef3cf9b 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ /2db517f87a8c0364d28c0fa2590ba034e866a4b8.tar.gz /libsolv-1f9abfb.tar.gz /libsolv-0.6.12.tar.gz +/libsolv-0.6.14.tar.gz diff --git a/0001-Move-allowuninstall-map-creation.patch b/0001-Move-allowuninstall-map-creation.patch new file mode 100644 index 0000000..1b1d37f --- /dev/null +++ b/0001-Move-allowuninstall-map-creation.patch @@ -0,0 +1,64 @@ +From 80ddee19786b7b96d28cde1b972721dc631ee055 Mon Sep 17 00:00:00 2001 +From: Michael Schroeder +Date: Mon, 12 Oct 2015 13:43:05 +0200 +Subject: [PATCH 1/4] Move allowuninstall map creation + +We need to test for them when we have dup jobs +--- + src/solver.c | 26 ++++++++++++++------------ + 1 file changed, 14 insertions(+), 12 deletions(-) + +diff --git a/src/solver.c b/src/solver.c +index c6cad6b..f371546 100644 +--- a/src/solver.c ++++ b/src/solver.c +@@ -3561,6 +3561,19 @@ solver_solve(Solver *solv, Queue *job) + MAPSET(&solv->droporphanedmap, p - installed->start); + } + break; ++ case SOLVER_ALLOWUNINSTALL: ++ if (select == SOLVER_SOLVABLE_ALL || (select == SOLVER_SOLVABLE_REPO && installed && what == installed->repoid)) ++ solv->allowuninstall_all = 1; ++ FOR_JOB_SELECT(p, pp, select, what) ++ { ++ s = pool->solvables + p; ++ if (s->repo != installed) ++ continue; ++ if (!solv->allowuninstallmap.size) ++ map_grow(&solv->allowuninstallmap, installed->end - installed->start); ++ MAPSET(&solv->allowuninstallmap, p - installed->start); ++ } ++ break; + default: + break; + } +@@ -3608,7 +3621,7 @@ solver_solve(Solver *solv, Queue *job) + if (how & SOLVER_FORCEBEST) + solv->bestupdatemap_all = 1; + } +- if (!solv->dupmap_all || solv->allowuninstall) ++ if (!solv->dupmap_all || solv->allowuninstall || solv->allowuninstall_all || solv->allowuninstallmap.size) + hasdupjob = 1; + break; + default: +@@ -3917,17 +3930,6 @@ solver_solve(Solver *solv, Queue *job) + break; + case SOLVER_ALLOWUNINSTALL: + POOL_DEBUG(SOLV_DEBUG_JOB, "job: allowuninstall %s\n", solver_select2str(pool, select, what)); +- if (select == SOLVER_SOLVABLE_ALL || (select == SOLVER_SOLVABLE_REPO && installed && what == installed->repoid)) +- solv->allowuninstall_all = 1; +- FOR_JOB_SELECT(p, pp, select, what) +- { +- s = pool->solvables + p; +- if (s->repo != installed) +- continue; +- if (!solv->allowuninstallmap.size) +- map_grow(&solv->allowuninstallmap, installed->end - installed->start); +- MAPSET(&solv->allowuninstallmap, p - installed->start); +- } + break; + default: + POOL_DEBUG(SOLV_DEBUG_JOB, "job: unknown job\n"); +-- +2.6.1 + diff --git a/libsolv-rubyinclude.patch b/0001-ruby-make-compatible-with-ruby-2.2.patch similarity index 57% rename from libsolv-rubyinclude.patch rename to 0001-ruby-make-compatible-with-ruby-2.2.patch index 45982c9..51333aa 100644 --- a/libsolv-rubyinclude.patch +++ b/0001-ruby-make-compatible-with-ruby-2.2.patch @@ -1,7 +1,18 @@ -diff -up libsolv/bindings/ruby/CMakeLists.txt.rubyinclude libsolv/bindings/ruby/CMakeLists.txt ---- libsolv/bindings/ruby/CMakeLists.txt.rubyinclude 2012-06-07 10:06:19.372687533 +0200 -+++ libsolv/bindings/ruby/CMakeLists.txt 2012-06-07 10:09:57.313968719 +0200 -@@ -6,8 +6,17 @@ ELSE (USE_VENDORDIRS AND RUBY_VENDORARCH +From d82a26ca0950191546f546264e79ff72e2dbf09f Mon Sep 17 00:00:00 2001 +From: Igor Gnatenko +Date: Mon, 12 Oct 2015 18:52:16 +0200 +Subject: [PATCH] ruby: make compatible with ruby 2.2 + +Signed-off-by: Igor Gnatenko +--- + bindings/ruby/CMakeLists.txt | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/bindings/ruby/CMakeLists.txt b/bindings/ruby/CMakeLists.txt +index 6c3bd50..a7a3394 100644 +--- a/bindings/ruby/CMakeLists.txt ++++ b/bindings/ruby/CMakeLists.txt +@@ -6,8 +6,17 @@ ELSE (USE_VENDORDIRS AND RUBY_VENDORARCH_DIR) SET (RUBY_INSTALL_DIR ${RUBY_SITEARCH_DIR}) ENDIF (USE_VENDORDIRS AND RUBY_VENDORARCH_DIR) @@ -26,5 +37,8 @@ diff -up libsolv/bindings/ruby/CMakeLists.txt.rubyinclude libsolv/bindings/ruby/ -INCLUDE_DIRECTORIES (${RUBY_INCLUDE_PATH}) +INCLUDE_DIRECTORIES (${RUBY_INCLUDE_DIRS}) - ADD_LIBRARY (bindings_ruby SHARED solv_ruby.c) + ADD_LIBRARY (bindings_ruby MODULE solv_ruby.c) SET_TARGET_PROPERTIES (bindings_ruby PROPERTIES PREFIX "" OUTPUT_NAME "solv") +-- +2.6.1 + diff --git a/0002-Prefer-to-autouninstall-orphans.patch b/0002-Prefer-to-autouninstall-orphans.patch new file mode 100644 index 0000000..7711663 --- /dev/null +++ b/0002-Prefer-to-autouninstall-orphans.patch @@ -0,0 +1,42 @@ +From 36a4434559e3885f75f3e1e878f11f3b18fce920 Mon Sep 17 00:00:00 2001 +From: Michael Schroeder +Date: Mon, 12 Oct 2015 14:03:25 +0200 +Subject: [PATCH 2/4] Prefer to autouninstall orphans + +--- + src/solver.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/src/solver.c b/src/solver.c +index f371546..87b6c45 100644 +--- a/src/solver.c ++++ b/src/solver.c +@@ -217,13 +217,24 @@ autouninstall(Solver *solv, Id *problem) + Rule *r; + if (m && !MAPTST(m, v - solv->updaterules)) + continue; +- /* check if identical to feature rule, we don't like that */ ++ /* check if identical to feature rule, we don't like that (except for orphans) */ + r = solv->rules + solv->featurerules + (v - solv->updaterules); + if (!r->p) + { + /* update rule == feature rule */ + if (v > lastfeature) + lastfeature = v; ++ /* prefer orphaned packages in dup mode */ ++ if (solv->dupmap_all && solv->keep_orphans) ++ { ++ r = solv->rules + v; ++ if (!r->d && r->p == (solv->installed->start + (v - solv->updaterules))) ++ { ++ lastfeature = v; ++ lastupdate = 0; ++ break; ++ } ++ } + continue; + } + if (v > lastupdate) +-- +2.6.1 + diff --git a/0003-Check-keep_orphans-flag-in-solver_addduprules.patch b/0003-Check-keep_orphans-flag-in-solver_addduprules.patch new file mode 100644 index 0000000..6daf307 --- /dev/null +++ b/0003-Check-keep_orphans-flag-in-solver_addduprules.patch @@ -0,0 +1,33 @@ +From d5af25c0ef8fb01e5b0d377a2d7223281991b960 Mon Sep 17 00:00:00 2001 +From: Michael Schroeder +Date: Mon, 12 Oct 2015 14:03:55 +0200 +Subject: [PATCH 3/4] Check keep_orphans flag in solver_addduprules + +solver_addduprules is called if allowuninstall is set +--- + src/rules.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/src/rules.c b/src/rules.c +index b941986..ead78d6 100644 +--- a/src/rules.c ++++ b/src/rules.c +@@ -1835,6 +1835,15 @@ solver_addduprules(Solver *solv, Map *addedmap) + if (is->evr == ps->evr && solvable_identical(ps, is)) + break; + } ++ if (!ip && solv->dupmap_all && solv->keep_orphans) ++ { ++ /* is this an orphan we should keep? */ ++ Rule *r = solv->rules + solv->featurerules + (p - solv->installed->start); ++ if (!r->p) ++ r = solv->rules + solv->updaterules + (p - solv->installed->start); ++ if (r->p == p && !r->d) ++ ip = p; ++ } + if (!ip) + solver_addrule(solv, -p, 0, 0); /* no match, sorry */ + else +-- +2.6.1 + diff --git a/0004-Fix-spelling-duh.patch b/0004-Fix-spelling-duh.patch new file mode 100644 index 0000000..745bf06 --- /dev/null +++ b/0004-Fix-spelling-duh.patch @@ -0,0 +1,25 @@ +From 18f93e12d10aa2a507ffa3689725e21a85a81e7f Mon Sep 17 00:00:00 2001 +From: Michael Schroeder +Date: Mon, 12 Oct 2015 14:04:54 +0200 +Subject: [PATCH 4/4] Fix spelling, duh... + +--- + ext/testcase.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ext/testcase.c b/ext/testcase.c +index 3c40451..b9fddef 100644 +--- a/ext/testcase.c ++++ b/ext/testcase.c +@@ -164,7 +164,7 @@ static struct selflags2str { + }; + + static const char *features[] = { +-#ifdef ENABLE_LINKED_PACKAGES ++#ifdef ENABLE_LINKED_PKGS + "linked_packages", + #endif + #ifdef ENABLE_COMPLEX_DEPS +-- +2.6.1 + diff --git a/libsolv.spec b/libsolv.spec index 18e22d9..e265f67 100644 --- a/libsolv.spec +++ b/libsolv.spec @@ -29,12 +29,19 @@ %filter_setup Name: libsolv -Version: 0.6.12 +Version: 0.6.14 Release: 1%{?dist} License: BSD Url: https://github.com/openSUSE/libsolv Source: https://github.com/openSUSE/libsolv/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz -Patch0: libsolv-rubyinclude.patch +Patch0: 0001-ruby-make-compatible-with-ruby-2.2.patch + +Patch1: 0001-Move-allowuninstall-map-creation.patch +Patch2: 0002-Prefer-to-autouninstall-orphans.patch +Patch3: 0003-Check-keep_orphans-flag-in-solver_addduprules.patch +Patch4: 0004-Fix-spelling-duh.patch +BuildRequires: git-core + Group: Development/Libraries Summary: Package dependency solver BuildRequires: cmake libdb-devel expat-devel rpm-devel zlib-devel @@ -130,8 +137,7 @@ Perl bindings for sat solver. %endif %prep -%setup -q -%patch0 -p1 -b .rubyinclude +%autosetup -S git %if %{with python3} rm -rf %{py3dir} @@ -223,6 +229,10 @@ make ARGS="-V" test %endif %changelog +* Mon Oct 12 2015 Igor Gnatenko - 0.6.14-1 +- Update to 0.6.14 +- Backport patches from upstream + * Thu Sep 10 2015 Igor Gnatenko - 0.6.12-1 - Update to 0.6.12 diff --git a/sources b/sources index 9f16e02..a51763e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -57a31231742f4095b1189925ddc13bd2 libsolv-0.6.12.tar.gz +3bacd80472e4c8d5dd66d22f435f9258 libsolv-0.6.14.tar.gz