summaryrefslogtreecommitdiff
path: root/components/services/install/lib/eazel-install-logic2.c
diff options
context:
space:
mode:
Diffstat (limited to 'components/services/install/lib/eazel-install-logic2.c')
-rw-r--r--components/services/install/lib/eazel-install-logic2.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/components/services/install/lib/eazel-install-logic2.c b/components/services/install/lib/eazel-install-logic2.c
index eb9d1f773..063d915c6 100644
--- a/components/services/install/lib/eazel-install-logic2.c
+++ b/components/services/install/lib/eazel-install-logic2.c
@@ -169,8 +169,8 @@ prune_failed_packages_helper (EazelInstall *service,
packagedata_status_enum_to_str (pack->status));
#endif
/* If it's a suite and no dependencies, cancel it */
- if (pack->suite_id && g_list_length (pack->depends)==0) {
- pack->status = PACKAGE_ALREADY_INSTALLED;
+ if (pack->suite_id && g_list_length (pack->depends)==0 && pack->status == PACKAGE_PARTLY_RESOLVED) {
+ pack->status = PACKAGE_CANCELLED;
}
/* If package is already installed, check if the service
@@ -194,8 +194,11 @@ prune_failed_packages_helper (EazelInstall *service,
return;
}
- if ((action == PRUNE_ACTION_NORMAL && pack->status != PACKAGE_PARTLY_RESOLVED) ||
- action == PRUNE_ACTION_ALLOW) {
+ if (action == PRUNE_ACTION_NORMAL && pack->status == PACKAGE_PARTLY_RESOLVED) {
+ action = PRUNE_ACTION_ALLOW;
+ }
+
+ if (action != PRUNE_ACTION_ALLOW) {
#if EI2_DEBUG & 0x4
trilobite_debug ("subpruner kill root %p %s because of %p %s",
root, root->name, pack, pack->name);