From a1562115d29341b09f98b216a385faf76d89045e Mon Sep 17 00:00:00 2001 From: Juan RP Date: Tue, 13 Jan 2015 01:22:04 +0100 Subject: [PATCH] gnome-shell: patch from OpenBSD for consolekit compat. --- .../patches/patch-js_misc_loginManager_js | 118 ++++++++++++++++++ srcpkgs/gnome-shell/template | 2 +- 2 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/gnome-shell/patches/patch-js_misc_loginManager_js diff --git a/srcpkgs/gnome-shell/patches/patch-js_misc_loginManager_js b/srcpkgs/gnome-shell/patches/patch-js_misc_loginManager_js new file mode 100644 index 00000000000..b541e2762d5 --- /dev/null +++ b/srcpkgs/gnome-shell/patches/patch-js_misc_loginManager_js @@ -0,0 +1,118 @@ +$OpenBSD: patch-js_misc_loginManager_js,v 1.1 2014/10/21 13:11:03 ajacoutot Exp $ + +REVERT: +From a244c1e987502e359c45c0a9bc0012b5bc635553 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Thu, 24 Apr 2014 17:55:56 +0200 +Subject: loginManager: Kill ConsoleKit support + +--- js/misc/loginManager.js.orig Tue Oct 21 14:59:33 2014 ++++ js/misc/loginManager.js Tue Oct 21 15:02:21 2014 +@@ -46,6 +46,32 @@ const SystemdLoginSessionIface = ' \ + const SystemdLoginManager = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface); + const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface); + ++const ConsoleKitManagerIface = ' \ ++ \ ++ \ ++ \ ++ \ ++ \ ++ \ ++ \ ++ \ ++ \ ++ \ ++ \ ++ \ ++ \ ++'; ++ ++const ConsoleKitSessionIface = ' \ ++ \ ++ \ ++ \ ++ \ ++'; ++ ++const ConsoleKitSession = Gio.DBusProxy.makeProxyWrapper(ConsoleKitSessionIface); ++const ConsoleKitManager = Gio.DBusProxy.makeProxyWrapper(ConsoleKitManagerIface); ++ + function haveSystemd() { + return GLib.access("/run/systemd/seats", 0) >= 0; + } +@@ -75,7 +101,7 @@ function canLock() { + -1, null); + + let version = result.deep_unpack()[0].deep_unpack(); +- return haveSystemd() && versionCompare('3.5.91', version); ++ return versionCompare('3.5.91', version); + } catch(e) { + return false; + } +@@ -93,7 +119,7 @@ function getLoginManager() { + if (haveSystemd()) + _loginManager = new LoginManagerSystemd(); + else +- _loginManager = new LoginManagerDummy(); ++ _loginManager = new LoginManagerConsoleKit(); + } + + return _loginManager; +@@ -110,6 +136,9 @@ const LoginManagerSystemd = new Lang.Class({ + Lang.bind(this, this._prepareForSleep)); + }, + ++ // Having this function is a bit of a hack since the Systemd and ConsoleKit ++ // session objects have different interfaces - but in both cases there are ++ // Lock/Unlock signals, and that's all we count upon at the moment. + getCurrentSessionProxy: function(callback) { + if (this._currentSession) { + callback (this._currentSession); +@@ -177,13 +206,35 @@ const LoginManagerSystemd = new Lang.Class({ + }); + Signals.addSignalMethods(LoginManagerSystemd.prototype); + +-const LoginManagerDummy = new Lang.Class({ +- Name: 'LoginManagerDummy', ++const LoginManagerConsoleKit = new Lang.Class({ ++ Name: 'LoginManagerConsoleKit', + ++ _init: function() { ++ this._proxy = new ConsoleKitManager(Gio.DBus.system, ++ 'org.freedesktop.ConsoleKit', ++ '/org/freedesktop/ConsoleKit/Manager'); ++ }, ++ ++ // Having this function is a bit of a hack since the Systemd and ConsoleKit ++ // session objects have different interfaces - but in both cases there are ++ // Lock/Unlock signals, and that's all we count upon at the moment. + getCurrentSessionProxy: function(callback) { +- // we could return a DummySession object that fakes whatever callers +- // expect (at the time of writing: connect() and connectSignal() +- // methods), but just never calling the callback should be safer ++ if (this._currentSession) { ++ callback (this._currentSession); ++ return; ++ } ++ ++ this._proxy.GetCurrentSessionRemote(Lang.bind(this, ++ function(result, error) { ++ if (error) { ++ logError(error, 'Could not get a proxy for the current session'); ++ } else { ++ this._currentSession = new ConsoleKitSession(Gio.DBus.system, ++ 'org.freedesktop.ConsoleKit', ++ result[0]); ++ callback(this._currentSession); ++ } ++ })); + }, + + canSuspend: function(asyncCallback) { +@@ -203,4 +254,4 @@ const LoginManagerDummy = new Lang.Class({ + callback(null); + } + }); +-Signals.addSignalMethods(LoginManagerDummy.prototype); ++Signals.addSignalMethods(LoginManagerConsoleKit.prototype); diff --git a/srcpkgs/gnome-shell/template b/srcpkgs/gnome-shell/template index 13a74f544f7..8406ea4a79c 100644 --- a/srcpkgs/gnome-shell/template +++ b/srcpkgs/gnome-shell/template @@ -1,7 +1,7 @@ # Template file for 'gnome-shell' pkgname=gnome-shell version=3.14.2 -revision=1 +revision=2 build_options="systemd" build_style=gnu-configure configure_args="--disable-schemas-compile $(vopt_enable systemd)"