[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