summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2014-04-10 09:52:40 +0300
committerTimo Teräs <timo.teras@iki.fi>2014-04-10 09:52:40 +0300
commit9fa64ca1db84c7a57434498651218d02da57ca04 (patch)
tree8f920f3073b748c4447be3a2a0e8b658fe3893e7 /src
parent50cec5b9590cf807d677a2936bf4d4e441e08f79 (diff)
downloadapk-tools-9fa64ca1db84c7a57434498651218d02da57ca04.tar.gz
apk-tools-9fa64ca1db84c7a57434498651218d02da57ca04.tar.bz2
apk-tools-9fa64ca1db84c7a57434498651218d02da57ca04.tar.xz
apk-tools-9fa64ca1db84c7a57434498651218d02da57ca04.zip
solver: fix cleaning of packages that got replaced by provides
Diffstat (limited to 'src')
-rw-r--r--src/solver.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/solver.c b/src/solver.c
index 31b3db7..9c513c7 100644
--- a/src/solver.c
+++ b/src/solver.c
@@ -786,10 +786,13 @@ static void cset_gen_name_remove(struct apk_solver_state *ss, struct apk_package
{
struct apk_name *name = pkg->name, **pname;
- if (name->ss.chosen.pkg != NULL || name->ss.in_changeset)
+ if (pkg->ss.in_changeset ||
+ (name->ss.chosen.pkg != NULL &&
+ name->ss.chosen.pkg->name == name))
return;
name->ss.in_changeset = 1;
+ pkg->ss.in_changeset = 1;
foreach_array_item(pname, pkg->name->rinstall_if)
cset_check_removal_by_iif(ss, *pname);
record_change(ss, pkg, NULL);