23245637 Deliver gnome-shell 3.18.3 in Solaris
authorNiveditha Rau <Niveditha.Rau@Oracle.COM>
Fri, 28 Oct 2016 17:56:16 -0700
changeset 7206 23066e5fef27
parent 7205 27c5215213bf
child 7207 8e5254ca7c0f
23245637 Deliver gnome-shell 3.18.3 in Solaris PSARC/2016/396 GNOME 3 Window Manager Bundle
components/desktop/geoclue/geoclue.p5m
components/desktop/xdg-utils/patches/0006-gnome-screensaver.patch
components/desktop/xscreensaver/xscreensaver.p5m
components/gnome/gjs/Makefile
components/gnome/gnome-shell/Makefile
components/gnome/gnome-shell/depend.mk
components/gnome/gnome-shell/gnome-shell.p5m
components/gnome/gnome-shell/patches/01-consolekit.patch
components/gnome/gnome-shell/patches/02-proc-cmdline.patch
components/gnome/gnome-shell/patches/03-offscreen-leak.patch
components/gnome/gnome-shell/patches/04-favorite-apps.patch
components/gnome/gnome-shell/patches/05-quad.patch
components/gnome/gnome-shell/patches/06-solaris-background.patch
--- a/components/desktop/geoclue/geoclue.p5m	Mon Oct 24 18:44:19 2016 -0700
+++ b/components/desktop/geoclue/geoclue.p5m	Fri Oct 28 17:56:16 2016 -0700
@@ -41,10 +41,10 @@
 file path=etc/dbus-1/system.d/org.freedesktop.GeoClue2.Agent.conf
 file path=etc/dbus-1/system.d/org.freedesktop.GeoClue2.conf
 file path=etc/geoclue/geoclue.conf
-file path=usr/lib/$(MACH64)/geoclue
+file path=usr/lib/$(MACH64)/geoclue mode=0555
 file path=usr/lib/$(MACH64)/geoclue-2.0/demos/where-am-i mode=0555
 file path=usr/lib/$(MACH64)/pkgconfig/geoclue-2.0.pc
