|
Richard Hughes |
7ca9061 |
diff --git a/lib/packagekit-glib2/pk-enum.c b/lib/packagekit-glib2/pk-enum.c
|
|
Richard Hughes |
7ca9061 |
index bc08d7c..8f556a6 100644
|
|
Richard Hughes |
7ca9061 |
--- a/lib/packagekit-glib2/pk-enum.c
|
|
Richard Hughes |
7ca9061 |
+++ b/lib/packagekit-glib2/pk-enum.c
|
|
Richard Hughes |
7ca9061 |
@@ -401,7 +401,7 @@ static const PkEnumMatch enum_upgrade_kind[] = {
|
|
Richard Hughes |
7ca9061 |
static const PkEnumMatch enum_transaction_flag[] = {
|
|
Richard Hughes |
7ca9061 |
{PK_TRANSACTION_FLAG_ENUM_NONE, "none"}, /* fall though value */
|
|
Richard Hughes |
7ca9061 |
{PK_TRANSACTION_FLAG_ENUM_ONLY_TRUSTED, "only-trusted"},
|
|
Richard Hughes |
7ca9061 |
- {PK_TRANSACTION_FLAG_ENUM_SIMULATE, "simluate"},
|
|
Richard Hughes |
7ca9061 |
+ {PK_TRANSACTION_FLAG_ENUM_SIMULATE, "simulate"},
|
|
Richard Hughes |
7ca9061 |
{PK_TRANSACTION_FLAG_ENUM_ONLY_DOWNLOAD, "only-download"},
|
|
Richard Hughes |
7ca9061 |
{0, NULL}
|
|
Richard Hughes |
7ca9061 |
};
|
|
Richard Hughes |
43d4ca3 |
diff --git a/src/pk-backend-job.c b/src/pk-backend-job.c
|
|
Richard Hughes |
43d4ca3 |
index d9f920a..a575800 100644
|
|
Richard Hughes |
43d4ca3 |
--- a/src/pk-backend-job.c
|
|
Richard Hughes |
43d4ca3 |
+++ b/src/pk-backend-job.c
|
|
Richard Hughes |
43d4ca3 |
@@ -574,6 +574,59 @@ typedef struct {
|
|
Richard Hughes |
43d4ca3 |
} PkBackendJobVFuncHelper;
|
|
Richard Hughes |
43d4ca3 |
|
|
Richard Hughes |
43d4ca3 |
/**
|
|
Richard Hughes |
43d4ca3 |
+ * pk_backend_job_signal_to_string:
|
|
Richard Hughes |
43d4ca3 |
+ **/
|
|
Richard Hughes |
43d4ca3 |
+static const gchar *
|
|
Richard Hughes |
43d4ca3 |
+pk_backend_job_signal_to_string (PkBackendJobSignal id)
|
|
Richard Hughes |
43d4ca3 |
+{
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_ALLOW_CANCEL)
|
|
Richard Hughes |
43d4ca3 |
+ return "AllowCancel";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_DETAILS)
|
|
Richard Hughes |
43d4ca3 |
+ return "Details";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_ERROR_CODE)
|
|
Richard Hughes |
43d4ca3 |
+ return "ErrorCode";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_DISTRO_UPGRADE)
|
|
Richard Hughes |
43d4ca3 |
+ return "DistroUpgrade";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_FINISHED)
|
|
Richard Hughes |
43d4ca3 |
+ return "Finished";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_MESSAGE)
|
|
Richard Hughes |
43d4ca3 |
+ return "Message";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_PACKAGE)
|
|
Richard Hughes |
43d4ca3 |
+ return "Package";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_ITEM_PROGRESS)
|
|
Richard Hughes |
43d4ca3 |
+ return "ItemProgress";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_FILES)
|
|
Richard Hughes |
43d4ca3 |
+ return "Files";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_PERCENTAGE)
|
|
Richard Hughes |
43d4ca3 |
+ return "Percentage";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_REMAINING)
|
|
Richard Hughes |
43d4ca3 |
+ return "Remaining";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_SPEED)
|
|
Richard Hughes |
43d4ca3 |
+ return "Speed";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_DOWNLOAD_SIZE_REMAINING)
|
|
Richard Hughes |
43d4ca3 |
+ return "DownloadSizeRemaining";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_REPO_DETAIL)
|
|
Richard Hughes |
43d4ca3 |
+ return "RepoDetail";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_REPO_SIGNATURE_REQUIRED)
|
|
Richard Hughes |
43d4ca3 |
+ return "RepoSignatureRequired";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_EULA_REQUIRED)
|
|
Richard Hughes |
43d4ca3 |
+ return "EulaRequired";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_MEDIA_CHANGE_REQUIRED)
|
|
Richard Hughes |
43d4ca3 |
+ return "MediaChangeRequired";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_REQUIRE_RESTART)
|
|
Richard Hughes |
43d4ca3 |
+ return "RequireRestart";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_STATUS_CHANGED)
|
|
Richard Hughes |
43d4ca3 |
+ return "StatusChanged";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_LOCKED_CHANGED)
|
|
Richard Hughes |
43d4ca3 |
+ return "LockedChanged";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_UPDATE_DETAIL)
|
|
Richard Hughes |
43d4ca3 |
+ return "UpdateDetail";
|
|
Richard Hughes |
43d4ca3 |
+ if (id == PK_BACKEND_SIGNAL_CATEGORY)
|
|
Richard Hughes |
43d4ca3 |
+ return "Category";
|
|
Richard Hughes |
43d4ca3 |
+ return NULL;
|
|
Richard Hughes |
43d4ca3 |
+}
|
|
Richard Hughes |
43d4ca3 |
+
|
|
Richard Hughes |
43d4ca3 |
+/**
|
|
Richard Hughes |
43d4ca3 |
* pk_backend_job_call_vfunc_idle_cb:
|
|
Richard Hughes |
43d4ca3 |
**/
|
|
Richard Hughes |
43d4ca3 |
static gboolean
|
|
Richard Hughes |
43d4ca3 |
@@ -584,13 +637,13 @@ pk_backend_job_call_vfunc_idle_cb (gpointer user_data)
|
|
Richard Hughes |
43d4ca3 |
|
|
Richard Hughes |
43d4ca3 |
/* call transaction vfunc on main thread */
|
|
Richard Hughes |
43d4ca3 |
item = &helper->job->priv->vfunc_items[helper->signal_kind];
|
|
Richard Hughes |
43d4ca3 |
- if (item != NULL) {
|
|
Richard Hughes |
43d4ca3 |
+ if (item != NULL && item->vfunc != NULL) {
|
|
Richard Hughes |
43d4ca3 |
item->vfunc (helper->job,
|
|
Richard Hughes |
43d4ca3 |
helper->object,
|
|
Richard Hughes |
43d4ca3 |
item->user_data);
|
|
Richard Hughes |
43d4ca3 |
} else {
|
|
Richard Hughes |
43d4ca3 |
- g_warning ("tried to do signal %i when no longer connected",
|
|
Richard Hughes |
43d4ca3 |
- helper->signal_kind);
|
|
Richard Hughes |
43d4ca3 |
+ g_warning ("tried to do signal %s when no longer connected",
|
|
Richard Hughes |
43d4ca3 |
+ pk_backend_job_signal_to_string (helper->signal_kind));
|
|
Richard Hughes |
43d4ca3 |
}
|
|
Richard Hughes |
43d4ca3 |
if (helper->destroy_func != NULL)
|
|
Richard Hughes |
43d4ca3 |
helper->destroy_func (helper->object);
|
|
Richard Hughes |
43d4ca3 |
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
|
|
Richard Hughes |
43d4ca3 |
index 75d6136..810c771 100644
|
|
Richard Hughes |
43d4ca3 |
--- a/src/pk-transaction.c
|
|
Richard Hughes |
43d4ca3 |
+++ b/src/pk-transaction.c
|
|
Richard Hughes |
43d4ca3 |
@@ -299,6 +299,12 @@ pk_transaction_finish_invalidate_caches (PkTransaction *transaction)
|
|
Richard Hughes |
43d4ca3 |
pk_cache_set_results (priv->cache, priv->role, priv->results);
|
|
Richard Hughes |
43d4ca3 |
|
|
Richard Hughes |
43d4ca3 |
/* could the update list have changed? */
|
|
Richard Hughes |
43d4ca3 |
+ if (pk_bitfield_contain (transaction->priv->cached_transaction_flags,
|
|
Richard Hughes |
43d4ca3 |
+ PK_TRANSACTION_FLAG_ENUM_SIMULATE))
|
|
Richard Hughes |
43d4ca3 |
+ goto out;
|
|
Richard Hughes |
43d4ca3 |
+ if (pk_bitfield_contain (transaction->priv->cached_transaction_flags,
|
|
Richard Hughes |
43d4ca3 |
+ PK_TRANSACTION_FLAG_ENUM_ONLY_DOWNLOAD))
|
|
Richard Hughes |
43d4ca3 |
+ goto out;
|
|
Richard Hughes |
43d4ca3 |
if (priv->role == PK_ROLE_ENUM_UPDATE_PACKAGES ||
|
|
Richard Hughes |
43d4ca3 |
priv->role == PK_ROLE_ENUM_REMOVE_PACKAGES ||
|
|
Richard Hughes |
43d4ca3 |
priv->role == PK_ROLE_ENUM_REPO_ENABLE ||
|
|
Richard Hughes |
43d4ca3 |
@@ -313,6 +319,7 @@ pk_transaction_finish_invalidate_caches (PkTransaction *transaction)
|
|
Richard Hughes |
43d4ca3 |
pk_notify_wait_updates_changed (priv->notify,
|
|
Richard Hughes |
43d4ca3 |
PK_TRANSACTION_UPDATES_CHANGED_TIMEOUT);
|
|
Richard Hughes |
43d4ca3 |
}
|
|
Richard Hughes |
43d4ca3 |
+out:
|
|
Richard Hughes |
43d4ca3 |
return TRUE;
|
|
Richard Hughes |
43d4ca3 |
}
|
|
Richard Hughes |
43d4ca3 |
|
|
Richard Hughes |
43d4ca3 |
@@ -987,11 +994,12 @@ pk_transaction_plugin_phase (PkTransaction *transaction,
|
|
Richard Hughes |
43d4ca3 |
g_main_context_iteration (context, FALSE);
|
|
Richard Hughes |
43d4ca3 |
}
|
|
Richard Hughes |
43d4ca3 |
|
|
Richard Hughes |
43d4ca3 |
+ /* quit the transaction if any of the plugins fail */
|
|
Richard Hughes |
43d4ca3 |
exit_code = pk_backend_job_get_exit_code (job);
|
|
Richard Hughes |
43d4ca3 |
- if (exit_code != PK_EXIT_ENUM_UNKNOWN) {
|
|
Richard Hughes |
43d4ca3 |
+ if (exit_code != PK_EXIT_ENUM_UNKNOWN &&
|
|
Richard Hughes |
43d4ca3 |
+ exit_code != PK_EXIT_ENUM_SUCCESS) {
|
|
Richard Hughes |
43d4ca3 |
pk_backend_job_set_exit_code (transaction->priv->job, exit_code);
|
|
Richard Hughes |
43d4ca3 |
- if (exit_code != PK_EXIT_ENUM_SUCCESS)
|
|
Richard Hughes |
43d4ca3 |
- break;
|
|
Richard Hughes |
43d4ca3 |
+ break;
|
|
Richard Hughes |
43d4ca3 |
}
|
|
Richard Hughes |
43d4ca3 |
}
|
|
Richard Hughes |
43d4ca3 |
out:
|
|
Richard Hughes |
43d4ca3 |
diff --git a/src/plugins/pk-plugin-check-shared-libraries-in-use.c b/src/plugins/pk-plugin-check-shared-libraries-in-use.c
|
|
Richard Hughes |
43d4ca3 |
index 2a3f4a6..1c09649 100644
|
|
Richard Hughes |
43d4ca3 |
--- a/src/plugins/pk-plugin-check-shared-libraries-in-use.c
|
|
Richard Hughes |
43d4ca3 |
+++ b/src/plugins/pk-plugin-check-shared-libraries-in-use.c
|
|
Richard Hughes |
43d4ca3 |
@@ -95,6 +95,17 @@ pk_plugin_finished_cb (PkBackendJob *job,
|
|
Richard Hughes |
43d4ca3 |
}
|
|
Richard Hughes |
43d4ca3 |
|
|
Richard Hughes |
43d4ca3 |
/**
|
|
Richard Hughes |
43d4ca3 |
+ * pk_plugin_package_cb:
|
|
Richard Hughes |
43d4ca3 |
+ **/
|
|
Richard Hughes |
43d4ca3 |
+static void
|
|
Richard Hughes |
43d4ca3 |
+pk_plugin_package_cb (PkBackendJob *job,
|
|
Richard Hughes |
43d4ca3 |
+ PkPackage *package,
|
|
Richard Hughes |
43d4ca3 |
+ PkPlugin *plugin)
|
|
Richard Hughes |
43d4ca3 |
+{
|
|
Richard Hughes |
43d4ca3 |
+ g_ptr_array_add (plugin->priv->list, g_object_ref (package));
|
|
Richard Hughes |
43d4ca3 |
+}
|
|
Richard Hughes |
43d4ca3 |
+
|
|
Richard Hughes |
43d4ca3 |
+/**
|
|
Richard Hughes |
43d4ca3 |
* pk_plugin_get_installed_package_for_file:
|
|
Richard Hughes |
43d4ca3 |
**/
|
|
Richard Hughes |
43d4ca3 |
static PkPackage *
|
|
Richard Hughes |
43d4ca3 |
@@ -109,8 +120,8 @@ pk_plugin_get_installed_package_for_file (PkPlugin *plugin,
|
|
Richard Hughes |
43d4ca3 |
g_ptr_array_set_size (plugin->priv->list, 0);
|
|
Richard Hughes |
43d4ca3 |
pk_backend_reset_job (plugin->backend, plugin->job);
|
|
Richard Hughes |
43d4ca3 |
pk_backend_job_set_vfunc (plugin->job,
|
|
Richard Hughes |
43d4ca3 |
- PK_BACKEND_SIGNAL_FILES,
|
|
Richard Hughes |
43d4ca3 |
- (PkBackendJobVFunc) pk_plugin_files_cb,
|
|
Richard Hughes |
43d4ca3 |
+ PK_BACKEND_SIGNAL_PACKAGE,
|
|
Richard Hughes |
43d4ca3 |
+ (PkBackendJobVFunc) pk_plugin_package_cb,
|
|
Richard Hughes |
43d4ca3 |
plugin);
|
|
Richard Hughes |
43d4ca3 |
pk_backend_job_set_vfunc (plugin->job,
|
|
Richard Hughes |
43d4ca3 |
PK_BACKEND_SIGNAL_FINISHED,
|