aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2012-01-20 11:45:48 +0200
committerTimo Teräs <timo.teras@iki.fi>2012-01-20 11:45:48 +0200
commitc73effbe1823cd37af9fe647cdc4d133ba0429cb (patch)
treeefb0216f39592cc705eb2073ae74ca95662e83cd
parent14fe40fd6c7831a489afdce377a7a1acdd69bd09 (diff)
downloadaports-c73effbe1823cd37af9fe647cdc4d133ba0429cb.tar.bz2
aports-c73effbe1823cd37af9fe647cdc4d133ba0429cb.tar.xz
main/apk-tools: cherry-pick a regression fix from upstream
-rw-r--r--main/apk-tools/0001-lua-fix-compile-error.patch (renamed from main/apk-tools/fix-lua-apk.patch)12
-rw-r--r--main/apk-tools/0002-solver-fix-regression-from-calculate-branch-minimum-.patch102
-rw-r--r--main/apk-tools/APKBUILD8
3 files changed, 119 insertions, 3 deletions
diff --git a/main/apk-tools/fix-lua-apk.patch b/main/apk-tools/0001-lua-fix-compile-error.patch
index 0c13e815b8..54059f1ded 100644
--- a/main/apk-tools/fix-lua-apk.patch
+++ b/main/apk-tools/0001-lua-fix-compile-error.patch
@@ -1,3 +1,12 @@
+From 00fd7b07f12a18615da1ad32b915787f72074dfa Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Tue, 17 Jan 2012 15:59:01 +0200
+Subject: [PATCH 1/2] lua: fix compile error
+
+---
+ src/lua-apk.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
diff --git a/src/lua-apk.c b/src/lua-apk.c
index 6fbd1cf..45488c2 100644
--- a/src/lua-apk.c
@@ -11,3 +20,6 @@ index 6fbd1cf..45488c2 100644
goto ret_nil;
name = dep.name;
+--
+1.7.7.3
+
diff --git a/main/apk-tools/0002-solver-fix-regression-from-calculate-branch-minimum-.patch b/main/apk-tools/0002-solver-fix-regression-from-calculate-branch-minimum-.patch
new file mode 100644
index 0000000000..f5975055ea
--- /dev/null
+++ b/main/apk-tools/0002-solver-fix-regression-from-calculate-branch-minimum-.patch
@@ -0,0 +1,102 @@
+From 0f895650996a2565c0dc59d3c94f861145b42c05 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Fri, 20 Jan 2012 10:39:00 +0200
+Subject: [PATCH 2/2] solver: fix regression from "calculate branch minimum
+ penalty early"
+
+Forgot to reset per-name penalty when it got locked by apply_decision.
+This also fine tunes compare_package_preference() to always prefer
+packages specified on command line speeding up calculation certain
+complicated solutions.
+---
+ src/solver.c | 28 +++++++++++++++++++++-------
+ test/error2.expect | 3 +--
+ 2 files changed, 22 insertions(+), 9 deletions(-)
+
+diff --git a/src/solver.c b/src/solver.c
+index 76edeba..ba98ca6 100644
+--- a/src/solver.c
++++ b/src/solver.c
+@@ -325,6 +325,12 @@ static int compare_package_preference(unsigned short solver_flags,
+ struct apk_package *pkgA,
+ struct apk_package *pkgB)
+ {
++ /* specified on command line directly */
++ if (pkgA->filename && !pkgB->filename)
++ return 1;
++ if (pkgB->filename && !pkgA->filename)
++ return -1;
++
+ if (solver_flags & APK_SOLVERF_PREFER_TAG) {
+ /* preferred repository pinning */
+ if ((pkgA->repos & preferred_repos) && !(pkgB->repos & preferred_repos))
+@@ -333,11 +339,11 @@ static int compare_package_preference(unsigned short solver_flags,
+ return -1;
+ } else {
+ /* preferred repository pinning */
+- if ((pkgA->ipkg || pkgA->filename || (pkgA->repos & preferred_repos)) &&
+- !(pkgB->ipkg || pkgB->filename || (pkgB->repos & preferred_repos)))
++ if ((pkgA->ipkg || (pkgA->repos & preferred_repos)) &&
++ !(pkgB->ipkg || (pkgB->repos & preferred_repos)))
+ return 1;
+- if ((pkgB->ipkg || pkgA->filename || (pkgB->repos & preferred_repos)) &&
+- !(pkgA->ipkg || pkgB->filename || (pkgA->repos & preferred_repos)))
++ if ((pkgB->ipkg || (pkgB->repos & preferred_repos)) &&
++ !(pkgA->ipkg || (pkgA->repos & preferred_repos)))
+ return -1;
+ }
+
+@@ -504,9 +510,6 @@ static int update_name_state(struct apk_solver_state *ss, struct apk_name *name)
+ dbg_printf("%s: deleted from unsolved: %d requirers, %d install_ifs, %d options, %d skipped\n",
+ name->name, ns->requirers, ns->install_ifs, options, skipped_options);
+ } else {
+- dbg_printf("%s: added to unsolved: %d requirers, %d install_ifs, %d options (next topology %d)\n",
+- name->name, ns->requirers, ns->install_ifs, options,
+- best_topology);
+ if (!list_hashed(&ns->unsolved_list))
+ list_add(&ns->unsolved_list, &ss->unsolved_list_head);
+ if (!ns->locked) {
+@@ -517,6 +520,11 @@ static int update_name_state(struct apk_solver_state *ss, struct apk_name *name)
+ .unsatisfiable = preferred_ps->conflicts,
+ .preference = get_preference(ss, preferred_pkg, FALSE),
+ };
++ dbg_printf("%s: min.penalty for name {%d, %d} from pkg " PKG_VER_FMT "\n",
++ name->name,
++ ns->minimum_penalty.unsatisfiable,
++ ns->minimum_penalty.preference,
++ PKG_VER_PRINTF(preferred_pkg));
+ } else {
+ ns->minimum_penalty = (struct apk_score) {
+ .unsatisfiable = ns->requirers,
+@@ -525,6 +533,9 @@ static int update_name_state(struct apk_solver_state *ss, struct apk_name *name)
+ }
+ addscore(&ss->minimum_penalty, &ns->minimum_penalty);
+ }
++ dbg_printf("%s: added to unsolved: %d requirers, %d install_ifs, %d options (next topology %d)\n",
++ name->name, ns->requirers, ns->install_ifs, options,
++ best_topology);
+ }
+
+ return options + skipped_options;
+@@ -568,6 +579,9 @@ static void apply_decision(struct apk_solver_state *ss,
+ (ps->flags & APK_PKGSTF_INSTALL) ? "INSTALL" : "NO_INSTALL");
+
+ if (ps->flags & APK_PKGSTF_INSTALL) {
++ subscore(&ss->minimum_penalty, &ns->minimum_penalty);
++ ns->minimum_penalty = (struct apk_score) { 0, 0 };
++
+ ss->assigned_names++;
+ ss->score.unsatisfiable += ps->conflicts;
+ ss->score.preference += get_preference(ss, pkg, FALSE);
+diff --git a/test/error2.expect b/test/error2.expect
+index 65d0093..7faac5e 100644
+--- a/test/error2.expect
++++ b/test/error2.expect
+@@ -1,3 +1,2 @@
+-2 unsatisfiable dependencies (solution with 4 names)
++1 unsatisfiable dependencies (solution with 4 names)
+ world: d<1.5
+-b-1: d<2.0
+--
+1.7.7.3
+
diff --git a/main/apk-tools/APKBUILD b/main/apk-tools/APKBUILD
index 86845e8e42..fc00bdb289 100644
--- a/main/apk-tools/APKBUILD
+++ b/main/apk-tools/APKBUILD
@@ -1,13 +1,14 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=apk-tools
pkgver=2.2.3
-pkgrel=0
+pkgrel=1
pkgdesc="Alpine Package Keeper - package manager for alpine"
subpackages="$pkgname-static lua-apk:luaapk"
depends=
makedepends="zlib-dev openssl-dev lua-dev"
source="http://git.alpinelinux.org/cgit/$pkgname/snapshot/$pkgname-$pkgver.tar.bz2
- fix-lua-apk.patch
+ 0001-lua-fix-compile-error.patch
+ 0002-solver-fix-regression-from-calculate-branch-minimum-.patch
"
url="http://git.alpinelinux.org/cgit/apk-tools/"
@@ -56,4 +57,5 @@ luaapk() {
}
md5sums="31dcb57491d08ea69f0d041aad94e865 apk-tools-2.2.3.tar.bz2
-66e110316e76408f19f8c44e698c26cb fix-lua-apk.patch"
+752832872f52178f76b596e8a33f5918 0001-lua-fix-compile-error.patch
+b527744735a2e74e3772ca51b2ef7699 0002-solver-fix-regression-from-calculate-branch-minimum-.patch"