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
--- 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>