From: "Alexandre Restovtsev" <tetromino@gmail.com>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gnome:gnome-next commit in: gnome-base/gnome-session/files/, gnome-base/gnome-session/
Date: Mon, 12 Sep 2011 19:22:19 +0000 (UTC) [thread overview]
Message-ID: <020ad54276f7d9f03e943a960377d25063ddbabd.tetromino@gentoo> (raw)
commit: 020ad54276f7d9f03e943a960377d25063ddbabd
Author: Alexandre Rostovtsev <tetromino <AT> gmail <DOT> com>
AuthorDate: Mon Sep 12 19:17:34 2011 +0000
Commit: Alexandre Restovtsev <tetromino <AT> gmail <DOT> com>
CommitDate: Mon Sep 12 19:19:06 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=020ad542
gnome-base/gnome-session: 3.1.90 → 3.1.91
Version bump. Add dbus disconnection patches from upstream git. Sync
with recent changes in gx86.
---
...-user-dirs-update => 10-user-dirs-update-gnome} | 7 +-
.../gnome-session-3.1.91-dbus-disconnected.patch | 39 +++++++
.../gnome-session-3.1.91-dbus-disconnected2.patch | 118 ++++++++++++++++++++
...n-3.1.90.ebuild => gnome-session-3.1.91.ebuild} | 31 ++++--
gnome-base/gnome-session/gnome-session-9999.ebuild | 22 ++--
5 files changed, 194 insertions(+), 23 deletions(-)
diff --git a/gnome-base/gnome-session/files/10-user-dirs-update b/gnome-base/gnome-session/files/10-user-dirs-update-gnome
similarity index 55%
rename from gnome-base/gnome-session/files/10-user-dirs-update
rename to gnome-base/gnome-session/files/10-user-dirs-update-gnome
index 317f095..f909d44 100644
--- a/gnome-base/gnome-session/files/10-user-dirs-update
+++ b/gnome-base/gnome-session/files/10-user-dirs-update-gnome
@@ -2,6 +2,9 @@
# Create various XDG directories, and write ~/.config/user-dirs.dirs, etc.
# That file is read by glib to get XDG_PICTURES_DIR, etc
-if type xdg-user-dirs-update &>/dev/null; then
- xdg-user-dirs-update
+
+if [ "$DESKTOP_SESSION" = "gnome" ]; then
+ if type xdg-user-dirs-update &>/dev/null; then
+ xdg-user-dirs-update
+ fi
fi
diff --git a/gnome-base/gnome-session/files/gnome-session-3.1.91-dbus-disconnected.patch b/gnome-base/gnome-session/files/gnome-session-3.1.91-dbus-disconnected.patch
new file mode 100644
index 0000000..7d59672
--- /dev/null
+++ b/gnome-base/gnome-session/files/gnome-session-3.1.91-dbus-disconnected.patch
@@ -0,0 +1,39 @@
+From 67dd879fbe62bc28d3bbc48b88c3842e2cb827e8 Mon Sep 17 00:00:00 2001
+From: Vincent Untz <vuntz@gnome.org>
+Date: Fri, 09 Sep 2011 07:51:54 +0000
+Subject: gsm: Never mark as handled the Disconnected signal from dbus
+
+Disconnected is emitted when dbus is quitting. And all the dbus filters
+might be interested in this signal, so never mark it as handled when we
+look at it.
+---
+diff --git a/gnome-session/gsm-consolekit.c b/gnome-session/gsm-consolekit.c
+index f53993f..66bebd1 100644
+--- a/gnome-session/gsm-consolekit.c
++++ b/gnome-session/gsm-consolekit.c
+@@ -152,7 +152,8 @@ gsm_consolekit_dbus_filter (DBusConnection *connection,
+ DBUS_INTERFACE_LOCAL, "Disconnected") &&
+ strcmp (dbus_message_get_path (message), DBUS_PATH_LOCAL) == 0) {
+ gsm_consolekit_free_dbus (manager);
+- return DBUS_HANDLER_RESULT_HANDLED;
++ /* let other filters get this disconnected signal, so that they
++ * can handle it too */
+ }
+
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+diff --git a/gnome-session/gsm-shell.c b/gnome-session/gsm-shell.c
+index 0b26f09..9785160 100644
+--- a/gnome-session/gsm-shell.c
++++ b/gnome-session/gsm-shell.c
+@@ -228,7 +228,8 @@ gsm_shell_bus_filter (DBusConnection *connection,
+ DBUS_INTERFACE_LOCAL, "Disconnected") &&
+ strcmp (dbus_message_get_path (message), DBUS_PATH_LOCAL) == 0) {
+ gsm_shell_disconnect_from_bus (shell);
+- return DBUS_HANDLER_RESULT_HANDLED;
++ /* let other filters get this disconnected signal, so that they
++ * can handle it too */
+ }
+
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+--
+cgit v0.9.0.2
diff --git a/gnome-base/gnome-session/files/gnome-session-3.1.91-dbus-disconnected2.patch b/gnome-base/gnome-session/files/gnome-session-3.1.91-dbus-disconnected2.patch
new file mode 100644
index 0000000..7684516
--- /dev/null
+++ b/gnome-base/gnome-session/files/gnome-session-3.1.91-dbus-disconnected2.patch
@@ -0,0 +1,118 @@
+From ae8fa537262d6bec9c7eaa5a963cba98ec4e2136 Mon Sep 17 00:00:00 2001
+From: Vincent Untz <vuntz@gnome.org>
+Date: Fri, 09 Sep 2011 07:54:14 +0000
+Subject: gsm: Disconnect all dbus clients when dbus is disconnected
+
+When we receive the Disconnected signal from dbus on the session bus,
+then we know we won't be able to talk to dbus clients anymore, so mark
+them as disconnected. Also, do not restart them even if they're supposed
+to be autorestarted, as we won't be able to track them.
+
+At this point, the session is kind of hosed. We could possibly decide
+to simply leave, but we don't do it in case it's a user session and
+there's unsaved data.
+
+This helps a lot in the case of the gdm greeter, see
+https://bugzilla.gnome.org/show_bug.cgi?id=658481
+---
+diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
+index b531197..2d74d40 100644
+--- a/gnome-session/gsm-manager.c
++++ b/gnome-session/gsm-manager.c
+@@ -151,6 +151,7 @@ struct GsmManagerPrivate
+
+ DBusGProxy *bus_proxy;
+ DBusGConnection *connection;
++ gboolean dbus_disconnected : 1;
+
+ /* Interface with other parts of the system */
+ UpClient *up_client;
+@@ -1814,6 +1815,11 @@ _disconnect_client (GsmManager *manager,
+ "phase");
+ }
+
++ if (manager->priv->dbus_disconnected && GSM_IS_DBUS_CLIENT (client)) {
++ g_debug ("GsmManager: dbus disconnected, not restarting application");
++ goto out;
++ }
++
+ if (app == NULL) {
+ g_debug ("GsmManager: unable to find application for client - not restarting");
+ goto out;
+@@ -1872,6 +1878,12 @@ _disconnect_dbus_client (const char *id,
+ return FALSE;
+ }
+
++ /* If no service name, then we simply disconnect all clients */
++ if (!data->service_name) {
++ _disconnect_client (data->manager, client);
++ return TRUE;
++ }
++
+ name = gsm_dbus_client_get_bus_name (GSM_DBUS_CLIENT (client));
+ if (IS_STRING_EMPTY (name)) {
+ return FALSE;
+@@ -1885,6 +1897,15 @@ _disconnect_dbus_client (const char *id,
+ return FALSE;
+ }
+
++/**
++ * remove_clients_for_connection:
++ * @manager: a #GsmManager
++ * @service_name: a service name
++ *
++ * Disconnects clients that own @service_name.
++ *
++ * If @service_name is NULL, then disconnects all clients for the connection.
++ */
+ static void
+ remove_clients_for_connection (GsmManager *manager,
+ const char *service_name)
+@@ -1968,10 +1989,32 @@ bus_name_owner_changed (DBusGProxy *bus_proxy,
+ }
+ }
+
++static DBusHandlerResult
++gsm_manager_bus_filter (DBusConnection *connection,
++ DBusMessage *message,
++ void *user_data)
++{
++ GsmManager *manager;
++
++ manager = GSM_MANAGER (user_data);
++
++ if (dbus_message_is_signal (message,
++ DBUS_INTERFACE_LOCAL, "Disconnected") &&
++ strcmp (dbus_message_get_path (message), DBUS_PATH_LOCAL) == 0) {
++ g_debug ("GsmManager: dbus disconnected; disconnecting dbus clients...");
++ manager->priv->dbus_disconnected = TRUE;
++ remove_clients_for_connection (manager, NULL);
++ /* let other filters get this disconnected signal, so that they
++ * can handle it too */
++ }
++
++ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
++}
+ static gboolean
+ register_manager (GsmManager *manager)
+ {
+ GError *error = NULL;
++ DBusConnection *connection;
+
+ error = NULL;
+ manager->priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
+@@ -1983,6 +2026,12 @@ register_manager (GsmManager *manager)
+ exit (1);
+ }
+
++ connection = dbus_g_connection_get_connection (manager->priv->connection);
++ dbus_connection_add_filter (connection,
++ gsm_manager_bus_filter,
++ manager, NULL);
++ manager->priv->dbus_disconnected = FALSE;
++
+ manager->priv->bus_proxy = dbus_g_proxy_new_for_name (manager->priv->connection,
+ DBUS_SERVICE_DBUS,
+ DBUS_PATH_DBUS,
+--
+cgit v0.9.0.2
diff --git a/gnome-base/gnome-session/gnome-session-3.1.90.ebuild b/gnome-base/gnome-session/gnome-session-3.1.91.ebuild
similarity index 79%
rename from gnome-base/gnome-session/gnome-session-3.1.90.ebuild
rename to gnome-base/gnome-session/gnome-session-3.1.91.ebuild
index eb488ef..2074a82 100644
--- a/gnome-base/gnome-session/gnome-session-3.1.90.ebuild
+++ b/gnome-base/gnome-session/gnome-session-3.1.91.ebuild
@@ -5,7 +5,7 @@
EAPI="4"
GCONF_DEBUG="yes"
-inherit gnome2
+inherit eutils gnome2
if [[ ${PV} = 9999 ]]; then
inherit gnome2-live
fi
@@ -24,7 +24,7 @@ IUSE="doc ipv6 elibc_FreeBSD"
# x11-misc/xdg-user-dirs{,-gtk} are needed to create the various XDG_*_DIRs, and
# create .config/user-dirs.dirs which is read by glib to get G_USER_DIRECTORY_*
-# xdg-user-dirs-update is run during login (see 10-user-dirs-update below).
+# xdg-user-dirs-update is run during login (see 10-user-dirs-update-gnome below).
# gdk-pixbuf used in the inhibit dialog
COMMON_DEPEND=">=dev-libs/glib-2.28.0:2
x11-libs/gdk-pixbuf:2
@@ -50,10 +50,12 @@ COMMON_DEPEND=">=dev-libs/glib-2.28.0:2
# Pure-runtime deps from the session files should *NOT* be added here
# Otherwise, things like gdm pull in gnome-shell
# gnome-themes-standard is needed for the failwhale dialog themeing
+# sys-apps/dbus[X] is needed for session management
RDEPEND="${COMMON_DEPEND}
gnome-base/gnome-settings-daemon
>=gnome-base/gsettings-desktop-schemas-0.1.7
- >=x11-themes/gnome-themes-standard-2.91.92"
+ >=x11-themes/gnome-themes-standard-2.91.92
+ sys-apps/dbus[X]"
DEPEND="${COMMON_DEPEND}
>=dev-lang/perl-5
>=sys-devel/gettext-0.10.40
@@ -78,23 +80,30 @@ pkg_setup() {
DOCS="AUTHORS ChangeLog NEWS README"
}
+src_prepare() {
+ gnome2_src_prepare
+ # Upstream patches to deal with dbus disconnection; will be in next release
+ epatch "${FILESDIR}/${P}-dbus-disconnected.patch"
+ epatch "${FILESDIR}/${P}-dbus-disconnected2.patch"
+}
+
src_install() {
gnome2_src_install
- dodir /etc/X11/Sessions || die "dodir failed"
+ dodir /etc/X11/Sessions
exeinto /etc/X11/Sessions
- doexe "${FILESDIR}/Gnome" || die "doexe failed"
+ doexe "${FILESDIR}/Gnome"
- dodir /usr/share/gnome/applications/ || die
+ dodir /usr/share/gnome/applications/
insinto /usr/share/gnome/applications/
- doins "${FILESDIR}/defaults.list" || die
+ doins "${FILESDIR}/defaults.list"
- dodir /etc/X11/xinit/xinitrc.d/ || die
+ dodir /etc/X11/xinit/xinitrc.d/
exeinto /etc/X11/xinit/xinitrc.d/
- doexe "${FILESDIR}/15-xdg-data-gnome" || die
+ doexe "${FILESDIR}/15-xdg-data-gnome"
- # FIXME: this should be done by x11-misc/xdg-user-dirs
- doexe "${FILESDIR}/10-user-dirs-update" || die "doexe failed"
+ # This should be done here as discussed in bug #270852
+ doexe "${FILESDIR}/10-user-dirs-update-gnome"
}
pkg_postinst() {
diff --git a/gnome-base/gnome-session/gnome-session-9999.ebuild b/gnome-base/gnome-session/gnome-session-9999.ebuild
index eb488ef..7523909 100644
--- a/gnome-base/gnome-session/gnome-session-9999.ebuild
+++ b/gnome-base/gnome-session/gnome-session-9999.ebuild
@@ -24,7 +24,7 @@ IUSE="doc ipv6 elibc_FreeBSD"
# x11-misc/xdg-user-dirs{,-gtk} are needed to create the various XDG_*_DIRs, and
# create .config/user-dirs.dirs which is read by glib to get G_USER_DIRECTORY_*
-# xdg-user-dirs-update is run during login (see 10-user-dirs-update below).
+# xdg-user-dirs-update is run during login (see 10-user-dirs-update-gnome below).
# gdk-pixbuf used in the inhibit dialog
COMMON_DEPEND=">=dev-libs/glib-2.28.0:2
x11-libs/gdk-pixbuf:2
@@ -50,10 +50,12 @@ COMMON_DEPEND=">=dev-libs/glib-2.28.0:2
# Pure-runtime deps from the session files should *NOT* be added here
# Otherwise, things like gdm pull in gnome-shell
# gnome-themes-standard is needed for the failwhale dialog themeing
+# sys-apps/dbus[X] is needed for session management
RDEPEND="${COMMON_DEPEND}
gnome-base/gnome-settings-daemon
>=gnome-base/gsettings-desktop-schemas-0.1.7
- >=x11-themes/gnome-themes-standard-2.91.92"
+ >=x11-themes/gnome-themes-standard-2.91.92
+ sys-apps/dbus[X]"
DEPEND="${COMMON_DEPEND}
>=dev-lang/perl-5
>=sys-devel/gettext-0.10.40
@@ -81,20 +83,20 @@ pkg_setup() {
src_install() {
gnome2_src_install
- dodir /etc/X11/Sessions || die "dodir failed"
+ dodir /etc/X11/Sessions
exeinto /etc/X11/Sessions
- doexe "${FILESDIR}/Gnome" || die "doexe failed"
+ doexe "${FILESDIR}/Gnome"
- dodir /usr/share/gnome/applications/ || die
+ dodir /usr/share/gnome/applications/
insinto /usr/share/gnome/applications/
- doins "${FILESDIR}/defaults.list" || die
+ doins "${FILESDIR}/defaults.list"
- dodir /etc/X11/xinit/xinitrc.d/ || die
+ dodir /etc/X11/xinit/xinitrc.d/
exeinto /etc/X11/xinit/xinitrc.d/
- doexe "${FILESDIR}/15-xdg-data-gnome" || die
+ doexe "${FILESDIR}/15-xdg-data-gnome"
- # FIXME: this should be done by x11-misc/xdg-user-dirs
- doexe "${FILESDIR}/10-user-dirs-update" || die "doexe failed"
+ # This should be done here as discussed in bug #270852
+ doexe "${FILESDIR}/10-user-dirs-update-gnome"
}
pkg_postinst() {
next reply other threads:[~2011-09-12 19:22 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-12 19:22 Alexandre Restovtsev [this message]
-- strict thread matches above, loose matches on Subject: below --
2011-09-26 18:43 [gentoo-commits] proj/gnome:gnome-next commit in: gnome-base/gnome-session/files/, gnome-base/gnome-session/ Alexandre Restovtsev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=020ad54276f7d9f03e943a960377d25063ddbabd.tetromino@gentoo \
--to=tetromino@gmail.com \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox