Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
alpine
apk-tools
Commits
9165aa38
Commit
9165aa38
authored
Nov 02, 2017
by
Ariadne Conill
🐰
Browse files
solver: instead of tracking selected packages, score by requirer count for tiebreaking
parent
f18c7081
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/apk_solver_data.h
View file @
9165aa38
...
...
@@ -54,7 +54,6 @@ struct apk_solver_package_state {
unsigned
seen
:
1
;
unsigned
pkg_available
:
1
;
unsigned
pkg_selectable
:
1
;
unsigned
pkg_selected
:
1
;
unsigned
tag_ok
:
1
;
unsigned
tag_preferred
:
1
;
unsigned
dependencies_used
:
1
;
...
...
src/solver.c
View file @
9165aa38
...
...
@@ -299,10 +299,6 @@ static void apply_constraint(struct apk_solver_state *ss, struct apk_package *pp
if
(
is_provided
)
inherit_pinning_and_flags
(
ss
,
pkg0
,
ppkg
);
/* if a world-dependency is non-virtual, then the provider is going to be selected */
if
(
ppkg
==
NULL
&&
dep
->
name
==
pkg0
->
name
&&
pkg0
->
ss
.
pkg_selectable
)
pkg0
->
ss
.
pkg_selected
=
1
;
}
}
...
...
@@ -485,6 +481,17 @@ static void reconsider_name(struct apk_solver_state *ss, struct apk_name *name)
name
->
name
,
name
->
ss
.
has_options
,
name
->
ss
.
reverse_deps_done
);
}
static
int
count_requirers
(
const
struct
apk_package
*
pkg
)
{
int
cnt
=
pkg
->
name
->
ss
.
requirers
;
struct
apk_dependency
*
p
;
foreach_array_item
(
p
,
pkg
->
provides
)
cnt
+=
p
->
name
->
ss
.
requirers
;
return
cnt
;
}
static
int
compare_providers
(
struct
apk_solver_state
*
ss
,
struct
apk_provider
*
pA
,
struct
apk_provider
*
pB
)
{
...
...
@@ -591,8 +598,8 @@ static int compare_providers(struct apk_solver_state *ss,
if
(
r
)
return
r
;
/* Prefer
already selected package
. */
r
=
pkgA
->
ss
.
pkg_selected
-
pkgB
->
ss
.
pkg_selected
;
/* Prefer
highest requirer count
. */
r
=
count_requirers
(
pkgA
)
-
count_requirers
(
pkgB
)
;
if
(
r
)
return
r
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment