[arch-commits] Commit in cinnamon/trunk (3 files)

Eli Schwartz eschwartz at archlinux.org
Mon Apr 30 17:44:16 UTC 2018


    Date: Monday, April 30, 2018 @ 17:44:15
  Author: eschwartz
Revision: 318526

upgpkg: cinnamon 3.8.0-2

https://bbs.archlinux.org/viewtopic.php?id=236586
FS#58407

Revert problematic commit for now, until upstream can track down the cause and
fix this properly.

Added:
  cinnamon/trunk/0001-Revert-shell-embedded-window-change-realize-to-map-6.patch
Modified:
  cinnamon/trunk/PKGBUILD
Deleted:
  cinnamon/trunk/0001-cs_user.py-Add-compatibility-for-multiple-pam-module.patch

-----------------------------------------------------------------+
 0001-Revert-shell-embedded-window-change-realize-to-map-6.patch |  132 ++++++++++
 0001-cs_user.py-Add-compatibility-for-multiple-pam-module.patch |  105 -------
 PKGBUILD                                                        |    7 
 3 files changed, 138 insertions(+), 106 deletions(-)

Added: 0001-Revert-shell-embedded-window-change-realize-to-map-6.patch
===================================================================
--- 0001-Revert-shell-embedded-window-change-realize-to-map-6.patch	                        (rev 0)
+++ 0001-Revert-shell-embedded-window-change-realize-to-map-6.patch	2018-04-30 17:44:15 UTC (rev 318526)
@@ -0,0 +1,132 @@
+From 5fed38ca58d7f696c13b67dda5f55f4a825ffcdb Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz93 at gmail.com>
+Date: Mon, 30 Apr 2018 09:12:08 -0400
+Subject: [PATCH] Revert "shell-embedded-window: change realize to map (#6965)"
+
+Try to fix crashes reported in https://github.com/linuxmint/Cinnamon/issues/7522
+
+This reverts commit fa9a5c78bfbb6c15b126bf1d79f7d816fecb7b36.
+---
+ src/cinnamon-embedded-window-private.h |  4 ++--
+ src/cinnamon-embedded-window.c         | 19 ++++++++++++++-----
+ src/cinnamon-gtk-embed.c               | 18 +++++++++---------
+ 3 files changed, 25 insertions(+), 16 deletions(-)
+
+diff --git a/src/cinnamon-embedded-window-private.h b/src/cinnamon-embedded-window-private.h
+index 7e3bd8c1..754ee313 100644
+--- a/src/cinnamon-embedded-window-private.h
++++ b/src/cinnamon-embedded-window-private.h
+@@ -14,7 +14,7 @@ void _cinnamon_embedded_window_allocate (CinnamonEmbeddedWindow *window,
+ 				      int                  width,
+ 				      int                  height);
+ 
+-void _cinnamon_embedded_window_map   (CinnamonEmbeddedWindow *window);
+-void _cinnamon_embedded_window_unmap (CinnamonEmbeddedWindow *window);
++void _cinnamon_embedded_window_realize   (CinnamonEmbeddedWindow *window);
++void _cinnamon_embedded_window_unrealize (CinnamonEmbeddedWindow *window);
+ 
+ #endif /* __CINNAMON_EMBEDDED_WINDOW_PRIVATE_H__ */
+diff --git a/src/cinnamon-embedded-window.c b/src/cinnamon-embedded-window.c
+index 9e3e1316..d2b0512e 100644
+--- a/src/cinnamon-embedded-window.c
++++ b/src/cinnamon-embedded-window.c
+@@ -19,11 +19,20 @@
+  *  - CinnamonGtkEmbed is created for the CinnamonEmbeddedWindow
+  *  - actor is added to a stage
+  *
+- * The GtkWindow is mapped if and only if both:
++ * Ideally, the way it would work is that the GtkWindow is mapped
++ * if and only if both:
+  *
+- * - gtk_window_visible (window) [widget has been shown]
++ * - GTK_WIDGET_VISIBLE (window) [widget has been shown]
+  * - Actor is mapped [actor and all parents visible, actor in stage]
+  *
++ * Implementing this perfectly is not currently possible, due to problems
++ * in Clutter, see:
++ *
++ * http://bugzilla.openedhand.com/show_bug.cgi?id=1138
++ *
++ * So until that is fixed we use the "realized" state of the ClutterActor
++ * as a stand-in for the ideal mapped state, this will work as long
++ * as the ClutterActor and all its parents are in fact visible.
+  */
+ 
+ G_DEFINE_TYPE (CinnamonEmbeddedWindow, cinnamon_embedded_window, GTK_TYPE_WINDOW);
+@@ -221,7 +230,7 @@ _cinnamon_embedded_window_set_actor (CinnamonEmbeddedWindow  *window,
+   window->priv->actor = actor;
+ 
+   if (actor &&
+-      clutter_actor_is_mapped (CLUTTER_ACTOR (actor)) &&
++      clutter_actor_is_realized (CLUTTER_ACTOR (actor)) &&
+       gtk_widget_get_visible (GTK_WIDGET (window)))
+     gtk_widget_map (GTK_WIDGET (window));
+ }
+@@ -261,7 +270,7 @@ _cinnamon_embedded_window_allocate (CinnamonEmbeddedWindow *window,
+ }
+ 
+ void
+-_cinnamon_embedded_window_map (CinnamonEmbeddedWindow *window)
++_cinnamon_embedded_window_realize (CinnamonEmbeddedWindow *window)
+ {
+   g_return_if_fail (CINNAMON_IS_EMBEDDED_WINDOW (window));
+ 
+@@ -270,7 +279,7 @@ _cinnamon_embedded_window_map (CinnamonEmbeddedWindow *window)
+ }
+ 
+ void
+-_cinnamon_embedded_window_unmap (CinnamonEmbeddedWindow *window)
++_cinnamon_embedded_window_unrealize (CinnamonEmbeddedWindow *window)
+ {
+   g_return_if_fail (CINNAMON_IS_EMBEDDED_WINDOW (window));
+ 
+diff --git a/src/cinnamon-gtk-embed.c b/src/cinnamon-gtk-embed.c
+index 8879b3f0..4b4a9ded 100644
+--- a/src/cinnamon-gtk-embed.c
++++ b/src/cinnamon-gtk-embed.c
+@@ -199,24 +199,24 @@ cinnamon_gtk_embed_allocate (ClutterActor          *actor,
+ }
+ 
+ static void
+-cinnamon_gtk_embed_map (ClutterActor *actor)
++cinnamon_gtk_embed_realize (ClutterActor *actor)
+ {
+   CinnamonGtkEmbed *embed = CINNAMON_GTK_EMBED (actor);
+ 
+-  _cinnamon_embedded_window_map (embed->priv->window);
++  _cinnamon_embedded_window_realize (embed->priv->window);
+ 
+-  CLUTTER_ACTOR_CLASS (cinnamon_gtk_embed_parent_class)->map (actor);
++  CLUTTER_ACTOR_CLASS (cinnamon_gtk_embed_parent_class)->realize (actor);
+ }
+ 
+ static void
+-cinnamon_gtk_embed_unmap (ClutterActor *actor)
++cinnamon_gtk_embed_unrealize (ClutterActor *actor)
+ {
+   CinnamonGtkEmbed *embed = CINNAMON_GTK_EMBED (actor);
+-
++  
+   if (embed->priv->window)
+-    _cinnamon_embedded_window_unmap (embed->priv->window);
++    _cinnamon_embedded_window_unrealize (embed->priv->window);
+ 
+-  CLUTTER_ACTOR_CLASS (cinnamon_gtk_embed_parent_class)->unmap (actor);
++  CLUTTER_ACTOR_CLASS (cinnamon_gtk_embed_parent_class)->unrealize (actor);
+ }
+ 
+ static void
+@@ -244,8 +244,8 @@ cinnamon_gtk_embed_class_init (CinnamonGtkEmbedClass *klass)
+   actor_class->get_preferred_width = cinnamon_gtk_embed_get_preferred_width;
+   actor_class->get_preferred_height = cinnamon_gtk_embed_get_preferred_height;
+   actor_class->allocate = cinnamon_gtk_embed_allocate;
+-  actor_class->map = cinnamon_gtk_embed_map;
+-  actor_class->unmap = cinnamon_gtk_embed_unmap;
++  actor_class->realize = cinnamon_gtk_embed_realize;
++  actor_class->unrealize = cinnamon_gtk_embed_unrealize;
+ 
+   g_object_class_install_property (object_class,
+                                    PROP_WINDOW,
+-- 
+2.17.0
+

Deleted: 0001-cs_user.py-Add-compatibility-for-multiple-pam-module.patch
===================================================================
--- 0001-cs_user.py-Add-compatibility-for-multiple-pam-module.patch	2018-04-30 16:21:06 UTC (rev 318525)
+++ 0001-cs_user.py-Add-compatibility-for-multiple-pam-module.patch	2018-04-30 17:44:15 UTC (rev 318526)
@@ -1,105 +0,0 @@
-From b5407422e20b44936134e2e22c4fa25bcb555d75 Mon Sep 17 00:00:00 2001
-From: Eli Schwartz <eschwartz93 at gmail.com>
-Date: Tue, 6 Mar 2018 10:30:14 -0500
-Subject: [PATCH] cs_user.py: Add compatibility for multiple pam modules
-
-Rework the authentication handling to work with either backend module:
-- python pam, ctypes bindings created by Chris Atlee, available on PyPI
-  and some distros. Forked for python3 support, and available at PyPI as
-  python-pam and https://github.com/FirefighterBlu3/python-pam
-- python PyPAM, CPython binary extension, available on some other
-  distros, and referencing a dead upstream website (Debian hosts and
-  builds from *_orig.tar.gz so it is still able to be built).
-
-The current method allows importing either module without failure, but
-then spawns internal errors if pam is used instead of PyPAM due to the
-two modules containing entirely different APIs.
-
-Also re-raise internal errors and change the tooltip to indicate that
-something went wrong. If something unidentifiable happened, error
-messages should not be ruthlessly squelched -- this hindered my efforts
-to discover why pam was not working on Arch Linux in the first place.
-
-Fixes #7313
-
-(cherry picked from commit a29c68383c3758e6a6b85e9ee2b5a6b41b8147ba)
----
- .../cinnamon/cinnamon-settings/modules/cs_user.py  | 39 ++++++++++++++++------
- 1 file changed, 29 insertions(+), 10 deletions(-)
-
-diff --git a/files/usr/share/cinnamon/cinnamon-settings/modules/cs_user.py b/files/usr/share/cinnamon/cinnamon-settings/modules/cs_user.py
-index 8e4dceea..f4e64edf 100755
---- a/files/usr/share/cinnamon/cinnamon-settings/modules/cs_user.py
-+++ b/files/usr/share/cinnamon/cinnamon-settings/modules/cs_user.py
-@@ -1,9 +1,10 @@
- #!/usr/bin/python2
- 
- try:
--    import PAM
-+    import pam
- except:
--    import pam as PAM
-+    import PAM
-+    pam = None
- import pexpect
- import time
- from random import randint
-@@ -18,6 +19,10 @@ from gi.repository import AccountsService, GLib
- 
- from GSettingsWidgets import *
- 
-+class PasswordError(Exception):
-+    '''Exception raised when an incorrect password is supplied.'''
-+    pass
-+
- 
- class Module:
-     name = "user"
-@@ -342,22 +347,36 @@ class PasswordDialog(Gtk.Dialog):
-     def _on_show_password_toggled(self, widget):
-         self.set_passwords_visibility()
- 
-+    def auth_pam(self):
-+        if not pam.authenticate(GLib.get_user_name(), self.current_password.get_text(), 'passwd'):
-+            raise PasswordError("Invalid password")
-+
-+    def auth_PyPAM(self):
-+        auth = PAM.pam()
-+        auth.start('passwd')
-+        auth.set_item(PAM.PAM_USER, GLib.get_user_name())
-+        auth.set_item(PAM.PAM_CONV, self.pam_conv)
-+        try:
-+            auth.authenticate()
-+            auth.acct_mgmt()
-+            return True
-+        except PAM.error as resp:
-+            raise PasswordError("Invalid password")
-+
-     def _on_current_password_changed(self, widget, event):
-         self.infobar.hide()
-         if self.current_password.get_text() != "":
--            auth = PAM.pam()
--            auth.start('passwd')
--            auth.set_item(PAM.PAM_USER, GLib.get_user_name())
--            auth.set_item(PAM.PAM_CONV, self.pam_conv)
-             try:
--                auth.authenticate()
--                auth.acct_mgmt()
--            except PAM.error, resp:
-+                self.auth_pam() if pam else self.auth_PyPAM()
-+            except PasswordError:
-                 self.current_password.set_icon_from_stock(Gtk.EntryIconPosition.SECONDARY, Gtk.STOCK_DIALOG_WARNING)
-                 self.current_password.set_icon_tooltip_text(Gtk.EntryIconPosition.SECONDARY, _("Wrong password"))
-                 self.correct_current_password = False
-             except:
--                print 'Internal error'
-+                self.current_password.set_icon_from_stock(Gtk.EntryIconPosition.SECONDARY, Gtk.STOCK_DIALOG_WARNING)
-+                self.current_password.set_icon_tooltip_text(Gtk.EntryIconPosition.SECONDARY, _("Internal Error"))
-+                self.correct_current_password = False
-+                raise
-             else:
-                 self.current_password.set_icon_from_stock(Gtk.EntryIconPosition.SECONDARY, None)
-                 self.correct_current_password = True
--- 
-2.16.2
-

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2018-04-30 16:21:06 UTC (rev 318525)
+++ PKGBUILD	2018-04-30 17:44:15 UTC (rev 318526)
@@ -7,7 +7,7 @@
 
 pkgname=cinnamon
 pkgver=3.8.0
-pkgrel=1
+pkgrel=2
 pkgdesc="Linux desktop which provides advanced innovative features and a traditional user experience"
 arch=('x86_64')
 url="https://github.com/linuxmint/Cinnamon"
@@ -26,10 +26,12 @@
 options=('!emptydirs')
 source=("${pkgname}-${pkgver}.tar.gz::${url}/archive/${pkgver}.tar.gz"
         "0001-cinanmon-settings-don-t-rely-on-the-presence-of-cinn.patch::${url}/pull/7382.patch"
+        "0001-Revert-shell-embedded-window-change-realize-to-map-6.patch"
         "set_wheel.patch"
         "default-theme.patch")
 sha512sums=('5b5129a71e650470935f3bdabf3052a47d4673c31927308d311e638ccff5073e7ab9aee526f66b90b8b77de0a66e91eaaad9033d716379c680cc524851694e82'
             'a0a9f4d25053fe96f9b1495394adb829252367099931d3f0e9bdfd2371093b4e86ff13fc945301b3a59691bbb7ee14da89e68c4ef3d8e7a1b5ec6bdedccb9137'
+            '331f1a688945c92fb52c492b7d5c8bbf7816076a122b367c65c17e40af678068ed239b6a62d305e018d971c6b746449194181768845f7e438bb0311341b0dead'
             'fd7e117054996ed1c3dfd0f968c2bf98ca4fcee9a100221f8839a232147745ec0140e1f68eeffba58a3c44f66f26e05d433648a7a28858ec669524f7266ba04c'
             '3c460141b277df61c4546cc311fa5ecc7e7ea19a7d39a92d1d0214c37a91b4e163bc91823df7098bd2cf6fb430361cdb9839ab96abe53fe82f2a735e187de563')
 
@@ -36,6 +38,9 @@
 prepare() {
     cd "${srcdir}"/Cinnamon-${pkgver}
 
+    # https://github.com/linuxmint/Cinnamon/issues/7522
+    patch -p1 -i ../0001-Revert-shell-embedded-window-change-realize-to-map-6.patch
+
     # Check for the cc-panel module path, not for the irrelevant binary
     patch -p1 -i ../0001-cinanmon-settings-don-t-rely-on-the-presence-of-cinn.patch
 



More information about the arch-commits mailing list