-file path=usr/lib/geoclue
+file path=usr/lib/geoclue mode=0555
 file path=usr/lib/geoclue-2.0/demos/where-am-i mode=0555
 file path=usr/lib/pkgconfig/geoclue-2.0.pc
 file path=usr/share/applications/geoclue-demo-agent.desktop
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/desktop/xdg-utils/patches/0006-gnome-screensaver.patch	Fri Oct 28 17:56:16 2016 -0700
@@ -0,0 +1,164 @@
+Backport of changes from upstream git repo to support GNOME 3 screensaver.
+
+Should be removable when we upgrade to xdg-utils 1.1.0 or later.
+
+--- a/scripts/xdg-screensaver
++++ b/scripts/xdg-screensaver
[email protected]@ -417,8 +417,8 @@ perform_action()
+       screensaver_kde "$1"
+       ;;
+ 
+-    gnome)
+-      screensaver_gnome "$1"
++    gnome_screensaver)
++      screensaver_gnome_screensaver "$1"
+       ;;
+ 
+     xscreensaver)
[email protected]@ -611,17 +611,59 @@ screensaver_suspend_loop()
+   (while [ -f "$screensaver_file" ]; do $*; sleep 59; done) > /dev/null 2> /dev/null &
+ }
+ 
+-screensaver_gnome()
++screensaver_gnome_screensaver()
+ {
+-# TODO
+-# There seems to be a DBUS interface for gnome-screensaver
+-# See http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2006-April/042579.html and
+-# http://cvs.gnome.org/viewcvs/gnome-screensaver/src/gs-listener-dbus.c?rev=1.36&view=log
+-# A problem seems to be that Inhibit is tied to the lifetime of the DBUS appname and
+-# this can not be used from a script
++# DBUS interface for gnome-screensaver
++# http://people.gnome.org/~mccann/gnome-screensaver/docs/gnome-screensaver.html
+     case "$1" in
+-        suspend) 
+-        screensaver_suspend_loop gnome-screensaver-command --poke
++        suspend)
++        perl -e '
++use strict;
++use warnings;
++use IO::File;
++use Net::DBus;
++use X11::Protocol;
++
++my ($window_id, $screensaver_file) = @ARGV;
++
++# Find window name to pass to session manager.
++my $x = X11::Protocol->new();
++my $named_window_id = hex($window_id);
++my $window_name;
++while (1) {
++  ($window_name) = $x->GetProperty($named_window_id, $x->atom("WM_NAME"),
++				   $x->atom("STRING"), 0, 1000, 0);
++  last if defined($window_name) && $window_name ne "";
++  (undef, $named_window_id) = $x->QueryTree($named_window_id);
++  if (!defined($named_window_id)) {
++    $window_name = "?";
++    last;
++  }
++}
++
++# Inhibit idle detection (flags = 8) with window name and ID.
++# We have no reason so just send the window name again.
++my $bus = Net::DBus->session();
++my $sm_svc = $bus->get_service("org.gnome.SessionManager");
++my $sm = $sm_svc->get_object("/org/gnome/SessionManager",
++			     "org.gnome.SessionManager");
++$sm->Inhibit($window_name, hex($window_id), $window_name, 8);
++
++# Wait until removed from the status file.
++while (1) {
++  sleep(10);
++  my $status = new IO::File($screensaver_file, "r")
++    or exit 0;
++  my $found;
++  while (<$status>) {
++    if (/^$window_id:/) {
++      $found = 1;
++      last;
++    }
++  }
++  exit 0 unless $found;
++}
++' $window_id $screensaver_file &
+         result=0
+         ;;
+ 
[email protected]@ -631,27 +673,52 @@ screensaver_gnome()
+         ;;
+         
+         activate)
+-        gnome-screensaver-command --activate > /dev/null 2> /dev/null
++        dbus-send --session \
++                  --dest=org.gnome.ScreenSaver \
++                  --type=method_call \
++                  /org/gnome/ScreenSaver \
++                  org.gnome.ScreenSaver.SetActive \
++                  boolean:true \
++                  2> /dev/null
+         result=$?
+         ;;
+         
+         lock)
+-        gnome-screensaver-command --lock > /dev/null 2> /dev/null
++        dbus-send --session \
++                  --dest=org.gnome.ScreenSaver \
++                  --type=method_call \
++                  /org/gnome/ScreenSaver \
++                  org.gnome.ScreenSaver.Lock \
++                  2> /dev/null
+         result=$?
+         ;;
+         
+         reset)
+         # Turns the screensaver off right now
+-        gnome-screensaver-command --deactivate > /dev/null 2> /dev/null
++        dbus-send --session \
++                  --dest=org.gnome.ScreenSaver \
++                  --type=method_call \
++                  /org/gnome/ScreenSaver \
++                  org.gnome.ScreenSaver.SimulateUserActivity \
++                 2> /dev/null
+         result=$?
+         ;;
+ 
+         status)
+-        result=0
+-        if [ -f "$screensaver_file" ] ; then
+-            echo "disabled"
+-        elif gnome-screensaver-command --query > /dev/null 2> /dev/null; then
++        status=`dbus-send --session \
++                          --dest=org.gnome.ScreenSaver \
++                          --type=method_call \
++                          --print-reply \
++                          --reply-timeout=2000 \
++                          /org/gnome/ScreenSaver \
++                          org.gnome.ScreenSaver.GetActive \
++                          | grep boolean | cut -d ' ' -f 5`
++        result=$?
++        if [ x"$status" = "xtrue" -o x"$status" = "xfalse" ]; then
+             echo "enabled"
++        elif [ x"$result" != "x0" ]; then
++            echo "ERROR: dbus org.gnome.ScreenSaver.GetActive returned '$status'" >&2
++            return 1
+         else
+             # Something is wrong
+             echo "disabled"
[email protected]@ -659,7 +726,7 @@ screensaver_gnome()
+         ;;
+ 
+         *)
+-        echo "ERROR:  Unknown command '$1" >&2
++        echo "ERROR: Unknown command '$1" >&2
+         return 1
+         ;;
+     esac
[email protected]@ -766,6 +833,8 @@ esac
+ detectDE
+ # Consider "xscreensaver" a separate DE
+ xscreensaver-command -version 2> /dev/null | grep XScreenSaver > /dev/null && DE="xscreensaver"
++# Consider "gnome-screensaver" a separate DE
++dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.ScreenSaver > /dev/null 2>&1 && DE="gnome_screensaver"
+ 
+ if [ "$action" = "resume" ] ; then
+     do_resume
--- a/components/desktop/xscreensaver/xscreensaver.p5m	Mon Oct 24 18:44:19 2016 -0700
+++ b/components/desktop/xscreensaver/xscreensaver.p5m	Fri Oct 28 17:56:16 2016 -0700
@@ -39,7 +39,6 @@
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 
 
-file files/xscreensaver.desktop path=etc/xdg/autostart/xscreensaver.desktop
 file path=usr/bin/xscreensaver owner=root mode=4555
 file path=usr/bin/xscreensaver-command
 file path=usr/bin/xscreensaver-demo
@@ -61,6 +60,8 @@
 file path=usr/lib/xscreensaver/config/screensaver-snap.png
 file files/unlock-logo.png path=usr/lib/xscreensaver/config/unlock-logo.png
 file path=usr/lib/xscreensaver/config/xscreensaver-demo.glade2
+file files/xscreensaver.desktop \
+    path=usr/lib/xscreensaver/xscreensaver-autostart.desktop
 file path=usr/share/X11/app-defaults/XScreenSaver
 file path=usr/share/applications/xscreensaver-properties.desktop
 file path=usr/share/locale/ca/LC_MESSAGES/xscreensaver.mo
--- a/components/gnome/gjs/Makefile	Mon Oct 24 18:44:19 2016 -0700
+++ b/components/gnome/gjs/Makefile	Fri Oct 28 17:56:16 2016 -0700
@@ -59,9 +59,7 @@
 CONFIGURE_OPTIONS += --with-pic
 
 # Workaround the mozjs issue described in 24935318 
-ifeq ($(MACH),sparc)
 COMPONENT_BUILD_ENV.64 += LD_OPTIONS="$(LD_OPTIONS) -M$(PWD)/mapfile"
