diff options
author | Timo Teräs <timo.teras@iki.fi> | 2014-04-10 09:52:40 +0300 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2014-04-10 09:52:40 +0300 |
commit | 9fa64ca1db84c7a57434498651218d02da57ca04 (patch) | |
tree | 8f920f3073b748c4447be3a2a0e8b658fe3893e7 | |
parent | 50cec5b9590cf807d677a2936bf4d4e441e08f79 (diff) | |
download | apk-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
-rw-r--r-- | src/solver.c | 5 |
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); |