diff options
Diffstat (limited to 'testing/gnome-settings-daemon')
-rw-r--r-- | testing/gnome-settings-daemon/PKGBUILD | 39 | ||||
-rw-r--r-- | testing/gnome-settings-daemon/gnome-settings-daemon.install | 12 | ||||
-rw-r--r-- | testing/gnome-settings-daemon/systemd-fallback.patch | 154 |
3 files changed, 205 insertions, 0 deletions
diff --git a/testing/gnome-settings-daemon/PKGBUILD b/testing/gnome-settings-daemon/PKGBUILD new file mode 100644 index 000000000..18162a417 --- /dev/null +++ b/testing/gnome-settings-daemon/PKGBUILD @@ -0,0 +1,39 @@ +# $Id: PKGBUILD 155143 2012-04-01 11:33:56Z heftig $ +# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> + +pkgname=gnome-settings-daemon +pkgver=3.4.0 +pkgrel=1 +pkgdesc="The GNOME Settings daemon" +arch=('i686' 'x86_64') +license=('GPL') +depends=('colord' 'dconf' 'gnome-desktop' 'gsettings-desktop-schemas' 'hicolor-icon-theme' 'libcanberra-pulse' 'libgnomekbd' 'libnotify' + 'libsystemd' 'libwacom' 'nss' 'pulseaudio' 'pulseaudio-alsa' 'upower') +makedepends=('intltool' 'gtk-doc' 'gnome-desktop' 'gnome-common' 'xf86-input-wacom') +options=('!emptydirs' '!libtool') +install=gnome-settings-daemon.install +url="http://www.gnome.org" +groups=('gnome') +source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz + systemd-fallback.patch) +sha256sums=('5639cbba28caa7b3e33990f49aeed11ed9325e78e76af2175d9ccd5ff298401d' + '3af86d4b341d5ca7c94cc814b250b122309d38f48be0bf0581d0c77e763a8008') + +build() { + cd $pkgname-$pkgver + + patch -Np1 -i ../systemd-fallback.patch + gnome-autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ + --libexecdir=/usr/lib/gnome-settings-daemon --disable-static \ + --enable-systemd + + #https://bugzilla.gnome.org/show_bug.cgi?id=656231 + sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool + + make +} + +package() { + cd $pkgname-$pkgver + make DESTDIR="$pkgdir" install +} diff --git a/testing/gnome-settings-daemon/gnome-settings-daemon.install b/testing/gnome-settings-daemon/gnome-settings-daemon.install new file mode 100644 index 000000000..f7e8c46ac --- /dev/null +++ b/testing/gnome-settings-daemon/gnome-settings-daemon.install @@ -0,0 +1,12 @@ +post_install() { + glib-compile-schemas /usr/share/glib-2.0/schemas + gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/testing/gnome-settings-daemon/systemd-fallback.patch b/testing/gnome-settings-daemon/systemd-fallback.patch new file mode 100644 index 000000000..da0496623 --- /dev/null +++ b/testing/gnome-settings-daemon/systemd-fallback.patch @@ -0,0 +1,154 @@ +commit b9ded09387f0b99ece97baee18595eb9e86a5b9b +Author: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> +Date: Mon Mar 12 01:52:54 2012 +0100 + + Fallback to CK if systemd is not available + + Be nice to distributions where systemd is optional. This will select + the code path at runtime depending on whether the system was booted + using systemd. + +diff --git a/configure.ac b/configure.ac +index 3b4789f..d522852 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -299,7 +299,7 @@ AC_ARG_ENABLE([systemd], + [with_systemd=$enableval], + [with_systemd=no]) + if test "$with_systemd" = "yes" ; then +- PKG_CHECK_MODULES(SYSTEMD, [libsystemd-login]) ++ PKG_CHECK_MODULES(SYSTEMD, [libsystemd-daemon libsystemd-login]) + AC_DEFINE(HAVE_SYSTEMD, 1, [Define if systemd is used for session tracking]) + SESSION_TRACKING=systemd + else +diff --git a/gnome-settings-daemon/gnome-settings-session.c b/gnome-settings-daemon/gnome-settings-session.c +index 5786300..83fe21e 100644 +--- a/gnome-settings-daemon/gnome-settings-session.c ++++ b/gnome-settings-daemon/gnome-settings-session.c +@@ -30,6 +30,7 @@ + #include "gnome-settings-session.h" + + #ifdef HAVE_SYSTEMD ++#include <systemd/sd-daemon.h> + #include <systemd/sd-login.h> + + typedef struct +@@ -130,10 +131,9 @@ struct GnomeSettingsSessionPrivate + { + #ifdef HAVE_SYSTEMD + GSource *sd_source; +-#else ++#endif + GDBusProxy *proxy_session; + GCancellable *cancellable; +-#endif + gchar *session_id; + GnomeSettingsSessionState state; + }; +@@ -237,7 +237,7 @@ sessions_changed (gpointer user_data) + return TRUE; + } + +-#else /* HAVE_SYSTEMD */ ++#endif /* HAVE_SYSTEMD */ + + static void + gnome_settings_session_proxy_signal_cb (GDBusProxy *proxy, +@@ -371,22 +371,25 @@ got_manager_proxy_cb (GObject *source_object, GAsyncResult *res, gpointer user_d + g_object_unref (proxy_manager); + } + +-#endif /* HAVE_SYSTEMD */ +- + static void + gnome_settings_session_init (GnomeSettingsSession *session) + { + session->priv = GNOME_SETTINGS_SESSION_GET_PRIVATE (session); + + #ifdef HAVE_SYSTEMD +- sd_pid_get_session (getpid(), &session->priv->session_id); ++ session->priv->sd_source = NULL; ++ ++ if (sd_booted () > 0) { ++ sd_pid_get_session (getpid(), &session->priv->session_id); + +- session->priv->sd_source = sd_source_new (); +- g_source_set_callback (session->priv->sd_source, sessions_changed, session, NULL); +- g_source_attach (session->priv->sd_source, NULL); ++ session->priv->sd_source = sd_source_new (); ++ g_source_set_callback (session->priv->sd_source, sessions_changed, session, NULL); ++ g_source_attach (session->priv->sd_source, NULL); + +- sessions_changed (session); +-#else ++ sessions_changed (session); ++ return; ++ } ++#endif + session->priv->cancellable = g_cancellable_new (); + + /* connect to ConsoleKit */ +@@ -399,7 +402,6 @@ gnome_settings_session_init (GnomeSettingsSession *session) + session->priv->cancellable, + got_manager_proxy_cb, + session); +-#endif + } + + static void +@@ -415,15 +417,17 @@ gnome_settings_session_finalize (GObject *object) + if (session->priv->sd_source != NULL) { + g_source_destroy (session->priv->sd_source); + g_source_unref (session->priv->sd_source); ++ goto out; + } +-#else ++#endif ++ + g_cancellable_cancel (session->priv->cancellable); + + if (session->priv->proxy_session != NULL) + g_object_unref (session->priv->proxy_session); + g_object_unref (session->priv->cancellable); +-#endif + ++out: + G_OBJECT_CLASS (gnome_settings_session_parent_class)->finalize (object); + } + +diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c +index 8db04e5..9883d76 100644 +--- a/plugins/power/gsd-power-manager.c ++++ b/plugins/power/gsd-power-manager.c +@@ -2031,7 +2031,7 @@ systemd_stop (void) + g_object_unref (bus); + } + +-#else ++#endif + + static void + consolekit_stop_cb (GObject *source_object, +@@ -2081,7 +2081,6 @@ consolekit_stop (void) + consolekit_stop_cb, NULL); + g_object_unref (proxy); + } +-#endif + + static void + upower_sleep_cb (GObject *source_object, +@@ -2135,10 +2134,11 @@ do_power_action_type (GsdPowerManager *manager, + * hibernate is not available and is marginally better + * than just powering down the computer mid-write */ + #ifdef HAVE_SYSTEMD +- systemd_stop (); +-#else +- consolekit_stop (); ++ if (sd_booted () > 0) ++ systemd_stop (); ++ else + #endif ++ consolekit_stop (); + break; + case GSD_POWER_ACTION_BLANK: + ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen, |