mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-01-11 19:51:36 +01:00
main/apk-tools: cherry-pick a regression fix from upstream
This commit is contained in:
parent
14fe40fd6c
commit
c73effbe18
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user