[gnome-settings-daemon/f20] Grab a patch from upstream to fix the multiple notifications about updates.
Richard Hughes
rhughes at fedoraproject.org
Fri Oct 11 15:47:55 UTC 2013
commit 42ca9714e67a118c5f88ae490623829a1a6dadda
Author: Richard Hughes <richard at hughsie.com>
Date: Fri Oct 11 11:03:58 2013 +0100
Grab a patch from upstream to fix the multiple notifications about updates.
- Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1009132
gnome-settings-daemon.spec | 13 ++-
master-updates.patch | 292 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 304 insertions(+), 1 deletions(-)
---
diff --git a/gnome-settings-daemon.spec b/gnome-settings-daemon.spec
index 28dcf98..7baec5a 100644
--- a/gnome-settings-daemon.spec
+++ b/gnome-settings-daemon.spec
@@ -6,7 +6,7 @@
Name: gnome-settings-daemon
Version: 3.10.0
-Release: 1%{?dist}
+Release: 3%{?dist}
Summary: The daemon sharing settings from GNOME to GTK+/KDE applications
Group: System Environment/Daemons
@@ -17,6 +17,9 @@ Source: http://download.gnome.org/sources/%{name}/3.10/%{name}-%{version
# disable wacom for ppc/ppc64 (used on RHEL)
Patch0: %{name}-3.5.4-ppc-no-wacom.patch
+# already upstreamed fixes to the updates plugin
+Patch1: master-updates.patch
+
BuildRequires: gtk3-devel >= 3.7.8
BuildRequires: gnome-desktop3-devel >= %{gnome_desktop_version}
BuildRequires: xorg-x11-proto-devel libXxf86misc-devel
@@ -87,6 +90,7 @@ The %{name}-updates package contains the updates plugin for %{name}
%if 0%{?rhel}
%patch0 -p1 -b .ppc-no-wacom
%endif
+%patch1 -p1 -b .updates-fixes
autoreconf -i -f
@@ -272,6 +276,13 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.updates.gschema.xml
%changelog
+* Fri Oct 11 2013 Richard Hughes <rhughes at redhat.com> - 3.10.0-3
+- Apply the previous patch on Fedora too.
+
+* Fri Oct 11 2013 Richard Hughes <rhughes at redhat.com> - 3.10.0-2
+- Grab a patch from upstream to fix the multiple notifications about updates.
+- Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1009132
+
* Tue Sep 24 2013 Kalev Lember <kalevlember at gmail.com> - 3.10.0-1
- Update to 3.10.0
diff --git a/master-updates.patch b/master-updates.patch
new file mode 100644
index 0000000..b281bf7
--- /dev/null
+++ b/master-updates.patch
@@ -0,0 +1,292 @@
+diff --git a/plugins/updates/gsd-updates-manager.c b/plugins/updates/gsd-updates-manager.c
+index 3aff29a..901840e 100644
+--- a/plugins/updates/gsd-updates-manager.c
++++ b/plugins/updates/gsd-updates-manager.c
+@@ -66,13 +66,11 @@ struct GsdUpdatesManagerPrivate
+ GVolumeMonitor *volume_monitor;
+ guint failed_get_updates_count;
+ GPtrArray *update_packages;
+- GFile *offline_update_file;
+- GFileMonitor *offline_update_monitor;
+- gboolean offline_update_notified;
+ };
+
+ static void gsd_updates_manager_class_init (GsdUpdatesManagerClass *klass);
+ static void gsd_updates_manager_init (GsdUpdatesManager *updates_manager);
++static void restart_and_install_updates (void);
+
+ G_DEFINE_TYPE (GsdUpdatesManager, gsd_updates_manager, G_TYPE_OBJECT)
+
+@@ -245,6 +243,8 @@ libnotify_action_cb (NotifyNotification *notification,
+ GsdUpdatesManager *manager = GSD_UPDATES_MANAGER (user_data);
+
+ notify_notification_close (notification, NULL);
++ if (g_strcmp0 (action, "ignore") == 0)
++ goto out;
+ if (g_strcmp0 (action, "distro-upgrade-info") == 0) {
+ ret = g_spawn_command_line_async (DATADIR "/PackageKit/pk-upgrade-distro.sh",
+ &error);
+@@ -281,6 +281,10 @@ libnotify_action_cb (NotifyNotification *notification,
+ show_offline_updates_error (manager);
+ goto out;
+ }
++ if (g_strcmp0 (action, "install") == 0) {
++ restart_and_install_updates ();
++ goto out;
++ }
+ if (g_strcmp0 (action, "cancel") == 0) {
+ /* try to cancel */
+ g_cancellable_cancel (manager->priv->cancellable);
+@@ -383,6 +387,11 @@ get_distro_upgrades_finished_cb (GObject *object,
+ notify_notification_set_app_name (notification, _("Software Updates"));
+ notify_notification_set_timeout (notification, NOTIFY_EXPIRES_NEVER);
+ notify_notification_set_urgency (notification, NOTIFY_URGENCY_NORMAL);
++ notify_notification_add_action (notification, "ignore",
++ /* TRANSLATORS: don't install updates now */
++ _("Not Now"),
++ libnotify_action_cb,
++ manager, NULL);
+ notify_notification_add_action (notification, "distro-upgrade-info",
+ /* TRANSLATORS: provides more information about the upgrade */
+ _("More information"),
+@@ -514,9 +523,26 @@ notify_critical_updates (GsdUpdatesManager *manager, GPtrArray *array)
+ notify_notification_set_app_name (notification, _("Software Updates"));
+ notify_notification_set_timeout (notification, 15000);
+ notify_notification_set_urgency (notification, NOTIFY_URGENCY_CRITICAL);
+- notify_notification_add_action (notification, "show-update-viewer",
+- /* TRANSLATORS: button: open the update viewer to install updates*/
+- _("Install updates"), libnotify_action_cb, manager, NULL);
++ notify_notification_add_action (notification, "ignore",
++ /* TRANSLATORS: don't install updates now */
++ _("Not Now"),
++ libnotify_action_cb,
++ manager, NULL);
++ if (g_find_program_in_path ("gnome-software")) {
++ notify_notification_add_action (notification, "show-update-viewer",
++ /* TRANSLATORS: view available updates */
++ _("View"),
++ libnotify_action_cb, manager, NULL);
++ notify_notification_add_action (notification, "install",
++ /* TRANSLATORS: install available updates */
++ _("Restart & Install"),
++ libnotify_action_cb,
++ manager, NULL);
++ } else {
++ notify_notification_add_action (notification, "show-update-viewer",
++ /* TRANSLATORS: button: open the update viewer to install updates*/
++ _("Install updates"), libnotify_action_cb, manager, NULL);
++ }
+ g_signal_connect (notification, "closed",
+ G_CALLBACK (on_notification_closed), NULL);
+ ret = notify_notification_show (notification, &error);
+@@ -578,9 +604,26 @@ notify_normal_updates_maybe (GsdUpdatesManager *manager, GPtrArray *array)
+ notify_notification_set_app_name (notification, _("Software Updates"));
+ notify_notification_set_timeout (notification, 15000);
+ notify_notification_set_urgency (notification, NOTIFY_URGENCY_NORMAL);
+- notify_notification_add_action (notification, "show-update-viewer",
+- /* TRANSLATORS: button: open the update viewer to install updates*/
+- _("Install updates"), libnotify_action_cb, manager, NULL);
++ notify_notification_add_action (notification, "ignore",
++ /* TRANSLATORS: don't install updates now */
++ _("Not Now"),
++ libnotify_action_cb,
++ manager, NULL);
++ if (g_find_program_in_path ("gnome-software")) {
++ notify_notification_add_action (notification, "show-update-viewer",
++ /* TRANSLATORS: view available updates */
++ _("View"),
++ libnotify_action_cb, manager, NULL);
++ notify_notification_add_action (notification, "install",
++ /* TRANSLATORS: install available updates */
++ _("Restart & Install"),
++ libnotify_action_cb,
++ manager, NULL);
++ } else {
++ notify_notification_add_action (notification, "show-update-viewer",
++ /* TRANSLATORS: button: open the update viewer to install updates*/
++ _("Install updates"), libnotify_action_cb, manager, NULL);
++ }
+ g_signal_connect (notification, "closed",
+ G_CALLBACK (on_notification_closed), NULL);
+ ret = notify_notification_show (notification, &error);
+@@ -742,7 +785,6 @@ auto_download_updates (GsdUpdatesManager *manager)
+ package_ids[i] = g_strdup (pk_package_get_id (pkg));
+ }
+
+-#if PK_CHECK_VERSION(0,8,1)
+ /* we've set only-download in PkTask */
+ pk_task_update_packages_async (manager->priv->task,
+ package_ids,
+@@ -750,16 +792,6 @@ auto_download_updates (GsdUpdatesManager *manager)
+ NULL, NULL,
+ (GAsyncReadyCallback) package_download_finished_cb,
+ manager);
+-#else
+- /* download them all */
+- pk_client_download_packages_async (PK_CLIENT(manager->priv->task),
+- package_ids,
+- NULL, /* this means system cache */
+- manager->priv->cancellable,
+- NULL, NULL,
+- (GAsyncReadyCallback) package_download_finished_cb,
+- manager);
+-#endif
+ g_strfreev (package_ids);
+ }
+
+@@ -1375,120 +1407,6 @@ restart_and_install_updates (void)
+ g_object_unref (bus);
+ }
+
+-static void
+-view_updates (void)
+-{
+- gboolean ret;
+- GError *error = NULL;
+-
+- ret = g_spawn_command_line_async (BINDIR "/gnome-software --mode updates", &error);
+- if (!ret) {
+- g_warning ("Failure launching gnome-software: %s",
+- error->message);
+- g_error_free (error);
+- }
+-}
+-
+-static void
+-offline_update_action_cb (NotifyNotification *notification,
+- gchar *action,
+- gpointer user_data)
+-{
+-
+- notify_notification_close (notification, NULL);
+-
+- if (g_strcmp0 (action, "view") == 0) {
+- view_updates ();
+- }
+- else if (g_strcmp0 (action, "install") == 0) {
+- restart_and_install_updates ();
+- }
+-}
+-
+-static gboolean
+-reenable_offline_update (gpointer data)
+-{
+- GsdUpdatesManager *manager = data;
+-
+- manager->priv->offline_update_notified = FALSE;
+-
+- return G_SOURCE_REMOVE;
+-}
+-
+-static void
+-notify_offline_update_available (GsdUpdatesManager *manager)
+-{
+- NotifyNotification *notification;
+- const gchar *title;
+- const gchar *body;
+- gboolean ret;
+- GError *error = NULL;
+-
+- if (!g_file_query_exists (manager->priv->offline_update_file, NULL))
+- return;
+-
+- if (manager->priv->offline_update_notified)
+- return;
+-
+- manager->priv->offline_update_notified = TRUE;
+-
+- /* don't notify more often than every 5 minutes */
+- g_timeout_add_seconds (300, reenable_offline_update, manager);
+-
+- title = _("Software Updates available");
+- body = _("Important OS and application updates are ready to be installed");
+- notification = notify_notification_new (title, body,
+- GSD_UPDATES_ICON_NORMAL);
+- notify_notification_set_hint_string (notification, "desktop-entry", "gnome-software");
+- notify_notification_set_app_name (notification, _("GNOME Software"));
+- notify_notification_set_timeout (notification, NOTIFY_EXPIRES_NEVER);
+- notify_notification_set_urgency (notification, NOTIFY_URGENCY_NORMAL);
+- notify_notification_add_action (notification, "ignore",
+- /* TRANSLATORS: don't install updates now */
+- _("Not Now"),
+- offline_update_action_cb,
+- manager, NULL);
+- if (g_find_program_in_path ("gnome-software"))
+- notify_notification_add_action (notification, "view",
+- /* TRANSLATORS: view available updates */
+- _("View"),
+- offline_update_action_cb,
+- manager, NULL);
+- else
+- notify_notification_add_action (notification, "install",
+- /* TRANSLATORS: install available updates */
+- _("Restart & Install"),
+- offline_update_action_cb,
+- manager, NULL);
+- g_signal_connect (notification, "closed",
+- G_CALLBACK (on_notification_closed), NULL);
+- ret = notify_notification_show (notification, &error);
+- if (!ret) {
+- g_warning ("error: %s", error->message);
+- g_error_free (error);
+- }
+-}
+-
+-static void
+-offline_update_cb (GFileMonitor *monitor,
+- GFile *file,
+- GFile *other_file,
+- GFileMonitorEvent event_type,
+- GsdUpdatesManager *manager)
+-{
+- notify_offline_update_available (manager);
+-}
+-
+-static gboolean
+-initial_offline_update_check (gpointer data)
+-{
+- GsdUpdatesManager *manager = data;
+-
+- notify_offline_update_available (manager);
+-
+- return G_SOURCE_REMOVE;
+-}
+-
+ gboolean
+ gsd_updates_manager_start (GsdUpdatesManager *manager,
+ GError **error)
+@@ -1506,9 +1424,7 @@ gsd_updates_manager_start (GsdUpdatesManager *manager,
+ g_object_set (manager->priv->task,
+ "background", TRUE,
+ "interactive", FALSE,
+-#if PK_CHECK_VERSION(0,8,1)
+ "only-download", TRUE,
+-#endif
+ NULL);
+
+ /* watch UDev for missing firmware */
+@@ -1574,15 +1490,6 @@ gsd_updates_manager_start (GsdUpdatesManager *manager,
+ check_offline_update_cb,
+ manager);
+
+- manager->priv->offline_update_file = g_file_new_for_path ("/var/lib/PackageKit/prepared-update");
+- manager->priv->offline_update_monitor = g_file_monitor_file (manager->priv->offline_update_file, 0, NULL, NULL);
+- g_signal_connect (manager->priv->offline_update_monitor, "changed",
+- G_CALLBACK (offline_update_cb), manager);
+-
+- g_timeout_add_seconds (300,
+- initial_offline_update_check,
+- manager);
+-
+ /* success */
+ ret = TRUE;
+ g_debug ("Started updates manager");
+@@ -1605,8 +1512,6 @@ gsd_updates_manager_stop (GsdUpdatesManager *manager)
+ g_clear_object (&manager->priv->firmware);
+ g_clear_object (&manager->priv->proxy_session);
+ g_clear_object (&manager->priv->volume_monitor);
+- g_clear_object (&manager->priv->offline_update_file);
+- g_clear_object (&manager->priv->offline_update_monitor);
+ if (manager->priv->cancellable) {
+ g_cancellable_cancel (manager->priv->cancellable);
+ g_clear_object (&manager->priv->cancellable);
More information about the scm-commits
mailing list