23478379 glib needs services to update gschemas.compiled & giomodule.cache
authorAlan Coopersmith <Alan.Coopersmith@Oracle.COM>
Tue, 31 May 2016 14:51:13 -0700
changeset 6102 9ebad09455ea
parent 6101 e835757b2d7a
child 6103 0b28a982917b
23478379 glib needs services to update gschemas.compiled & giomodule.cache 21066016 Missing gschemas.compiled file required by gtk3 for dialog box generation 16223702 gsettings command dumps core
components/gnome/glib2/Makefile
components/gnome/glib2/files/gio-module-cache.8s
components/gnome/glib2/files/gio-module-cache.sh
components/gnome/glib2/files/gio-module-cache.xml
components/gnome/glib2/files/glib-compile-schemas.8s
components/gnome/glib2/files/glib-compile-schemas.sh
components/gnome/glib2/files/glib-compile-schemas.xml
components/gnome/glib2/glib2.p5m
components/gnome/glib2/patches/12-solaris-services-manpage.patch
transforms/actuators
--- a/components/gnome/glib2/Makefile	Wed Jun 01 11:27:54 2016 -0700
+++ b/components/gnome/glib2/Makefile	Tue May 31 14:51:13 2016 -0700
@@ -74,6 +74,16 @@
 CONFIGURE_ENV += PATH="$(PATH):/usr/sbin"
 COMPONENT_BUILD_ENV += PATH="$(GNUBIN):$(PATH):/usr/sbin"
 
