[gnome-packagekit] Use the simulate methods available in PackageKit 0.5.2 if available
- From: Richard Hughes <rhughes src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-packagekit] Use the simulate methods available in PackageKit 0.5.2 if available
- Date: Mon, 24 Aug 2009 11:25:08 +0000 (UTC)
commit e80cf82f6432e0b9f41a986190fbd4816491b5cd
Author: Richard Hughes <richard hughsie com>
Date: Mon Aug 24 12:23:26 2009 +0100
Use the simulate methods available in PackageKit 0.5.2 if available
src/gpk-application.c | 54 ++++++++++++++++++++++++++++++++++++++++++++--
src/gpk-dbus-task.c | 8 +++++++
src/gpk-update-viewer.c | 16 +++++++++++++-
3 files changed, 74 insertions(+), 4 deletions(-)
---
diff --git a/src/gpk-application.c b/src/gpk-application.c
index c351c26..9ea65ab 100644
--- a/src/gpk-application.c
+++ b/src/gpk-application.c
@@ -111,7 +111,9 @@ struct GpkApplicationPrivate
GpkHelperDepsRemove *helper_deps_remove;
GpkHelperDepsInstall *helper_deps_install;
GpkHelperMediaChange *helper_media_change;
- gboolean dep_check_info_only;
+#if !PK_CHECK_VERSION(0,5,2)
+ gboolean dep_check_info_only; /* bodge to tell apart the differing uses of GetDepends */
+#endif
guint status_id;
PkStatusEnum status_last;
};
@@ -715,7 +717,9 @@ gpk_application_menu_requires_cb (GtkAction *action, GpkApplication *application
/* get the requires */
package_ids = pk_package_ids_from_id (package_id_selected);
+#if !PK_CHECK_VERSION(0,5,2)
application->priv->dep_check_info_only = TRUE;
+#endif
ret = pk_client_get_requires (application->priv->client_primary, PK_FILTER_ENUM_NONE,
package_ids, TRUE, &error);
if (!ret) {
@@ -756,7 +760,9 @@ gpk_application_menu_depends_cb (GtkAction *action, GpkApplication *application)
/* get the depends */
package_ids = pk_package_ids_from_id (package_id_selected);
+#if !PK_CHECK_VERSION(0,5,2)
application->priv->dep_check_info_only = TRUE;
+#endif
ret = pk_client_get_depends (application->priv->client_primary, PK_FILTER_ENUM_NONE,
package_ids, TRUE, &error);
if (!ret) {
@@ -1087,7 +1093,8 @@ gpk_application_package_cb (PkClient *client, const PkPackageObj *obj, GpkApplic
pk_client_get_role (client, &role, NULL, NULL);
#endif
if (role == PK_ROLE_ENUM_GET_DEPENDS ||
- role == PK_ROLE_ENUM_GET_REQUIRES)
+ role == PK_ROLE_ENUM_GET_REQUIRES ||
+ role == PK_ROLE_ENUM_SIMULATE_INSTALL_PACKAGES)
return;
/* ignore progress */
@@ -1471,6 +1478,39 @@ gpk_application_finished_cb (PkClient *client, PkExitEnum exit_enum, guint runti
gpk_application_categories_finished (application);
}
+#if PK_CHECK_VERSION(0,5,2)
+ /* simulating */
+ if (role == PK_ROLE_ENUM_SIMULATE_INSTALL_PACKAGES &&
+ exit_enum == PK_EXIT_ENUM_SUCCESS) {
+ list = pk_client_get_package_list (application->priv->client_primary);
+ gpk_helper_deps_install_show (application->priv->helper_deps_install, application->priv->package_list, list);
+ g_object_unref (list);
+ }
+
+ /* get reqs */
+ if (role == PK_ROLE_ENUM_SIMULATE_REMOVE_PACKAGES &&
+ exit_enum == PK_EXIT_ENUM_SUCCESS) {
+ list = pk_client_get_package_list (application->priv->client_primary);
+ gpk_helper_deps_remove_show (application->priv->helper_deps_remove, application->priv->package_list, list);
+ g_object_unref (list);
+ }
+
+ /* get deps */
+ if (role == PK_ROLE_ENUM_GET_DEPENDS &&
+ exit_enum == PK_EXIT_ENUM_SUCCESS) {
+ list = pk_client_get_package_list (application->priv->client_primary);
+ gpk_application_finished_get_depends (application, list);
+ g_object_unref (list);
+ }
+
+ /* get reqs */
+ if (role == PK_ROLE_ENUM_GET_REQUIRES &&
+ exit_enum == PK_EXIT_ENUM_SUCCESS) {
+ list = pk_client_get_package_list (application->priv->client_primary);
+ gpk_application_finished_get_requires (application, list);
+ g_object_unref (list);
+ }
+#else
/* get deps */
if (role == PK_ROLE_ENUM_GET_DEPENDS &&
exit_enum == PK_EXIT_ENUM_SUCCESS) {
@@ -1480,7 +1520,6 @@ gpk_application_finished_cb (PkClient *client, PkExitEnum exit_enum, guint runti
else
gpk_helper_deps_install_show (application->priv->helper_deps_install, application->priv->package_list, list);
g_object_unref (list);
-
}
/* get reqs */
@@ -1493,6 +1532,7 @@ gpk_application_finished_cb (PkClient *client, PkExitEnum exit_enum, guint runti
gpk_helper_deps_remove_show (application->priv->helper_deps_remove, application->priv->package_list, list);
g_object_unref (list);
}
+#endif
/* we've just agreed to auth or a EULA */
if (role == PK_ROLE_ENUM_INSTALL_SIGNATURE ||
@@ -1991,8 +2031,12 @@ gpk_application_button_apply_cb (GtkWidget *widget, GpkApplication *application)
}
/* install */
+#if PK_CHECK_VERSION(0,5,2)
+ ret = pk_client_simulate_install_packages (application->priv->client_primary, package_ids, &error);
+#else
application->priv->dep_check_info_only = FALSE;
ret = pk_client_get_depends (application->priv->client_primary, pk_bitfield_value (PK_FILTER_ENUM_NOT_INSTALLED), package_ids, TRUE, &error);
+#endif
if (!ret) {
egg_warning ("failed to get depends: %s", error->message);
g_error_free (error);
@@ -2013,7 +2057,9 @@ gpk_application_button_apply_cb (GtkWidget *widget, GpkApplication *application)
}
/* install */
+#if !PK_CHECK_VERSION(0,5,2)
application->priv->dep_check_info_only = FALSE;
+#endif
ret = pk_client_get_requires (application->priv->client_primary, pk_bitfield_value (PK_FILTER_ENUM_INSTALLED), package_ids, TRUE, &error);
if (!ret) {
egg_warning ("failed to get requires: %s", error->message);
@@ -3650,7 +3696,9 @@ gpk_application_init (GpkApplication *application)
application->priv->url = NULL;
application->priv->search_text = NULL;
application->priv->has_package = FALSE;
+#if !PK_CHECK_VERSION(0,5,2)
application->priv->dep_check_info_only = FALSE;
+#endif
application->priv->details_event_id = 0;
application->priv->status_id = 0;
application->priv->status_last = PK_STATUS_ENUM_UNKNOWN;
diff --git a/src/gpk-dbus-task.c b/src/gpk-dbus-task.c
index 0caf6eb..58380f7 100644
--- a/src/gpk-dbus-task.c
+++ b/src/gpk-dbus-task.c
@@ -517,7 +517,11 @@ gpk_dbus_task_install_package_ids_dep_check (GpkDbusTask *task)
g_return_if_fail (task->priv->package_ids != NULL);
/* are we dumb and can't check for depends? */
+#if PK_CHECK_VERSION(0,5,2)
+ if (!pk_bitfield_contain (task->priv->roles, PK_ROLE_ENUM_SIMULATE_INSTALL_PACKAGES)) {
+#else
if (!pk_bitfield_contain (task->priv->roles, PK_ROLE_ENUM_GET_DEPENDS)) {
+#endif
egg_warning ("skipping depends check");
gpk_dbus_task_install_package_ids (task);
goto out;
@@ -561,7 +565,11 @@ gpk_dbus_task_install_package_ids_dep_check (GpkDbusTask *task)
pk_client_set_timeout (task->priv->client_primary, task->priv->timeout, NULL);
/* find out if this would drag in other packages */
+#if PK_CHECK_VERSION(0,5,2)
+ ret = pk_client_simulate_install_packages (task->priv->client_primary, task->priv->package_ids, &error_local);
+#else
ret = pk_client_get_depends (task->priv->client_primary, pk_bitfield_value (PK_FILTER_ENUM_NOT_INSTALLED), task->priv->package_ids, TRUE, &error_local);
+#endif
if (!ret) {
/* TRANSLATORS: error: could not get the extra package list when installing a package */
gpk_dbus_task_error_msg (task, _("Could not work out what packages would be also installed"), error_local);
diff --git a/src/gpk-update-viewer.c b/src/gpk-update-viewer.c
index d8db4c5..74fed2c 100644
--- a/src/gpk-update-viewer.c
+++ b/src/gpk-update-viewer.c
@@ -432,7 +432,11 @@ gpk_update_viewer_button_install_cb (GtkWidget *widget, gpointer data)
install_package_ids = g_strdupv (package_ids);
/* get packages that also have to be updated */
+#if PK_CHECK_VERSION(0,5,2)
+ ret = pk_client_simulate_update_packages (client_primary, package_ids, &error);
+#else
ret = pk_client_get_depends (client_primary, pk_bitfield_value (PK_FILTER_ENUM_NOT_INSTALLED), package_ids, TRUE, &error);
+#endif
if (!ret) {
egg_warning ("cannot get depends for updates: %s", error->message);
g_error_free (error);
@@ -592,10 +596,17 @@ gpk_update_viewer_package_cb (PkClient *client, const PkPackageObj *obj, gpointe
package_id = pk_package_id_to_string (obj->id);
/* are we simulating to get deps? */
+#if PK_CHECK_VERSION(0,5,2)
+ if (role == PK_ROLE_ENUM_SIMULATE_UPDATE_PACKAGES) {
+ egg_debug ("ignoring %s as we are simulating", package_id);
+ goto out;
+ }
+#else
if (role == PK_ROLE_ENUM_GET_DEPENDS) {
egg_debug ("ignoring %s as we are in the depends phase", package_id);
goto out;
}
+#endif
/* used for progress */
if (!gpk_update_viewer_is_update_info (obj->info)) {
@@ -1799,8 +1810,11 @@ gpk_update_viewer_finished_cb (PkClient *client, PkExitEnum exit, guint runtime,
}
/* finished depends check, show any extras */
+#if PK_CHECK_VERSION(0,5,2)
+ if (exit == PK_EXIT_ENUM_SUCCESS && role == PK_ROLE_ENUM_SIMULATE_UPDATE_PACKAGES) {
+#else
if (exit == PK_EXIT_ENUM_SUCCESS && role == PK_ROLE_ENUM_GET_DEPENDS) {
-
+#endif
/* show deps dialog */
list = pk_client_get_package_list (client);
gpk_helper_deps_update_show (helper_deps_update, list);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]