From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1R3C5S-0008TF-C0 for garchives@archives.gentoo.org; Mon, 12 Sep 2011 19:22:37 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id BE87921C234; Mon, 12 Sep 2011 19:22:21 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 6F99521C234 for ; Mon, 12 Sep 2011 19:22:21 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id A8C311B4010 for ; Mon, 12 Sep 2011 19:22:20 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id AFBE380042 for ; Mon, 12 Sep 2011 19:22:19 +0000 (UTC) From: "Alexandre Restovtsev" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Alexandre Restovtsev" Message-ID: <020ad54276f7d9f03e943a960377d25063ddbabd.tetromino@gentoo> Subject: [gentoo-commits] proj/gnome:gnome-next commit in: gnome-base/gnome-session/files/, gnome-base/gnome-session/ X-VCS-Repository: proj/gnome X-VCS-Files: gnome-base/gnome-session/files/10-user-dirs-update gnome-base/gnome-session/files/10-user-dirs-update-gnome gnome-base/gnome-session/files/gnome-session-3.1.91-dbus-disconnected.patch gnome-base/gnome-session/files/gnome-session-3.1.91-dbus-disconnected2.patch gnome-base/gnome-session/gnome-session-3.1.90.ebuild gnome-base/gnome-session/gnome-session-3.1.91.ebuild gnome-base/gnome-session/gnome-session-9999.ebuild X-VCS-Directories: gnome-base/gnome-session/files/ gnome-base/gnome-session/ X-VCS-Committer: tetromino X-VCS-Committer-Name: Alexandre Restovtsev X-VCS-Revision: 020ad54276f7d9f03e943a960377d25063ddbabd Date: Mon, 12 Sep 2011 19:22:19 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 5a975406016c1a84e25fe3ed0d30f5e2 commit: 020ad54276f7d9f03e943a960377d25063ddbabd Author: Alexandre Rostovtsev gmail com> AuthorDate: Mon Sep 12 19:17:34 2011 +0000 Commit: Alexandre Restovtsev gmail com> CommitDate: Mon Sep 12 19:19:06 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/gnome.git;a=3D= commit;h=3D020ad542 gnome-base/gnome-session: 3.1.90 =E2=86=92 3.1.91 Version bump. Add dbus disconnection patches from upstream git. Sync with recent changes in gx86. --- ...-user-dirs-update =3D> 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 =3D> 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-b= ase/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 @@ =20 # Create various XDG directories, and write ~/.config/user-dirs.dirs, et= c. # 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" =3D "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-dis= connected.patch b/gnome-base/gnome-session/files/gnome-session-3.1.91-dbu= s-disconnected.patch new file mode 100644 index 0000000..7d59672 --- /dev/null +++ b/gnome-base/gnome-session/files/gnome-session-3.1.91-dbus-disconnect= ed.patch @@ -0,0 +1,39 @@ +From 67dd879fbe62bc28d3bbc48b88c3842e2cb827e8 Mon Sep 17 00:00:00 2001 +From: Vincent Untz +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-consolek= it.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 *connecti= on, + DBUS_INTERFACE_LOCAL, "Disconnected= ") && + strcmp (dbus_message_get_path (message), DBUS_PATH_LOCAL) =3D= =3D 0) { + gsm_consolekit_free_dbus (manager); +- return DBUS_HANDLER_RESULT_HANDLED; ++ /* let other filters get this disconnected signal, so t= hat they ++ * can handle it too */ + } +=20 + 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) =3D= =3D 0) { + gsm_shell_disconnect_from_bus (shell); +- return DBUS_HANDLER_RESULT_HANDLED; ++ /* let other filters get this disconnected signal, so t= hat they ++ * can handle it too */ + } +=20 + 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-dis= connected2.patch b/gnome-base/gnome-session/files/gnome-session-3.1.91-db= us-disconnected2.patch new file mode 100644 index 0000000..7684516 --- /dev/null +++ b/gnome-base/gnome-session/files/gnome-session-3.1.91-dbus-disconnect= ed2.patch @@ -0,0 +1,118 @@ +From ae8fa537262d6bec9c7eaa5a963cba98ec4e2136 Mon Sep 17 00:00:00 2001 +From: Vincent Untz +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=3D658481 +--- +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 +=20 + DBusGProxy *bus_proxy; + DBusGConnection *connection; ++ gboolean dbus_disconnected : 1; +=20 + /* Interface with other parts of the system */ + UpClient *up_client; +@@ -1814,6 +1815,11 @@ _disconnect_client (GsmManager *manager, + "phase"); + } +=20 ++ if (manager->priv->dbus_disconnected && GSM_IS_DBUS_CLIENT (cli= ent)) { ++ g_debug ("GsmManager: dbus disconnected, not restarting= application"); ++ goto out; ++ } ++ + if (app =3D=3D NULL) { + g_debug ("GsmManager: unable to find application for cl= ient - not restarting"); + goto out; +@@ -1872,6 +1878,12 @@ _disconnect_dbus_client (const char *id, + return FALSE; + } +=20 ++ /* If no service name, then we simply disconnect all clients */ ++ if (!data->service_name) { ++ _disconnect_client (data->manager, client); ++ return TRUE; ++ } ++ + name =3D 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; + } +=20 ++/** ++ * 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 conne= ction. ++ */ + static void + remove_clients_for_connection (GsmManager *manager, + const char *service_name) +@@ -1968,10 +1989,32 @@ bus_name_owner_changed (DBusGProxy *bus_proxy, + } + } +=20 ++static DBusHandlerResult ++gsm_manager_bus_filter (DBusConnection *connection, ++ DBusMessage *message, ++ void *user_data) ++{ ++ GsmManager *manager; ++ ++ manager =3D GSM_MANAGER (user_data); ++ ++ if (dbus_message_is_signal (message, ++ DBUS_INTERFACE_LOCAL, "Disconnected= ") && ++ strcmp (dbus_message_get_path (message), DBUS_PATH_LOCAL) =3D= =3D 0) { ++ g_debug ("GsmManager: dbus disconnected; disconnecting = dbus clients..."); ++ manager->priv->dbus_disconnected =3D TRUE; ++ remove_clients_for_connection (manager, NULL); ++ /* let other filters get this disconnected signal, so t= hat they ++ * can handle it too */ ++ } ++ ++ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; ++} + static gboolean + register_manager (GsmManager *manager) + { + GError *error =3D NULL; ++ DBusConnection *connection; +=20 + error =3D NULL; + manager->priv->connection =3D dbus_g_bus_get (DBUS_BUS_SESSION,= &error); +@@ -1983,6 +2026,12 @@ register_manager (GsmManager *manager) + exit (1); + } +=20 ++ connection =3D dbus_g_connection_get_connection (manager->priv-= >connection); ++ dbus_connection_add_filter (connection, ++ gsm_manager_bus_filter, ++ manager, NULL); ++ manager->priv->dbus_disconnected =3D FALSE; ++ + manager->priv->bus_proxy =3D dbus_g_proxy_new_for_name (manager= ->priv->connection, + DBUS_SERV= ICE_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=3D"4" GCONF_DEBUG=3D"yes" =20 -inherit gnome2 +inherit eutils gnome2 if [[ ${PV} =3D 9999 ]]; then inherit gnome2-live fi @@ -24,7 +24,7 @@ IUSE=3D"doc ipv6 elibc_FreeBSD" =20 # x11-misc/xdg-user-dirs{,-gtk} are needed to create the various XDG_*_D= IRs, and # create .config/user-dirs.dirs which is read by glib to get G_USER_DIRE= CTORY_* -# xdg-user-dirs-update is run during login (see 10-user-dirs-update belo= w). +# xdg-user-dirs-update is run during login (see 10-user-dirs-update-gnom= e below). # gdk-pixbuf used in the inhibit dialog COMMON_DEPEND=3D">=3Ddev-libs/glib-2.28.0:2 x11-libs/gdk-pixbuf:2 @@ -50,10 +50,12 @@ COMMON_DEPEND=3D">=3Ddev-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=3D"${COMMON_DEPEND} gnome-base/gnome-settings-daemon >=3Dgnome-base/gsettings-desktop-schemas-0.1.7 - >=3Dx11-themes/gnome-themes-standard-2.91.92" + >=3Dx11-themes/gnome-themes-standard-2.91.92 + sys-apps/dbus[X]" DEPEND=3D"${COMMON_DEPEND} >=3Ddev-lang/perl-5 >=3Dsys-devel/gettext-0.10.40 @@ -78,23 +80,30 @@ pkg_setup() { DOCS=3D"AUTHORS ChangeLog NEWS README" } =20 +src_prepare() { + gnome2_src_prepare + # Upstream patches to deal with dbus disconnection; will be in next rel= ease + epatch "${FILESDIR}/${P}-dbus-disconnected.patch" + epatch "${FILESDIR}/${P}-dbus-disconnected2.patch" +} + src_install() { gnome2_src_install =20 - dodir /etc/X11/Sessions || die "dodir failed" + dodir /etc/X11/Sessions exeinto /etc/X11/Sessions - doexe "${FILESDIR}/Gnome" || die "doexe failed" + doexe "${FILESDIR}/Gnome" =20 - 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" =20 - 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" =20 - # 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" } =20 pkg_postinst() { diff --git a/gnome-base/gnome-session/gnome-session-9999.ebuild b/gnome-b= ase/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=3D"doc ipv6 elibc_FreeBSD" =20 # x11-misc/xdg-user-dirs{,-gtk} are needed to create the various XDG_*_D= IRs, and # create .config/user-dirs.dirs which is read by glib to get G_USER_DIRE= CTORY_* -# xdg-user-dirs-update is run during login (see 10-user-dirs-update belo= w). +# xdg-user-dirs-update is run during login (see 10-user-dirs-update-gnom= e below). # gdk-pixbuf used in the inhibit dialog COMMON_DEPEND=3D">=3Ddev-libs/glib-2.28.0:2 x11-libs/gdk-pixbuf:2 @@ -50,10 +50,12 @@ COMMON_DEPEND=3D">=3Ddev-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=3D"${COMMON_DEPEND} gnome-base/gnome-settings-daemon >=3Dgnome-base/gsettings-desktop-schemas-0.1.7 - >=3Dx11-themes/gnome-themes-standard-2.91.92" + >=3Dx11-themes/gnome-themes-standard-2.91.92 + sys-apps/dbus[X]" DEPEND=3D"${COMMON_DEPEND} >=3Ddev-lang/perl-5 >=3Dsys-devel/gettext-0.10.40 @@ -81,20 +83,20 @@ pkg_setup() { src_install() { gnome2_src_install =20 - dodir /etc/X11/Sessions || die "dodir failed" + dodir /etc/X11/Sessions exeinto /etc/X11/Sessions - doexe "${FILESDIR}/Gnome" || die "doexe failed" + doexe "${FILESDIR}/Gnome" =20 - 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" =20 - 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" =20 - # 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" } =20 pkg_postinst() {