-endif
 
 # Required due to patches.
 COMPONENT_PREP_ACTION += (cd $(@D); autoreconf -fiv);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gnome/gnome-shell/Makefile	Fri Oct 28 17:56:16 2016 -0700
@@ -0,0 +1,160 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+BUILD_BITS=		64
+COMPILER=		gcc
+include ../../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		gnome-shell
+COMPONENT_VERSION=	3.18.3
+COMPONENT_PROJECT_URL=  https://wiki.gnome.org/Projects/GnomeShell
+COMPONENT_ARCHIVE_HASH= \
+	sha256:8517baf8606f970ebf38222411eb7563cab2ae5efbfb088954ce23705b67519b
+COMPONENT_BUGDB=        gnome/gnome-shell
+
+TPNO=		25491
+
+TEST_TARGET = $(NO_TESTS)
+
+# Needs mutter, not available on S11.
+include $(WS_MAKE_RULES)/no-evaluation.mk
+
+include $(WS_MAKE_RULES)/gnome-component.mk
+
+# js/misc/config.js is accidentally included in the tarball - we remove it so
+# that it gets correctly rebuilt from js/misc/config.js.in with the settings
+# passed via the configure script
+COMPONENT_POST_UNPACK_ACTION += $(RM) $(SOURCE_DIR)/js/misc/config.js ;
+
+CXXFLAGS += -std=c++11 -D__EXTENSIONS__
+
+PYTHON_VERSION= 3.4
+
+CONFIGURE_OPTIONS += --disable-static
+CONFIGURE_OPTIONS += --enable-man-pages
+CONFIGURE_OPTIONS += --enable-shared
+CONFIGURE_OPTIONS += --with-pic
+CONFIGURE_OPTIONS += --disable-networkmanager
+CONFIGURE_OPTIONS += --enable-introspection
+CONFIGURE_OPTIONS += PYTHON="$(PYTHON.$(PYTHON_VERSION))"
+
+CONFIGURE_ENV += PATH=$(GNUBIN):$(PATH)
+COMPONENT_BUILD_ENV += PATH=$(GNUBIN):$(PATH)
+
+# Workaround the mozjs issue described in 24935318
+LD_EXEC_OPTIONS += -M $(PWD)/../gjs/mapfile
+ADIHEAP_MODE = $(ADIHEAP_DISABLE)
+ADISTACK_MODE =	$(ADISTACK_DISABLE)
+
+# Delete this when build servers are installed with required packages
+SN_TOP = $(WS_COMPONENTS)/desktop/startup-notification
+SN_BASE = $(SN_TOP)/build/prototype/$(MACH)
+PKG_CONFIG_PATHS += $(SN_BASE)$(PKG_CONFIG_PATH.$(BITS))
+LD_OPTIONS += -L $(SN_BASE)$(USRLIB)
+CPPFLAGS += -I$(SN_BASE)$(USRINCDIR)/startup-notification-1.0
+DEPENDED += $(SN_TOP)/build/manifest-$(MACH)-startup-notification.depend
+REQUIRED_PACKAGES += $(shell $(GSED) -n -e 's/REQUIRED_PACKAGES +=//p' $(SN_TOP)/Makefile)
+
+MUTTER_BASE = $(WS_COMPONENTS)/gnome/mutter/build/prototype/$(MACH)
+PKG_CONFIG_PATHS += $(MUTTER_BASE)$(PKG_CONFIG_PATH.$(BITS))
+LD_OPTIONS += -L $(MUTTER_BASE)$(USRLIB)
+CPPFLAGS += -I$(MUTTER_BASE)$(USRINCDIR)/mutter
+CONFIGURE_ENV += INTROSPECTION_GIRDIR="$(MUTTER_BASE)/usr/lib/$(MACH64)/mutter"
+MUTTER_GIRDIR=$(MUTTER_BASE)$(USRLIB)/mutter
+
+EDS_BASE = $(WS_COMPONENTS)/gnome/evolution-data-server/build/prototype/$(MACH)
+PKG_CONFIG_PATHS += $(EDS_BASE)$(PKG_CONFIG_PATH.$(BITS))
+LD_OPTIONS += -L $(EDS_BASE)$(USRLIB)
+CPPFLAGS += -I$(EDS_BASE)$(USRINCDIR)/evolution-data-server
+
+COMPONENT_BUILD_ENV += LD_LIBRARY_PATH_64="$(GOA_BASE)/$(USRLIB):$(EDS_BASE)/$(USRLIB)/evolution-data-server:$(MUTTER_BASE)/$(USRLIB):$(BUILD_DIR_64)/src/.libs"
+
+XDG_DATA_DIRS="$(MUTTER_GIR_DIR):$(CLUTTER_BASE)/usr/share/:/usr/share/"
+
+COMPONENT_BUILD_ENV += XDG_DATA_DIRS="$(MUTTER_GIR_DIR):$(CLUTTER_BASE)/usr/share/:/usr/share/"
+COMPONENT_BUILD_ENV += MUTTER_GIR_DIR="$(MUTTER_GIR_DIR):$(CLUTTER_BASE)/usr/share/:/usr/share/"
+
+# Dependencies on other packages in this build not yet on build machines
+UNINSTALLED_DEPS = gdm gnome-clocks gnome-settings-daemon libgweather
+DEPENDED += $(UNINSTALLED_DEPS:%=../%/build/manifest-$(MACH)-*.depend)
+REQUIRED_PACKAGES += $(shell $(GSED) -n -e '/GSED/d' -e 's/REQUIRED_PACKAGES += //p' $(UNINSTALLED_DEPS:%=../%/Makefile))
+# end Delete
+
+# evolution-data-server requires nss/nspr, but Solaris doesn't include a 64-bit
+# pkg-config file for it, so we workaround this by using the one-off copy in the
+# evolution-data-server component directory
+PKG_CONFIG_PATHS += $(WS_COMPONENTS)/gnome/evolution-data-server
+
+REQUIRED_PACKAGES += developer/vala
+REQUIRED_PACKAGES += gnome/accessibility/caribou
+REQUIRED_PACKAGES += gnome/gnome-clocks
+REQUIRED_PACKAGES += gnome/gnome-settings-daemon
+REQUIRED_PACKAGES += gnome/gsettings-desktop-schemas
+REQUIRED_PACKAGES += gnome/window-manager/mutter
+REQUIRED_PACKAGES += library/audio/pulseaudio
+REQUIRED_PACKAGES += library/desktop/at-spi2-atk
+REQUIRED_PACKAGES += library/desktop/at-spi2-core
+REQUIRED_PACKAGES += library/desktop/atk
+REQUIRED_PACKAGES += library/desktop/cairo
+REQUIRED_PACKAGES += library/desktop/clutter
+REQUIRED_PACKAGES += library/desktop/clutter/clutter-gtk
+REQUIRED_PACKAGES += library/desktop/evolution-data-server
+REQUIRED_PACKAGES += library/desktop/gdk-pixbuf
+REQUIRED_PACKAGES += library/desktop/geocode-glib
+REQUIRED_PACKAGES += library/desktop/gjs
+REQUIRED_PACKAGES += library/desktop/gobject/gobject-introspection
+REQUIRED_PACKAGES += library/desktop/gstreamer-1
+REQUIRED_PACKAGES += library/desktop/gstreamer-1/gst-plugins-base
+REQUIRED_PACKAGES += library/desktop/gtk3
+REQUIRED_PACKAGES += library/desktop/libchamplain
+REQUIRED_PACKAGES += library/desktop/libgee
+REQUIRED_PACKAGES += library/desktop/libgweather
+REQUIRED_PACKAGES += library/desktop/libnotify
+REQUIRED_PACKAGES += library/desktop/pango
+REQUIRED_PACKAGES += library/desktop/startup-notification
+REQUIRED_PACKAGES += library/desktop/xdg/libcanberra
+REQUIRED_PACKAGES += library/glib2
+REQUIRED_PACKAGES += library/gnome/folks
+REQUIRED_PACKAGES += library/gnome/gcr
+REQUIRED_PACKAGES += library/gnome/gnome-desktop
+REQUIRED_PACKAGES += library/gnome/gnome-online-accounts
+REQUIRED_PACKAGES += library/graphics/cogl
+REQUIRED_PACKAGES += library/json-glib
+REQUIRED_PACKAGES += library/libcroco
+REQUIRED_PACKAGES += library/libical
+REQUIRED_PACKAGES += library/libmozjs-24
+REQUIRED_PACKAGES += library/libsoup
+REQUIRED_PACKAGES += library/python/pygobject-3-34
+REQUIRED_PACKAGES += library/python/simplejson-34
+REQUIRED_PACKAGES += library/telepathy-glib
+REQUIRED_PACKAGES += library/telepathy-logger
+REQUIRED_PACKAGES += runtime/python-34
+REQUIRED_PACKAGES += system/display-manager/gdm
+REQUIRED_PACKAGES += system/input-method/ibus
+REQUIRED_PACKAGES += system/library/accountsservice
+REQUIRED_PACKAGES += system/library/math
+REQUIRED_PACKAGES += system/library/polkit
+REQUIRED_PACKAGES += x11/library/libx11
+REQUIRED_PACKAGES += x11/library/libxfixes
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gnome/gnome-shell/depend.mk	Fri Oct 28 17:56:16 2016 -0700
@@ -0,0 +1,1 @@
+gnome/gnome-shell: desktop/startup-notification gnome/gdm gnome/gnome-clocks gnome/gnome-settings-daemon
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gnome/gnome-shell/gnome-shell.p5m	Fri Oct 28 17:56:16 2016 -0700
@@ -0,0 +1,219 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+#
+
+<transform file path=usr.*/man/.+ -> \
+    default mangler.man.stability "pass-through volatile">
+<transform depend fmri=__TBD pkg.tmp.gi-typelib=.* -> \
+    add pkg.debug.depend.path usr/lib/$(MACH64)/gnome-shell>
+<transform depend fmri=__TBD pkg.tmp.gi-typelib=.* -> \
+    add pkg.debug.depend.path usr/lib/$(MACH64)/mutter>
+set name=pkg.fmri \
+    value=pkg:/gnome/[email protected]$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="GNOME 3 User Shell"
+set name=com.oracle.info.description value="Desktop User Shell for GNOME 3"
+set name=com.oracle.info.tpno value=$(TPNO)
+set name=info.classification \
+    value="org.opensolaris.category.2008:Desktop (GNOME)/Libraries"
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2016/396
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+file path=usr/bin/gnome-shell
+file path=usr/bin/gnome-shell-extension-prefs
+file path=usr/bin/gnome-shell-extension-tool
+file path=usr/bin/gnome-shell-perf-tool
+file path=usr/lib/$(MACH64)/gnome-shell-calendar-server mode=0555
+file path=usr/lib/$(MACH64)/gnome-shell-hotplug-sniffer mode=0555
+file path=usr/lib/$(MACH64)/gnome-shell-perf-helper mode=0555
+file path=usr/lib/$(MACH64)/gnome-shell/Gvc-1.0.typelib
+file path=usr/lib/$(MACH64)/gnome-shell/Shell-0.1.typelib
+file path=usr/lib/$(MACH64)/gnome-shell/ShellJS-0.1.typelib
+file path=usr/lib/$(MACH64)/gnome-shell/ShellMenu-0.1.typelib
+file path=usr/lib/$(MACH64)/gnome-shell/St-1.0.typelib
+file path=usr/lib/$(MACH64)/gnome-shell/libgnome-shell-js.so
+file path=usr/lib/$(MACH64)/gnome-shell/libgnome-shell-menu.so
+file path=usr/lib/$(MACH64)/gnome-shell/libgnome-shell.so
+# 64-bit browser plugin won't work with our 32-bit Firefox
+# file path=usr/lib/$(MACH64)/mozilla/plugins/libgnome-shell-browser-plugin.so
+file path=usr/share/GConf/gsettings/gnome-shell-overrides.convert
+file path=usr/share/applications/evolution-calendar.desktop
+file path=usr/share/applications/gnome-shell-extension-prefs.desktop
+file path=usr/share/applications/gnome-shell-wayland.desktop
+file path=usr/share/applications/gnome-shell.desktop
+file path=usr/share/dbus-1/interfaces/org.gnome.Shell.Screencast.xml
+file path=usr/share/dbus-1/interfaces/org.gnome.Shell.Screenshot.xml
+file path=usr/share/dbus-1/interfaces/org.gnome.ShellSearchProvider.xml
+file path=usr/share/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml
+file path=usr/share/dbus-1/services/org.gnome.Shell.CalendarServer.service
+file path=usr/share/dbus-1/services/org.gnome.Shell.HotplugSniffer.service
+file path=usr/share/glib-2.0/schemas/org.gnome.shell.gschema.xml
+file path=usr/share/gnome-control-center/keybindings/50-gnome-shell-system.xml
+file path=usr/share/gnome-shell/gnome-shell-theme.gresource
+file path=usr/share/gnome-shell/perf-background.xml
+file path=usr/share/locale/af/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/an/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/ar/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/as/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/ast/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/be/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/bg/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/bn/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/bn_IN/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/bs/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/ca/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/[email protected]/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/cs/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/da/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/de/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/el/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/en_GB/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/eo/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/es/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/et/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/eu/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/fa/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/fi/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/fr/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/fur/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/ga/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/gl/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/gu/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/he/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/hi/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/hu/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/ia/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/id/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/is/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/it/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/ja/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/kk/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/km/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/kn/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/ko/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/ku/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/ky/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/lt/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/lv/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/mk/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/ml/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/mr/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/ms/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/nb/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/ne/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/nl/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/nn/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/oc/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/or/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/pa/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/pl/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/pt/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/pt_BR/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/ro/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/ru/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/si/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/sk/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/sl/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/sr/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/[email protected]/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/sv/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/ta/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/te/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/tg/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/th/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/tr/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/ug/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/uk/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/[email protected]/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/vi/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/zh_CN/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/zh_HK/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/locale/zh_TW/LC_MESSAGES/gnome-shell.mo
+file path=usr/share/man/man1/gnome-shell.1
+license COPYING license=GPLv2
+# We want our logo displayed on gnome-shell backgrounds by default
+depend type=group fmri=pkg:/gnome/gnome-shell/background-logo-extension
+# Dependencies from imports.gi.<foo> statements in js/ui/*.js files
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=AccountsService-1.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Atk-1.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Atspi-2.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Caribou-1.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Clutter-1.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Cogl-2.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=GDesktopEnums-3.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=GLib-2.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=GObject-2.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=GWeather-3.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Gdk-3.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=GdkPixbuf-2.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Gdm-1.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Gio-2.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=GnomeDesktop-3.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Gtk-3.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=IBus-1.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Meta-3.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Pango-1.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Polkit-1.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Shell-0.1
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=ShellMenu-0.1
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=Soup-2.4
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=St-1.0
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=TelepathyGLib-0.12
+depend type=require fmri=__TBD pkg.tmp.gi-typelib=TelepathyLogger-0.2
+# Dependencies from Gio.Settings() calls in js/*/*.js files
+depend type=require fmri=__TBD pkg.tmp.gsettings-schema=org.gnome.clocks
+depend type=require fmri=__TBD pkg.tmp.gsettings-schema=org.gnome.desktop.a11y
+depend type=require fmri=__TBD \
+    pkg.tmp.gsettings-schema=org.gnome.desktop.a11y.applications
+depend type=require fmri=__TBD \
+    pkg.tmp.gsettings-schema=org.gnome.desktop.a11y.magnifier
+depend type=require fmri=__TBD \
+    pkg.tmp.gsettings-schema=org.gnome.desktop.app-folders
+depend type=require fmri=__TBD \
+    pkg.tmp.gsettings-schema=org.gnome.desktop.default-applications
+depend type=require fmri=__TBD \
+    pkg.tmp.gsettings-schema=org.gnome.desktop.interface
+depend type=require fmri=__TBD \
+    pkg.tmp.gsettings-schema=org.gnome.desktop.lockdown
+depend type=require fmri=__TBD \
+    pkg.tmp.gsettings-schema=org.gnome.desktop.media-handling
+depend type=require fmri=__TBD \
+    pkg.tmp.gsettings-schema=org.gnome.desktop.notifications
+depend type=require fmri=__TBD \
+    pkg.tmp.gsettings-schema=org.gnome.desktop.privacy
+depend type=require fmri=__TBD \
+    pkg.tmp.gsettings-schema=org.gnome.desktop.screensaver
+depend type=require fmri=__TBD \
+    pkg.tmp.gsettings-schema=org.gnome.desktop.search-providers
+depend type=require fmri=__TBD \
+    pkg.tmp.gsettings-schema=org.gnome.desktop.wm.keybindings
+depend type=require fmri=__TBD \
+    pkg.tmp.gsettings-schema=org.gnome.desktop.wm.preferences
+depend type=require fmri=__TBD pkg.tmp.gsettings-schema=org.gnome.login-screen
+depend type=require fmri=__TBD pkg.tmp.gsettings-schema=org.gnome.mutter
+depend type=require fmri=__TBD \
+    pkg.tmp.gsettings-schema=org.gnome.settings-daemon.peripherals
+depend type=require fmri=__TBD pkg.tmp.gsettings-schema=org.gnome.shell
+depend type=require fmri=__TBD \
+    pkg.tmp.gsettings-schema=org.gnome.system.location
--- /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
[email protected]@ -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;
+ }
[email protected]@ -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;
+     }
[email protected]@ -93,7 +120,7 @@
+         if (haveSystemd())
+             _loginManager = new LoginManagerSystemd();
+         else
+-            _loginManager = new LoginManagerDummy();
++            _loginManager = new LoginManagerConsoleKit();
+     }
+ 
+     return _loginManager;
[email protected]@ -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
[email protected]@ -203,4 +255,4 @@
+         callback(null);
+     }
+ });
+-Signals.addSignalMethods(LoginManagerDummy.prototype);
++Signals.addSignalMethods(LoginManagerConsoleKit.prototype);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gnome/gnome-shell/patches/02-proc-cmdline.patch	Fri Oct 28 17:56:16 2016 -0700
@@ -0,0 +1,19 @@
+Enable use of /proc/self/cmdline on Solaris as well as Linux, now that we have
+support for it via PSARC/2015/207, instead of falling through to no-op case in
+shell_global_reexec_self().
+
+Need to submit upstream.
+
+diff --git a/src/shell-global.c b/src/shell-global.c
+index 6dda352..a698f0e 100644
+--- a/src/shell-global.c
++++ b/src/shell-global.c
[email protected]@ -1244,7 +1244,7 @@ shell_global_reexec_self (ShellGlobal *global)
+   GPtrArray *arr;
+   gsize len;
+ 
+-#if defined __linux__
++#if defined __linux__ || defined __sun
+   char *buf;
+   char *buf_p;
+   char *buf_end;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gnome/gnome-shell/patches/03-offscreen-leak.patch	Fri Oct 28 17:56:16 2016 -0700
@@ -0,0 +1,68 @@
+Upstream patch for gnome-shell memory leak recommended by gnome distros list
+https://mail.gnome.org/archives/distributor-list/2016-March/msg00006.html
+
+From 4a8b9d62c98539972cf553fa8101567ce37d73c4 Mon Sep 17 00:00:00 2001
+From: Aaron Plattner <[email protected]>
+Date: Fri, 18 Mar 2016 16:00:05 -0700
+Subject: [PATCH] st: Fix offscreen leak if cogl_framebuffer_allocate fails
+X-NVConfidentiality: public
+
+If cogl_framebuffer_allocate fails in _st_create_shadow_pipeline_from_actor, the
+CoglOffscreen* that was allocated earlier in the function is leaked.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=735705
+
+Signed-off-by: Aaron Plattner <[email protected]>
+---
+ src/st/st-private.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/st/st-private.c b/src/st/st-private.c
+index 559336c42d15..d40eceb86c78 100644
+--- a/src/st/st-private.c
++++ b/src/st/st-private.c
[email protected]@ -425,40 +425,41 @@ _st_create_shadow_pipeline_from_actor (StShadow     *shadow_spec,
+       clutter_actor_get_allocation_box (actor, &box);
+       clutter_actor_box_get_size (&box, &width, &height);
+ 
+       if (width == 0 || height == 0)
+         return NULL;
+ 
+       buffer = cogl_texture_new_with_size (width,
+                                            height,
+                                            COGL_TEXTURE_NO_SLICING,
+                                            COGL_PIXEL_FORMAT_ANY);
+ 
+       if (buffer == NULL)
+         return NULL;
+ 
+       offscreen = cogl_offscreen_new_with_texture (buffer);
+       fb = COGL_FRAMEBUFFER (offscreen);
+ 
+       if (!cogl_framebuffer_allocate (fb, &catch_error))
+         {
+           cogl_error_free (catch_error);
++          cogl_object_unref (offscreen);
+           cogl_object_unref (buffer);
+           return NULL;
+         }
+ 
+       cogl_color_init_from_4ub (&clear_color, 0, 0, 0, 0);
+ 
+       /* XXX: There's no way to render a ClutterActor to an offscreen
+        * as it uses the implicit API. */
+       G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
+       cogl_push_framebuffer (fb);
+       G_GNUC_END_IGNORE_DEPRECATIONS;
+ 
+       cogl_framebuffer_clear (fb, COGL_BUFFER_BIT_COLOR, &clear_color);
+       cogl_framebuffer_translate (fb, -box.x1, -box.y1, 0);
+       cogl_framebuffer_orthographic (fb, 0, 0, width, height, 0, 1.0);
+ 
+       clutter_actor_set_opacity_override (actor, 255);
+       clutter_actor_paint (actor);
+       clutter_actor_set_opacity_override (actor, -1);
+ 
+-- 
+2.7.4
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gnome/gnome-shell/patches/04-favorite-apps.patch	Fri Oct 28 17:56:16 2016 -0700
@@ -0,0 +1,25 @@
+Modify default set of favorite apps to match what we ship in Solaris
+
+Not suitable for upstream
+
+--- a/data/org.gnome.shell.gschema.xml.in.in
++++ b/data/org.gnome.shell.gschema.xml.in.in
[email protected]@ -31,7 +31,7 @@
+       </_description>
+     </key>
+     <key name="favorite-apps" type="as">
+-      <default>[ 'epiphany.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ]</default>
++      <default>[ 'firefox.desktop', 'thunderbird.desktop', 'pidgin.desktop', 'gnome-terminal.desktop', 'org.gnome.Nautilus.desktop', 'os-next-steps.desktop' ]</default>
+       <_summary>List of desktop file IDs for favorite applications</_summary>
+       <_description>
+         The applications corresponding to these identifiers
+--- a/js/ui/appFavorites.js
++++ b/js/ui/appFavorites.js
[email protected]@ -31,6 +31,7 @@ const RENAMED_DESKTOP_IDS = {
+     'gnotravex.desktop': 'gnome-tetravex.desktop',
+     'gnotski.desktop': 'gnome-klotski.desktop',
+     'gtali.desktop': 'tali.desktop',
++    'mozilla-firefox.desktop': 'firefox.desktop',
+     'nautilus.desktop': 'org.gnome.Nautilus.desktop',
+     'polari.desktop': 'org.gnome.Polari.desktop',
+     'totem.desktop': 'org.gnome.Totem.desktop',
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gnome/gnome-shell/patches/05-quad.patch	Fri Oct 28 17:56:16 2016 -0700
@@ -0,0 +1,113 @@
+Rename "quad" argument to avoid clash with "quad" typedef in <sys/types.h> on
+Solaris.   While the C compiler has no problem this, gobject-introspection
+freaks out, resulting in errors of:
+
+gnome-shell-3.18.3/src/shell-glsl-quad.h:58: syntax error,
+ unexpected typedef-name, expecting ')' or ',' in
+ 'void shell_glsl_quad_add_glsl_snippet (ShellGLSLQuad *quad,' at 'quad'
+
+gnome-shell-3.18.3/src/shell-glsl-quad.h:64: syntax error,
+ unexpected typedef-name, expecting ')' or ',' in
+ 'int shell_glsl_quad_get_uniform_location (ShellGLSLQuad *quad,' at 'quad'
+
+gnome-shell-3.18.3/src/shell-glsl-quad.h:66: syntax error,
+ unexpected typedef-name, expecting ')' or ',' in
+ 'void shell_glsl_quad_set_uniform_float (ShellGLSLQuad *quad,' at 'quad'
+
+and these functions missing from the generated Shell-0.1.gir file and thus
+breaking calls to them from the Javascript files elsewhere in gnome-shell.
+
+Need to consult with upstream on best way to fix there.
+
+--- gnome-shell-3.18.3/src/shell-glsl-quad.h	2015-11-17 13:11:17.000000000 -0800
++++ gnome-shell-3.18.3/src/shell-glsl-quad.h	2016-10-13 18:25:09.637995723 -0700
[email protected]@ -55,15 +55,15 @@
+ 
+ GType shell_glsl_quad_get_type (void) G_GNUC_CONST;
+ 
+-void shell_glsl_quad_add_glsl_snippet (ShellGLSLQuad    *quad,
++void shell_glsl_quad_add_glsl_snippet (ShellGLSLQuad    *gquad,
+                                        ShellSnippetHook  hook,
+                                        const char       *declarations,
+                                        const char       *code,
+                                        gboolean          is_replace);
+ 
+-int  shell_glsl_quad_get_uniform_location (ShellGLSLQuad *quad,
++int  shell_glsl_quad_get_uniform_location (ShellGLSLQuad *gquad,
+                                            const char    *name);
+-void shell_glsl_quad_set_uniform_float    (ShellGLSLQuad *quad,
++void shell_glsl_quad_set_uniform_float    (ShellGLSLQuad *gquad,
+                                            int            uniform,
+                                            int            n_components,
+                                            int            total_count,
+--- gnome-shell-3.18.3/src/shell-glsl-quad.c	2015-11-17 13:11:17.000000000 -0800
++++ gnome-shell-3.18.3/src/shell-glsl-quad.c	2016-10-13 18:31:55.812183369 -0700
[email protected]@ -57,7 +57,7 @@
+ 
+ /**
+  * shell_glsl_quad_add_glsl_snippet:
+- * @quad: a #ShellGLSLQuad
++ * @gquad: a #ShellGLSLQuad
+  * @hook: where to insert the code
+  * @declarations: GLSL declarations
+  * @code: GLSL code
[email protected]@ -70,13 +70,13 @@
+  * function.
+  */
+ void
+-shell_glsl_quad_add_glsl_snippet (ShellGLSLQuad    *quad,
++shell_glsl_quad_add_glsl_snippet (ShellGLSLQuad    *gquad,
+                                   ShellSnippetHook  hook,
+                                   const char       *declarations,
+                                   const char       *code,
+                                   gboolean          is_replace)
+ {
+-  ShellGLSLQuadClass *klass = SHELL_GLSL_QUAD_GET_CLASS (quad);
++  ShellGLSLQuadClass *klass = SHELL_GLSL_QUAD_GET_CLASS (gquad);
+   CoglSnippet *snippet;
+ 
+   g_return_if_fail (klass->base_pipeline != NULL);
[email protected]@ -167,7 +167,7 @@
+ 
+ /**
+  * shell_glsl_quad_get_uniform_location:
+- * @quad: a #ShellGLSLQuad
++ * @gquad: a #ShellGLSLQuad
+  * @name: the uniform name
+  *
+  * Returns: the location of the uniform named @name, that can be
[email protected]@ -174,15 +174,15 @@
+  *          passed to shell_glsl_quad_set_uniform_float().
+  */
+ int
+-shell_glsl_quad_get_uniform_location (ShellGLSLQuad *quad,
++shell_glsl_quad_get_uniform_location (ShellGLSLQuad *gquad,
+                                       const char    *name)
+ {
+-  return cogl_pipeline_get_uniform_location (quad->priv->pipeline, name);
++  return cogl_pipeline_get_uniform_location (gquad->priv->pipeline, name);
+ }
+ 
+ /**
+  * shell_glsl_quad_set_uniform_float:
+- * @quad: a #ShellGLSLQuad
++ * @gquad: a #ShellGLSLQuad
+  * @uniform: the uniform location (as returned by shell_glsl_quad_get_uniform_location())
+  * @n_components: the number of components in the uniform (eg. 3 for a vec3)
+  * @total_count: the total number of floats in @value
[email protected]@ -189,13 +189,13 @@
+  * @value: (array length=total_count): the array of floats to set @uniform
+  */
+ void
+-shell_glsl_quad_set_uniform_float (ShellGLSLQuad *quad,
++shell_glsl_quad_set_uniform_float (ShellGLSLQuad *gquad,
+                                    int            uniform,
+                                    int            n_components,
+                                    int            total_count,
+                                    const float   *value)
+ {
+-  cogl_pipeline_set_uniform_float (quad->priv->pipeline, uniform,
++  cogl_pipeline_set_uniform_float (gquad->priv->pipeline, uniform,
+                                    n_components, total_count / n_components,
+                                    value);
+ }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gnome/gnome-shell/patches/06-solaris-background.patch	Fri Oct 28 17:56:16 2016 -0700
@@ -0,0 +1,25 @@
+Solaris-specific patch to change the default background to our branded image
+
+--- gnome-shell-3.18.3/data/theme/gnome-shell.css~	2015-11-17 13:21:03.000000000 +0000
++++ gnome-shell-3.18.3/data/theme/gnome-shell.css	2016-10-13 22:40:15.790975576 +0000
[email protected]@ -1649,7 +1649,7 @@
+   box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.4); }
+ 
+ #lockDialogGroup {
+-  background: #2e3436 url(resource:///org/gnome/shell/theme/noise-texture.png);
+-  background-repeat: repeat; }
++  background: #2e3436 url(file:///usr/share/backgrounds/solaris/Polygons_Color.png);
++  background-repeat: no-repeat; }
+ 
+ #screenShieldNotifications StButton#vhandle, #screenShieldNotifications StButton#hhandle {
+--- gnome-shell-3.18.3/js/ui/background.js~	2015-11-17 13:11:17.000000000 +0000
++++ gnome-shell-3.18.3/js/ui/background.js	2016-10-14 17:25:00.602762652 +0000
[email protected]@ -464,7 +464,7 @@
+     Name: 'SystemBackground',
+ 
+     _init: function() {
+-        let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/noise-texture.png');
++        let file = Gio.File.new_for_uri('file:///usr/share/backgrounds/solaris/Polygons_Color.png');
+ 
+         if (_systemBackground == null) {
+             _systemBackground = new Meta.Background({ meta_screen: global.screen });