--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gnome/gnome-shell/patches/01-consolekit.patch Fri Oct 28 17:56:16 2016 -0700
@@ -0,0 +1,102 @@
+Restore support for ConsoleKit as an alternative to requiring systemd.
+
+Not suitable for upstream as they deprecated & removed ConsoleKit support.
+
+--- gnome-shell-3.18.0/js/misc/loginManager.js Mon Nov 2 12:49:09 2015
++++ gnome-shell-3.18.0/js/misc/loginManager.js Mon Nov 2 12:51:59 2015
+@@ -46,6 +46,33 @@
+ const SystemdLoginManager = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface);
+ const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface);
+
++const ConsoleKitManagerIface = '<node> \
++<interface name="org.freedesktop.ConsoleKit.Manager"> \
++<method name="CanRestart"> \
++ <arg type="b" direction="out"/> \
++</method> \
++<method name="CanStop"> \
++ <arg type="b" direction="out"/> \
++</method> \
++<method name="Restart" /> \
++<method name="Stop" /> \
++<method name="GetCurrentSession"> \
++ <arg type="o" direction="out" /> \
++</method> \
++</interface> \
++</node>';
++
++const ConsoleKitSessionIface = '<node> \
++<interface name="org.freedesktop.ConsoleKit.Session"> \
++<signal name="Lock" /> \
++<signal name="Unlock" /> \
++</interface> \
++</node>';
++
++const ConsoleKitSession = Gio.DBusProxy.makeProxyWrapper(ConsoleKitSessionIface);
++const ConsoleKitManager = Gio.DBusProxy.makeProxyWrapper(ConsoleKitManagerIface);
++
++
+ function haveSystemd() {
+ return GLib.access("/run/systemd/seats", 0) >= 0;
+ }
+@@ -75,7 +102,7 @@
+ -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 +120,7 @@
+ if (haveSystemd())
+ _loginManager = new LoginManagerSystemd();
+ else
+- _loginManager = new LoginManagerDummy();
++ _loginManager = new LoginManagerConsoleKit();
+ }
+
+ return _loginManager;
+@@ -177,10 +204,35 @@
+ });
+ 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) {
++ 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);
++ }
++ }));
+ // 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
+@@ -203,4 +255,4 @@
+ callback(null);
+ }
+ });
+-Signals.addSignalMethods(LoginManagerDummy.prototype);
++Signals.addSignalMethods(LoginManagerConsoleKit.prototype);