Hello community,

here is the log from the commit of package gnome-packagekit for 
openSUSE:Factory checked in at 2016-08-16 13:01:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-packagekit (Old)
 and      /work/SRC/openSUSE:Factory/.gnome-packagekit.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gnome-packagekit"

Changes:
--------
--- /work/SRC/openSUSE:Factory/gnome-packagekit/gnome-packagekit.changes        
2016-07-27 16:07:57.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.gnome-packagekit.new/gnome-packagekit.changes   
2016-08-16 13:01:38.000000000 +0200
@@ -1,0 +2,7 @@
+Thu Aug  4 01:24:20 CEST 2016 - h...@suse.com
+
+- Add 
bnc#881245-update-test-affects-package-manager-should-restart-gpk-update-viewer.patch
+  (bsc#881245), 
bnc#939278-gnome-packagekit-asks-for-reboot-password-too-early.patch
+  (bsc#939278), bnc-946886-install-signatures-in-viewer.patch (bsc#946886).
+
+-------------------------------------------------------------------

New:
----
  
bnc#881245-update-test-affects-package-manager-should-restart-gpk-update-viewer.patch
  bnc#939278-gnome-packagekit-asks-for-reboot-password-too-early.patch
  bnc-946886-install-signatures-in-viewer.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gnome-packagekit.spec ++++++
--- /var/tmp/diff_new_pack.DEOE6D/_old  2016-08-16 13:01:39.000000000 +0200
+++ /var/tmp/diff_new_pack.DEOE6D/_new  2016-08-16 13:01:39.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package gnome-packagekit
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -31,6 +31,12 @@
 Patch0:         gnome-packagekit-displaysize.patch
 # PATCH-FEATURE-OPENSUSE -- Only show gnome-packagekit in gnome.
 Patch1:         gnome-packagekit-OnlyShowIn.patch
+# PATCH-FIX-SLED 
bnc#881245-update-test-affects-package-manager-should-restart-gpk-update-viewer.patch
 r...@suse.com -- Restart gpk-update-viewer after certain update.
+Patch2:         
bnc#881245-update-test-affects-package-manager-should-restart-gpk-update-viewer.patch
+# PATCH-FIX-UPSTREAM bnc-946886-install-signatures-in-viewer.patch bsc#946886 
mgo...@suse.com -- install signatures in gpk-update-viewer if needed.
+Patch3:         bnc-946886-install-signatures-in-viewer.patch
+# PATCH-FIX-SLED 
bnc#939278-gnome-packagekit-asks-for-reboot-password-too-early.patch 
r...@suse.com -- Fixed asks for passwd too early.
+Patch4:         
bnc#939278-gnome-packagekit-asks-for-reboot-password-too-early.patch
 BuildRequires:  PackageKit-devel
 BuildRequires:  desktop-file-utils
 BuildRequires:  docbook-utils-minimal
@@ -82,6 +88,9 @@
 # Disabled as a test, I suspect upstream solved the issue an other way.
 #%%patch0 -p1
 %patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
 
 %build
 %configure \

++++++ 
bnc#881245-update-test-affects-package-manager-should-restart-gpk-update-viewer.patch
 ++++++
diff -urp gnome-packagekit-3.20.0.orig/src/gpk-update-viewer.c 
gnome-packagekit-3.20.0/src/gpk-update-viewer.c
--- gnome-packagekit-3.20.0.orig/src/gpk-update-viewer.c        2015-08-19 
07:49:32.000000000 -0500
+++ gnome-packagekit-3.20.0/src/gpk-update-viewer.c     2016-04-13 
15:42:44.669318353 -0500
@@ -220,7 +220,17 @@ gpk_update_viewer_check_restart (void)
                message = _("Some of the updates that were installed require 
you to log out and back in before the changes will be applied.");
                /* TRANSLATORS: the button text for the log out */
                button = _("Log Out");
-
+       } else if (restart_update == PK_RESTART_ENUM_APPLICATION) {
+               /* TRANSLATORS: the message text for the application restart */
+               message = _("Some of the updates that were installed require 
you to restart this application before the changes will be applied.");
+               /* TRANSLATORS: the button text for the application restart */
+               button = _("Restart Application");
+
+                ret = pk_control_suggest_daemon_quit (control, cancellable, 
&error);
+                if (!ret) {
+                    gpk_update_viewer_error_dialog (_("Could not terminate 
PackageKit"), NULL, error->message);
+                    g_error_free (error);
+                }
        } else if (restart_update == PK_RESTART_ENUM_SECURITY_SESSION) {
                /* TRANSLATORS: the message text for the log out */
                message = _("Some of the updates that were installed require 
you to log out and back in to remain secure.");
@@ -273,6 +283,21 @@ gpk_update_viewer_check_restart (void)
                        g_error_free (error);
                }
 #endif
+       } else if (restart_update == PK_RESTART_ENUM_APPLICATION) {
+               char cmd[256] = {0};
+               /* need to wait for PackageKit to finish too */
+               sprintf(cmd, "/bin/bash -c 'while ps -p %d > /dev/null; do 
sleep 1; done; while pgrep packagekitd > /dev/null; do sleep 1; 
done;/usr/bin/gpk-update-viewer'", getpid());
+
+               /* restart asynchronously after gpk-update-viewer was quit */
+               ret = g_spawn_command_line_async (cmd, &error);
+
+               if (!ret) {
+                       gpk_update_viewer_error_dialog (_("Could not restart 
application"), NULL, error->message);
+                       g_error_free (error);
+               }
+
+               /* needed to force gpk-update-viewer to quit */
+               ret = FALSE;
        }
 out:
        return ret;
@@ -461,6 +486,7 @@ gpk_update_viewer_update_packages_cb (Pk
        /* check restart */
        if (restart_update == PK_RESTART_ENUM_SYSTEM ||
            restart_update == PK_RESTART_ENUM_SESSION ||
+           restart_update == PK_RESTART_ENUM_APPLICATION ||
            restart_update == PK_RESTART_ENUM_SECURITY_SESSION ||
            restart_update == PK_RESTART_ENUM_SECURITY_SYSTEM) {
                gpk_update_viewer_check_restart ();
@@ -2066,6 +2092,10 @@ gpk_update_viewer_populate_details (PkUp
                /* TRANSLATORS: reboot required */
                gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, 
_("The computer will have to be restarted after the update for the changes to 
take effect."), -1, "para", NULL);
                gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
+       } else if (restart == PK_RESTART_ENUM_APPLICATION) {
+        /* TRANSLATORS: application restart required */
+        gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("This 
application will have to be restarted after the update for the changes to take 
effect."), -1, "para", NULL);
+        gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
        } else if (restart == PK_RESTART_ENUM_SESSION) {
                /* TRANSLATORS: log out required */
                gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, 
_("You will need to log out and back in after the update for the changes to 
take effect."), -1, "para", NULL);
++++++ bnc#939278-gnome-packagekit-asks-for-reboot-password-too-early.patch 
++++++
Index: gnome-packagekit-3.10.1/src/systemd-proxy.c
===================================================================
--- gnome-packagekit-3.10.1.orig/src/systemd-proxy.c
+++ gnome-packagekit-3.10.1/src/systemd-proxy.c
@@ -63,27 +63,6 @@ systemd_proxy_can_restart (SystemdProxy
                            gboolean      *can_restart,
                            GError       **error)
 {
-        PolkitAuthorizationResult *res;
-        GError *local_error = NULL;
-
-        *can_restart = FALSE;
-        res = polkit_authority_check_authorization_sync (proxy->authority,
-                                                         proxy->subject,
-                                                         SYSTEMD_REBOOT_ACTION,
-                                                         NULL,
-                                                         
POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION,
-                                                         NULL,
-                                                         &local_error);
-        if (res == NULL) {
-                g_propagate_error (error, local_error);
-                return FALSE;
-        }
-
-        *can_restart = polkit_authorization_result_get_is_authorized (res) ||
-                       polkit_authorization_result_get_is_challenge (res);
-
-        g_object_unref (res);
-
         return TRUE;
 }
 
@@ -91,17 +70,32 @@ gboolean
 systemd_proxy_restart (SystemdProxy  *proxy,
                        GError       **error)
 {
-        GDBusConnection *bus;
-
-        bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
-        g_dbus_connection_call_sync (bus,
-                                    SYSTEMD_DBUS_NAME,
-                                    SYSTEMD_DBUS_PATH,
-                                    SYSTEMD_DBUS_INTERFACE,
-                                    "Reboot",
-                                    g_variant_new ("(b)", TRUE),
-                                    NULL, 0, G_MAXINT, NULL, NULL);
-        g_object_unref (bus);
-
-        return TRUE;
+         PolkitAuthorizationResult *res;
+         GDBusConnection *bus;
+         GError *local_error = NULL;
+
+         res = polkit_authority_check_authorization_sync (proxy->authority,
+                                                          proxy->subject,
+                                                          
SYSTEMD_REBOOT_ACTION,
+                                                          NULL,
+                                                          
POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION,
+                                                          NULL,
+                                                          &local_error);
+         if (res == NULL) {
+             g_propagate_error (error, local_error);
+             return FALSE;
+         } else if (polkit_authorization_result_get_is_authorized (res) ||
+                    polkit_authorization_result_get_is_challenge (res)) {
+           bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
+           g_dbus_connection_call_sync (bus,
+                                        SYSTEMD_DBUS_NAME,
+                                        SYSTEMD_DBUS_PATH,
+                                        SYSTEMD_DBUS_INTERFACE,
+                                        "Reboot",
+                                        g_variant_new ("(b)", TRUE),
+                                        NULL, 0, G_MAXINT, NULL, NULL);
+           g_object_unref (bus);
+         }
+         
+         return TRUE;
 }
++++++ bnc-946886-install-signatures-in-viewer.patch ++++++
>From e5582ec970aa61006167e70d2fb5bdd5bcfc8254 Mon Sep 17 00:00:00 2001
From: Mike Gorse <mgo...@suse.com>
Date: Thu, 22 Oct 2015 15:51:08 -0500
Subject: [PATCH] gpk-update-viewer: offer to install signatures if needed

https://bugzilla.gnome.org/show_bug.cgi?id=756991
---
 src/gpk-update-viewer.c | 237 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 237 insertions(+)

diff --git a/src/gpk-update-viewer.c b/src/gpk-update-viewer.c
index 9b08f18..241f034 100644
--- a/src/gpk-update-viewer.c
+++ b/src/gpk-update-viewer.c
@@ -63,6 +63,7 @@ static        GCancellable            *cancellable = NULL;
 static GSettings               *settings = NULL;
 static GPtrArray               *update_array = NULL;
 static GtkBuilder              *builder = NULL;
+static GtkBuilder              *builder_signature = NULL;
 static GtkTreeStore            *array_store_updates = NULL;
 static GtkTextBuffer           *text_buffer = NULL;
 static PkControl               *control = NULL;
@@ -74,6 +75,10 @@ static       GtkWidget               *info_mobile_label = 
NULL;
 static GtkApplication          *application = NULL;
 static PkBitfield               roles = 0;
 static gboolean                 have_available_distro_upgrades = FALSE;
+static GtkWindow *current_window = NULL;
+static PkResults *last_results;
+static gboolean need_signature_for_distro = FALSE;
+static gboolean need_signature_for_update = FALSE;
 
 enum {
        GPK_UPDATES_COLUMN_TEXT,
@@ -2628,6 +2633,168 @@ gpk_update_viewer_packages_to_ids (GPtrArray *array)
        return value;
 }
 
+static void
+gpk_update_viewer_get_distro_upgrades_cb (PkClient *client, GAsyncResult *res, 
gpointer user_data);
+
+static void
+gpk_update_viewer_install_signatures_ready_cb (GObject *source_object, 
GAsyncResult *res, gpointer data)
+{
+       PkResults *results = NULL;
+       GError *error = NULL;
+       PkExitEnum exit_enum;
+
+       /* get the results */
+       results = pk_client_generic_finish (PK_CLIENT(task), res, &error);
+       if (results == NULL) {
+               /* TRANSLATORS: the PackageKit request did not complete, and it 
did not send an error */
+               gpk_update_viewer_error_dialog (_("Could not get updates"), 
NULL, error->message);
+               g_error_free (error);
+               return;
+       }
+
+       /* get exit code */
+       exit_enum = pk_results_get_exit_code (results);
+
+       /* need untrusted */
+       if (exit_enum != PK_EXIT_ENUM_SUCCESS) {
+               PkError *error_code = NULL;
+               error_code = pk_results_get_error_code (results);
+               /* TODO: convert the PkErrorEnum to a PK_CLIENT_ERROR_* enum */
+               g_set_error (&error,
+                            PK_CLIENT_ERROR,
+                            PK_CLIENT_ERROR_FAILED, "failed to install 
signature: %s", pk_error_get_details (error_code));
+               g_object_unref (error_code);
+               return;
+       }
+
+       /* now try the action again */
+       if (need_signature_for_update)
+               gpk_update_viewer_get_new_update_array ();
+
+       if (need_signature_for_distro)
+               pk_client_get_distro_upgrades_async (PK_CLIENT(task), 
cancellable,
+                                                    (PkProgressCallback) 
gpk_update_viewer_progress_cb, NULL,
+                                                    (GAsyncReadyCallback) 
gpk_update_viewer_get_distro_upgrades_cb, NULL);
+
+       need_signature_for_distro = FALSE;
+       need_signature_for_update = FALSE;
+       g_object_unref (results);
+}
+
+static void
+gpk_update_viewer_install_signatures (PkResults *results)
+{
+       PkRepoSignatureRequired *item;
+       PkSigTypeEnum type;
+       GError *error = NULL;
+       gchar *key_id = NULL;
+       gchar *package_id = NULL;
+       GPtrArray *array = NULL;
+
+       /* get results */
+       array = pk_results_get_repo_signature_required_array (results);
+       if (array == NULL || array->len == 0) {
+               g_set_error (&error,
+                            PK_CLIENT_ERROR,
+                            PK_CLIENT_ERROR_FAILED, "no signatures to 
install");
+               return;
+       }
+
+       /* did we get more than result? */
+       if (array->len > 1) {
+               /* TODO: support more than one signature */
+               g_set_error (&error,
+                            PK_CLIENT_ERROR,
+                            PK_CLIENT_ERROR_FAILED, "more than one signature 
to install");
+               g_ptr_array_unref (array);
+               return;
+       }
+
+       /* get first item of data */
+       item = g_ptr_array_index (array, 0);
+       g_object_get (item,
+                     "type", &type,
+                     "key-id", &key_id,
+                     "package-id", &package_id,
+                     NULL);
+
+       /* do new async method */
+       pk_client_install_signature_async (PK_CLIENT(task), type, key_id, 
package_id,
+                                          cancellable, (PkProgressCallback) 
gpk_update_viewer_progress_cb, NULL,
+                                           
gpk_update_viewer_install_signatures_ready_cb, NULL);
+
+       g_free (key_id);
+       g_free (package_id);
+       g_ptr_array_unref (array);
+}
+
+static void
+gpk_update_viewer_key_question (PkResults *results)
+{
+       GPtrArray *array;
+       GtkWidget *widget;
+       gchar *printable = NULL;
+       gchar *package_id = NULL;
+       gchar *repository_name = NULL;
+       gchar *key_url = NULL;
+       gchar *key_userid = NULL;
+       gchar *key_id = NULL;
+       PkRepoSignatureRequired *item;
+  const gchar *help_id;
+       GtkWindow *main_window;
+
+       /* get data */
+       array = pk_results_get_repo_signature_required_array (results);
+       if (array->len != 1) {
+               g_warning ("array length %i, aborting", array->len);
+               goto out;
+       }
+
+       /* only one item supported */
+       item = g_ptr_array_index (array, 0);
+       g_object_get (item,
+                     "package-id", &package_id,
+                     "repository-name", &repository_name,
+                     "key-url", &key_url,
+                     "key-userid", &key_userid,
+                     "key-id", &key_id,
+                     NULL);
+
+       /* show correct text */
+       widget = GTK_WIDGET (gtk_builder_get_object (builder_signature, 
"label_name"));
+       gtk_label_set_label (GTK_LABEL (widget), repository_name);
+       widget = GTK_WIDGET (gtk_builder_get_object (builder_signature, 
"label_url"));
+       gtk_label_set_label (GTK_LABEL (widget), key_url);
+       widget = GTK_WIDGET (gtk_builder_get_object (builder_signature, 
"label_user"));
+       gtk_label_set_label (GTK_LABEL (widget), key_userid);
+       widget = GTK_WIDGET (gtk_builder_get_object (builder_signature, 
"label_id"));
+       gtk_label_set_label (GTK_LABEL (widget), key_id);
+
+       printable = pk_package_id_to_printable (package_id);
+       widget = GTK_WIDGET (gtk_builder_get_object (builder_signature, 
"label_package"));
+       gtk_label_set_label (GTK_LABEL (widget), printable);
+
+       /* show window */
+       current_window = GTK_WINDOW(gtk_builder_get_object (builder_signature, 
"dialog_gpg"));
+       main_window = GTK_WINDOW(gtk_builder_get_object (builder, 
"dialog_updates"));
+       gtk_window_set_transient_for (current_window, main_window);
+               gtk_window_set_modal (current_window, TRUE);
+       /* this is a modal popup, so don't show a window title */
+       gtk_window_set_title (current_window, "");
+       help_id = "gpg-signature";
+       last_results = g_object_ref (results);
+       gtk_widget_show (GTK_WIDGET (current_window));
+
+out:
+       g_free (printable);
+       g_free (package_id);
+       g_free (repository_name);
+       g_free (key_url);
+       g_free (key_userid);
+       g_free (key_id);
+       g_ptr_array_unref (array);
+}
+
 /**
  * gpk_update_viewer_get_updates_cb:
  **/
@@ -2655,6 +2822,7 @@ gpk_update_viewer_get_updates_cb (PkClient *client, 
GAsyncResult *res, gpointer
        PkInfoEnum info;
        gchar *package_id = NULL;
        gchar *summary = NULL;
+       PkExitEnum exit_enum;
 
        /* get the results */
        results = pk_client_generic_finish (client, res, &error);
@@ -2665,6 +2833,16 @@ gpk_update_viewer_get_updates_cb (PkClient *client, 
GAsyncResult *res, gpointer
                goto out;
        }
 
+       exit_enum = pk_results_get_exit_code(results);
+       if (exit_enum == PK_EXIT_ENUM_KEY_REQUIRED) {
+               need_signature_for_update = TRUE;
+               if (!need_signature_for_distro)
+                       gpk_update_viewer_key_question (results);
+               g_object_unref (results);
+               return;
+       }
+
+
        /* check error code */
        error_code = pk_results_get_error_code (results);
        if (error_code != NULL) {
@@ -3072,6 +3250,7 @@ gpk_update_viewer_get_distro_upgrades_cb (PkClient 
*client, GAsyncResult *res, g
        GtkWidget *widget;
        PkError *error_code = NULL;
        GtkWindow *window;
+       PkExitEnum exit_enum;
 
        /* get the results */
        results = pk_client_generic_finish (client, res, &error);
@@ -3087,6 +3266,15 @@ gpk_update_viewer_get_distro_upgrades_cb (PkClient 
*client, GAsyncResult *res, g
        if (error_code != NULL) {
                g_warning ("failed to get list of distro upgrades: %s, %s", 
pk_error_enum_to_string (pk_error_get_code (error_code)), pk_error_get_details 
(error_code));
 
+       exit_enum = pk_results_get_exit_code(results);
+       if (exit_enum == PK_EXIT_ENUM_KEY_REQUIRED) {
+               need_signature_for_distro = TRUE;
+               if (!need_signature_for_update)
+                       gpk_update_viewer_key_question (results);
+               g_object_unref (results);
+               return;
+       }
+
                window = GTK_WINDOW(gtk_builder_get_object (builder, 
"dialog_updates"));
                gpk_error_dialog_modal (window, 
gpk_error_enum_to_localised_text (pk_error_get_code (error_code)),
                                        gpk_error_enum_to_localised_message 
(pk_error_get_code (error_code)), pk_error_get_details (error_code));
@@ -3186,6 +3374,53 @@ gpk_update_viewer_activate_cb (GtkApplication 
*_application, gpointer user_data)
        gtk_window_present (window);
 }
 
+static void
+gpk_update_viewer_button_decline_cb (GtkWidget *widget, gpointer data)
+{
+       gtk_widget_hide (GTK_WIDGET(current_window));
+       current_window = NULL;
+}
+
+static void
+gpk_update_viewer_button_accept_cb (GtkWidget *widget, gpointer data)
+{
+       gtk_widget_hide (GTK_WIDGET(current_window));
+       current_window = NULL;
+       gpk_update_viewer_install_signatures (last_results);
+       g_object_unref (last_results);
+}
+
+static void
+gpk_update_viewer_setup_dialog_signature ()
+{
+       GtkWidget *widget;
+       guint retval;
+       GError *error = NULL;
+
+       /* get UI */
+       builder_signature = gtk_builder_new ();
+       retval = gtk_builder_add_from_file (builder_signature, GPK_DATA 
"/gpk-signature.ui", &error);
+       if (retval == 0) {
+               g_warning ("failed to load ui: %s", error->message);
+               g_error_free (error);
+               return;
+       }
+
+       /* connect up default actions */
+       widget = GTK_WIDGET (gtk_builder_get_object (builder_signature, 
"dialog_gpg"));
+       g_signal_connect (widget, "delete_event", G_CALLBACK 
(gpk_update_viewer_button_decline_cb), task);
+
+       /* set icon name */
+       widget = GTK_WIDGET (gtk_builder_get_object (builder_signature, 
"dialog_gpg"));
+       gtk_window_set_icon_name (GTK_WINDOW(widget), 
GPK_ICON_SOFTWARE_INSTALLER);
+
+       /* connect up buttons */
+       widget = GTK_WIDGET (gtk_builder_get_object (builder_signature, 
"button_yes"));
+       g_signal_connect (widget, "clicked", G_CALLBACK 
(gpk_update_viewer_button_accept_cb), NULL);
+       widget = GTK_WIDGET (gtk_builder_get_object (builder_signature, 
"button_no"));
+       g_signal_connect (widget, "clicked", G_CALLBACK 
(gpk_update_viewer_button_decline_cb), NULL);
+}
+
 /**
  * gpk_update_viewer_application_startup_cb:
  **/
@@ -3243,6 +3478,8 @@ gpk_update_viewer_application_startup_cb (GtkApplication 
*_application, gpointer
                goto out;
        }
 
+       gpk_update_viewer_setup_dialog_signature ();
+
        main_window = GTK_WIDGET(gtk_builder_get_object (builder, 
"dialog_updates"));
        gtk_window_set_icon_name (GTK_WINDOW(main_window), 
GPK_ICON_SOFTWARE_UPDATE);
        gtk_application_add_window (application, GTK_WINDOW(main_window));
-- 
2.1.4


Reply via email to