+# Make sure SMF manifests are valid
+$(BUILD_DIR)/.validated-smf-manifests-$(MACH): $(BUILD_DIR)
+	@for f in files/*.xml ; do \
+	    (set -ex ; /usr/sbin/svccfg validate "$$f") ; \
+	done
+	$(TOUCH) $@
+
+validate-smf:	$(BUILD_DIR)/.validated-smf-manifests-$(MACH)
+build:		$(BUILD_DIR)/.validated-smf-manifests-$(MACH)
+
 # Needed for "gmake test" to work successfully.
 # If SHELLOPTS is exported (as it is by the userland makefiles),
 # then all shell options get exported to child invocations of bash,
@@ -108,5 +118,6 @@
 REQUIRED_PACKAGES += library/zlib
 REQUIRED_PACKAGES += $(PERL_PKG)
 REQUIRED_PACKAGES += runtime/python-34
+REQUIRED_PACKAGES += system/core-os
 REQUIRED_PACKAGES += system/library/dbus
 REQUIRED_PACKAGES += system/library/gcc/gcc-c-runtime
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gnome/glib2/files/gio-module-cache.8s	Tue May 31 14:51:13 2016 -0700
@@ -0,0 +1,69 @@
+.\" Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+.\" 
+.\" 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
+.TH gio-module-cache 8S "25 May 2016"
+.SH NAME
+.PP
+svc:/application/desktop-cache/gio-module-cache \- GIO module cache update service
+.SH DESCRIPTION
+.PP
+The
+.B svc:/application/desktop-cache/gio-module-cache
+transient
+.BR smf (7)
+service runs
+.BR gio-querymodules (1)
+to update the giomodule.cache file with information about
+the installed GIO extension modules.
+.PP
+Packages that deliver GIO extension modules should set a
+.I restart_fmri
+attribute with the value
+.B svc:/application/desktop-cache/gio-module-cache
+on those module files.
+.PP
+This service has no configurable properties.
+.PP
+Administrative actions on this service, such as enabling, disabling, or
+requesting restart, can be performed using \fBsvcadm\fR(8). The status of
+the service can be queried using the \fBsvcs\fR(1) command.
+.SH FILES
+.TP 30
+.B /usr/lib/gio/modules/
+32-bit GIO module directory
+.TP 30
+.B /usr/lib/64/gio/modules/
+64-bit GIO module directory
+.TP 30
+.B /usr/lib/gio/modules/giomodule.cache
+32-bit GIO module cache
+.TP 30
+.B /usr/lib/64/gio/modules/giomodule.cache
+64-bit GIO module cache
+.SH SEE ALSO
+.PP
+.BR gio-querymodules (1),
+.BR svcs (1),
+.BR libgio-2\&.0 (3lib),
+.BR attributes (7),
+.BR pkg (7),
+.BR smf (7),
+.BR svcadm (8)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gnome/glib2/files/gio-module-cache.sh	Tue May 31 14:51:13 2016 -0700
@@ -0,0 +1,108 @@
+#! /bin/ksh93
+
+#
+# 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.
+#
+
+PATH=/usr/bin:/usr/sbin
+
+. /lib/svc/share/smf_include.sh
+
+USAGE="Usage: $0 <method>"
+
+if [[ $# -ne 1 ]] ; then
+	print "$USAGE" >&2
+	exit 2
+fi
+
+METHOD="$1"
+
+case $METHOD in
+	start|refresh)
+		# Continue with rest of script
+		;;
+	-*)
+		print "$USAGE" >&2
+		exit 2
+		;;
+	*)
+		print "Invalid method $METHOD" >&2
+		exit 2
+		;;
+esac
+
+NEED_COMPILE=0
+MODULE_DIR_32="/usr/lib/gio/modules"
+MODULE_DIR_64="/usr/lib/64/gio/modules"
+CACHE_FILE_32="${MODULE_DIR_32}/giomodule.cache"
+CACHE_FILE_64="${MODULE_DIR_64}/giomodule.cache"
+
+if [[ ! -r "${CACHE_FILE_32}" ]] ; then
+	# Need to create initial file
+	NEED_COMPILE=1
+elif [[ ! -r "${CACHE_FILE_64}" ]] ; then
+	# Need to create initial file
+	NEED_COMPILE=1
+elif [[ "${MODULE_DIR_32}" -nt "${CACHE_FILE_32}" ]] ; then
+	# Directory has been updated - file may have been added or removed
+	NEED_COMPILE=1
+elif [[ "${MODULE_DIR_64}" -nt "${CACHE_FILE_64}" ]] ; then
+	# Directory has been updated - file may have been added or removed
+	NEED_COMPILE=1
+elif [[ -n "$(find ${MODULE_DIR_32} -newer ${CACHE_FILE_32})" ]] ; then
+	# At least one file has been updated
+	NEED_COMPILE=1
+elif [[ -n "$(find ${MODULE_DIR_64} -newer ${CACHE_FILE_64})" ]] ; then
+	# At least one file has been updated
+	NEED_COMPILE=1
+fi
+
+if [[ "${NEED_COMPILE}" -ne 0 ]] ; then
+	umask 022
+	/usr/bin/gio-querymodules "${MODULE_DIR_32}"
+	result=$?
+	if [[ $result -ne 0 ]] ; then
+		print "/usr/bin/gio-querymodules failed with exit code $result"
+		exit $SMF_EXIT_ERR_FATAL
+	fi
+	if [[ ! -r "${CACHE_FILE_32}" ]] ; then
+		exit $SMF_EXIT_ERR_FATAL
+	fi
+	# Since gio-querymodules renames the result into place, update
+	# the file mtime after moving so it matches the directory mtime.
+	touch -c -r "${MODULE_DIR_32}" "${CACHE_FILE_32}"
+
+	/usr/bin/64/gio-querymodules "${MODULE_DIR_64}"
+	result=$?
+	if [[ $result -ne 0 ]] ; then
+		print "/usr/bin/64/gio-querymodules failed with exit code $result"
+		exit $SMF_EXIT_ERR_FATAL
+	fi
+	if [[ ! -r "${CACHE_FILE_64}" ]] ; then
+		exit $SMF_EXIT_ERR_FATAL
+	fi
+	touch -c -r "${MODULE_DIR_64}" "${CACHE_FILE_64}"
+fi
+
+exit $SMF_EXIT_OK
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gnome/glib2/files/gio-module-cache.xml	Tue May 31 14:51:13 2016 -0700
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
+<!--
+
+Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
+
+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
+
+Service manifest for ensuring GIO module cache files are updated as needed
+
+-->
+
+<service_bundle type='manifest' name='gio-module-cache'>
+
+<service
+	name='application/desktop-cache/gio-module-cache'
+	type='service'
+	version='1'>
+
+	<create_default_instance enabled='true' />
+
+	<single_instance />
+
+	<!-- Need / & /usr filesystems mounted -->
+	<dependency
+		name='usr'
+		type='service'
+		grouping='require_all'
+		restart_on='none'>
+		<service_fmri value='svc:/system/filesystem/minimal' />
+	</dependency>
+
+	<dependent
+		name='gio-module-cache_assembly-complete'
+		grouping='optional_all'
+		restart_on='none'>
+		<service_fmri value='svc:/milestone/self-assembly-complete' />
+	</dependent>
+
+	<!-- Need to be run before gdm is started -->
+	<dependent
+		name='gio-module-cache_gdm'
+		grouping='optional_all'
+		restart_on='none'>
+		<service_fmri value='svc:/application/graphical-login/gdm' />
+	</dependent>
+
+	<method_context>
+		<method_credential user='daemon' group='daemon'
+			privileges='basic,{zone}:/usr/lib/gio/modules/*,{zone}:/usr/lib/amd64/gio/modules/*,{zone}:/usr/lib/sparcv9/gio/modules/*' />
+	</method_context>
+
+	<exec_method
+		type='method'
+		name='start'
+		exec='/lib/svc/method/gio-module-cache %m'
+		timeout_seconds='600'>
+	</exec_method>
+
+	<exec_method
+		type='method'
+		name='refresh'
+		exec='/lib/svc/method/gio-module-cache %m'
+		timeout_seconds='600'>
+	</exec_method>
+
+	<exec_method
+		type='method'
+		name='stop'
+		exec=':true'
+		timeout_seconds='60' />
+
+	<property_group name='startd' type='framework'>
+		<propval name='duration' type='astring'	value='transient' />
+	</property_group>
+
+	<stability value='Unstable' />
+
+	<template>
+		<common_name>
+			<loctext xml:lang='C'>GNOME GIO module cache creation
+				</loctext>
+		</common_name>
+
+		<documentation>
+			<manpage
+				title='gio-module-cache'
+				section='8s'
+				manpath='/usr/share/man' />
+		</documentation>
+	</template>
+</service>
+
+</service_bundle>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gnome/glib2/files/glib-compile-schemas.8s	Tue May 31 14:51:13 2016 -0700
@@ -0,0 +1,78 @@
+.\" Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+.\" 
+.\" 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
+.TH glib-compile-schemas 8S "25 May 2016"
+.SH NAME
+.PP
+svc:/application/desktop-cache/glib-compile-schemas \- GSettings schema compilation service
+.SH DESCRIPTION
+.PP
+The
+.B svc:/application/desktop-cache/glib-compile-schemas
+transient
+.BR smf (7)
+service runs
+.BR glib-compile-schemas (1)
+when necessary to update the gschemas.compiled file with the information from
+the
+.B GSettings
+XML schema and vendor override files in the
+.I /usr/share/glib-2.0/schemas
+directory.
+.PP
+Because GNOME recommends using
+.BR dconf (7)
+profiles to make site overrides, the
+.B glib-compile-schemas
+service usually needs to be run only when installing or updating new
+application packages.  Packages that deliver files into the
+.I /usr/share/glib-2.0/schemas
+directory should set a
+.I restart_fmri
+attribute with the value
+.B svc:/application/desktop-cache/glib-compile-schemas:default
+on such files.
+.PP
+This service has no configurable properties.
+.PP
+Administrative actions on this service, such as enabling, disabling, or
+requesting restart, can be performed using \fBsvcadm\fR(8). The status of the
+service can be queried using the \fBsvcs\fR(1) command.
+.SH FILES
+.TP 30
+.B /usr/share/glib-2.0/schemas/*.schema.xml
+GSettings XML schema files
+.TP 30
+.B /usr/share/glib-2.0/schemas/*.gschema.override
+GSettings vendor override files
+.TP 30
+.B /usr/share/glib-2.0/schemas/gschemas.compiled
+GSettings compiled data file
+.SH SEE ALSO
+.PP
+.BR glib-compile-schemas (1),
+.BR svcs (1),
+.BR attributes (7),
+.BR dconf (7),
+.BR pkg (7),
+.BR smf (7),
+.BR svcadm (8)
+.PP
+https://wiki.gnome.org/Projects/dconf/SystemAdministrators
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gnome/glib2/files/glib-compile-schemas.sh	Tue May 31 14:51:13 2016 -0700
@@ -0,0 +1,86 @@
+#! /bin/ksh93
+
+#
+# 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.
+#
+
+PATH=/usr/bin:/usr/sbin
+
+. /lib/svc/share/smf_include.sh
+
+USAGE="Usage: $0 <method>"
+
+if [[ $# -ne 1 ]] ; then
+	print "$USAGE" >&2
+	exit 2
+fi
+
+METHOD="$1"
+
+case $METHOD in
+	start|refresh)
+		# Continue with rest of script
+		;;
+	-*)
+		print "$USAGE" >&2
+		exit 2
+		;;
+	*)
+		print "Invalid method $METHOD" >&2
+		exit 2
+		;;
+esac
+
+NEED_COMPILE=0
+SCHEMA_DIR='/usr/share/glib-2.0/schemas'
+COMPILED_FILE="${SCHEMA_DIR}/gschemas.compiled"
+
+if [[ ! -r "${COMPILED_FILE}" ]] ; then
+	# Need to create initial file
+	NEED_COMPILE=1
+elif [[ "${SCHEMA_DIR}" -nt "${COMPILED_FILE}" ]] ; then
+	# Directory has been updated - file may have been added or removed
+	NEED_COMPILE=1
+elif [[ -n "$(find ${SCHEMA_DIR} -newer ${COMPILED_FILE})" ]] ; then
+	# At least one file has been updated
+	NEED_COMPILE=1
+fi
+
+if [[ "${NEED_COMPILE}" -ne 0 ]] ; then
+	umask 022
+	/usr/bin/glib-compile-schemas "${SCHEMA_DIR}" 2>&1
+	result=$?
+	if [[ $result -ne 0 ]] ; then
+		print "glib-compile-schemas failed with exit code $result"
+		exit $SMF_EXIT_ERR_FATAL
+	fi
+	if [[ ! -r "${COMPILED_FILE}" ]] ; then
+		exit $SMF_EXIT_ERR_FATAL
+	fi
+	# Since glib-compile-schemas renames the result into place, update
+	# the file mtime after moving so it matches the directory mtime.
+	touch -c -r "${SCHEMA_DIR}" "${COMPILED_FILE}"
+fi
+
+exit $SMF_EXIT_OK
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gnome/glib2/files/glib-compile-schemas.xml	Tue May 31 14:51:13 2016 -0700
@@ -0,0 +1,112 @@
+<?xml version="1.0"?>
+<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
+<!--
+
+Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
+
+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
+
+Service manifest for ensuring GSettings schemas & overrides are compiled into
+required form on install & update
+
+-->
+
+<service_bundle type='manifest' name='glib-compile-schemas'>
+
+<service
+	name='application/desktop-cache/glib-compile-schemas'
+	type='service'
+	version='1'>
+
+	<create_default_instance enabled='true' />
+
+	<single_instance />
+
+	<!-- Need / & /usr filesystems mounted -->
+	<dependency
+		name='usr'
+		type='service'
+		grouping='require_all'
+		restart_on='none'>
+		<service_fmri value='svc:/system/filesystem/minimal' />
+	</dependency>
+
+	<dependent
+		name='glib-compile-schemas_assembly-complete'
+		grouping='optional_all'
+		restart_on='none'>
+		<service_fmri value='svc:/milestone/self-assembly-complete' />
+	</dependent>
+
+	<!-- Need to be run before gdm is started -->
+	<dependent
+		name='glib-compile-schemas_gdm'
+		grouping='optional_all'
+		restart_on='none'>
+		<service_fmri value='svc:/application/graphical-login/gdm' />
+	</dependent>
+
+	<method_context>
+		<method_credential user='daemon' group='daemon'
+			privileges='basic,{zone}:/usr/share/glib-2.0/schemas/*' />
+	</method_context>
+
+	<exec_method
+		type='method'
+		name='start'
+		exec='/lib/svc/method/glib-compile-schemas %m'
+		timeout_seconds='600'>
+	</exec_method>
+
+	<exec_method
+		type='method'
+		name='refresh'
+		exec='/lib/svc/method/glib-compile-schemas %m'
+		timeout_seconds='600'>
+	</exec_method>
+
+	<exec_method
+		type='method'
+		name='stop'
+		exec=':true'
+		timeout_seconds='60' />
+
+	<property_group name='startd' type='framework'>
+		<propval name='duration' type='astring'	value='transient' />
+	</property_group>
+
+	<stability value='Unstable' />
+
+	<template>
+		<common_name>
+			<loctext xml:lang='C'>GNOME GSettings schema compiler
+				</loctext>
+		</common_name>
+
+		<documentation>
+			<manpage
+				title='glib-compile-schemas'
+				section='8s'
+				manpath='/usr/share/man' />
+		</documentation>
+	</template>
+</service>
+
+</service_bundle>
--- a/components/gnome/glib2/glib2.p5m	Wed Jun 01 11:27:54 2016 -0700
+++ b/components/gnome/glib2/glib2.p5m	Tue May 31 14:51:13 2016 -0700
@@ -39,6 +39,12 @@
     value=PSARC/2016/249
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 #
+file files/gio-module-cache.xml \
+    path=lib/svc/manifest/application/desktop-cache/gio-module-cache.xml
+file files/glib-compile-schemas.xml \
+    path=lib/svc/manifest/application/desktop-cache/glib-compile-schemas.xml
+file files/gio-module-cache.sh path=lib/svc/method/gio-module-cache
+file files/glib-compile-schemas.sh path=lib/svc/method/glib-compile-schemas
 file path=usr/bin/$(MACH64)/gio-querymodules
 file usr/bin/$(MACH64)/gapplication path=usr/bin/gapplication
 file usr/bin/$(MACH64)/gdbus path=usr/bin/gdbus
@@ -523,6 +529,9 @@
 file files/libgobject-2.0.3lib path=usr/share/man/man3lib/libgobject-2.0.3lib
 file files/libgthread-2.0.3lib path=usr/share/man/man3lib/libgthread-2.0.3lib
 file files/gnome-interfaces.7 path=usr/share/man/man7/gnome-interfaces.7
+file files/gio-module-cache.8s path=usr/share/man/man8s/gio-module-cache.8s
+file files/glib-compile-schemas.8s \
+    path=usr/share/man/man8s/glib-compile-schemas.8s
 license COPYING license=LGPLv2
 # code in gio/gdesktopappinfo.c execs update-desktop-database
 # disabled until update-desktop-database is split out of control-center so
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gnome/glib2/patches/12-solaris-services-manpage.patch	Tue May 31 14:51:13 2016 -0700
@@ -0,0 +1,92 @@
+Local patch to add pointers to our SMF services into upstream man pages.
+
+Not appropriate for upstream, since it's specific to our SMF & IPS setup.
+
+diff --git a/docs/reference/gio/gio-querymodules.xml b/docs/reference/gio/gio-querymodules.xml
+index c9c5eec..d5ac0e9 100644
+--- a/docs/reference/gio/gio-querymodules.xml
++++ b/docs/reference/gio/gio-querymodules.xml
+@@ -41,5 +41,39 @@ all modules just to find out which extension points they are implementing.
+ GIO modules are usually installed in the <filename>gio/modules</filename>
+ subdirectory of libdir.
+ </para>
++<refsect2><title>SMF Management and IPS Packaging</title>
++<para>In Oracle Solaris, the transient
++<systemitem>gio-module-cache</systemitem> service
++runs <command>gio-querymodules</command>
++when necessary to update the <filename>giomodule.cache</filename> file with
++information about the installed GIO extension modules.  An example of when the
++<systemitem>gio-module-cache</systemitem> service runs is when a package that
++specifies the
++<systemitem>svc:/application/desktop-cache/gio-module-cache</systemitem>
++service as the value of a <property>restart_fmri</property> attribute on is
++being installed.  A package that installs a GIO extension module should have
++such an attribute.  See the
++<citerefentry>
++        <refentrytitle>gio-module-cache</refentrytitle>
++        <manvolnum>8s</manvolnum>
++</citerefentry>
++man page for details about the
++<systemitem>gio-module-cache</systemitem> service.  See the
++<citerefentry>
++        <refentrytitle>smf</refentrytitle>
++        <manvolnum>7</manvolnum>
++</citerefentry>
++man page for information about the Oracle Solaris Service Management Facility.
++</para>
++</refsect2>
+ </refsect1>
++  <refsect1>
++    <title>See also</title>
++    <para>
++      <citerefentry>
++        <refentrytitle>gio-module-cache</refentrytitle>
++        <manvolnum>8s</manvolnum>
++      </citerefentry>
++    </para>
++  </refsect1>
+ </refentry>
+diff --git a/docs/reference/gio/glib-compile-schemas.xml b/docs/reference/gio/glib-compile-schemas.xml
+index 24b3bf5..f7f090d 100644
+--- a/docs/reference/gio/glib-compile-schemas.xml
++++ b/docs/reference/gio/glib-compile-schemas.xml
+@@ -107,5 +107,39 @@ in the future.
+ </varlistentry>
+ 
+ </variablelist>
++<refsect2><title>SMF Management and IPS Packaging</title>
++<para>In Oracle Solaris, the transient
++<systemitem>glib-compile-schemas</systemitem> service
++runs <command>glib-compile-schemas</command>
++when necessary to update the <filename>gschemas.compiled</filename> file with
++information about the installed GSettings XML schema and vendor override files.
++An example of when the <systemitem>glib-compile-schemas</systemitem> service
++runs is when a package that specifies the
++<systemitem>svc:/application/desktop-cache/glib-compile-schemas</systemitem>
++service as the value of a <property>restart_fmri</property> attribute on is
++being installed.  A package that installs a GSettings schema XML file should
++have such an attribute.  See the
++<citerefentry>
++        <refentrytitle>glib-compile-schemas</refentrytitle>
++        <manvolnum>8s</manvolnum>
++</citerefentry>
++man page for details about the <systemitem>glib-compile-schemas</systemitem>
++service.  See the
++<citerefentry>
++        <refentrytitle>smf</refentrytitle>
++        <manvolnum>7</manvolnum>
++</citerefentry>
++man page for information about the Oracle Solaris Service Management Facility.
++</para>
++</refsect2>
+ </refsect1>
++  <refsect1>
++    <title>See also</title>
++    <para>
++      <citerefentry>
++        <refentrytitle>glib-compile-schemas</refentrytitle>
++        <manvolnum>8s</manvolnum>
++      </citerefentry>
++    </para>
++  </refsect1>
+ </refentry>
--- a/transforms/actuators	Wed Jun 01 11:27:54 2016 -0700
+++ b/transforms/actuators	Tue May 31 14:51:13 2016 -0700
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 # SMF service manifests
@@ -57,6 +57,14 @@
 <transform file path=usr/lib.*/gdk-pixbuf-.*/.*/loaders/.*.so$ -> \
     default restart_fmri svc:/application/desktop-cache/pixbuf-loaders-installer:default>
 
+# GNOME GSettings schemas & overrides
+<transform file link hardlink path=usr/share/glib-2\.0/schemas/.* -> \
+    default restart_fmri svc:/application/desktop-cache/glib-compile-schemas:default>
+
+# GNOME GIO modules
+<transform file link hardlink path=usr/lib.*/gio/modules/.*\.so$ -> \
+    default restart_fmri svc:/application/desktop-cache/gio-module-cache:default>
+
 # RAD
 <transform file path=usr/lib/rad/.* -> add restart_fmri \
     svc:/system/rad:local>