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 <[email protected]> +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 <[email protected]> -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
