Patchwork gconf.bbclass: don't register schemas in the install stage

login
register
mail settings
Submitter Ross Burton
Date June 26, 2012, 10:10 a.m.
Message ID <1340705423-18430-1-git-send-email-ross.burton@intel.com>
Download mbox | patch
Permalink /patch/30651/
State Accepted
Commit f9f2e0309a03a4dc9ed5e6cff7db6f29962b7d60
Headers show

Comments

Ross Burton - June 26, 2012, 10:10 a.m.
Previously this was installing schemas in the sysroot, which is wrong for native
packages as nothing should touch the sysroot directly, and even more wrong for
non-native packages as the sysroot is irrelevant.

So, export the environment variable that stops the registration happening at
install time. The postinst script will handle the non-native case, and for the
sysroot I've opened #2648.  This isn't a massive problem as nothing to my
knowledge actually installs schemas to the sysroot.

[YOCTO #2245]

Signed-off-by: Ross Burton <ross.burton@intel.com>
---
 meta/classes/gconf.bbclass |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)
Colin Walters - June 26, 2012, 9:02 p.m.
On Tue, 2012-06-26 at 11:10 +0100, Ross Burton wrote:

> +# Disable install-time schema registration as we're a packaging system so this
> +# happens in the postinst script, not at install time.  Set both the configure
> +# script option and the traditional envionment variable just to make sure.
> +EXTRA_OECONF += "--disable-schemas-install"
> +export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL = "1"

Even better is to have the source code check for DESTDIR, and skip gconf
bits itself; e.g.:

http://git.gnome.org/browse/evolution/tree/shell/Makefile.am?h=gnome-2-28#n201

This patch is still useful though for components which don't check
DESTDIR, but again it's better to patch the relevant source code to do
so (or port to GSettings...).
Ross Burton - June 27, 2012, 6:01 a.m.
On Tuesday, 26 June 2012 at 22:02, Colin Walters wrote:
> Even better is to have the source code check for DESTDIR, and skip gconf
> bits itself; e.g.:
> 
> http://git.gnome.org/browse/evolution/tree/shell/Makefile.am?h=gnome-2-28#n201
> 
> This patch is still useful though for components which don't check
> DESTDIR, but again it's better to patch the relevant source code to do
> so (or port to GSettings...).

I'd prefer to use an option that the GConf autoconf macro provides over patching every module that uses GConf, as we're assured much better coverage that way.  Adding the option caught every module in the Sato image but two, which were being rather minimal with their build system and the environment variable caught those (as it affects gconftool itself).

Ross
Saul Wold - June 28, 2012, 5:14 p.m.
On 06/26/2012 03:10 AM, Ross Burton wrote:
> Previously this was installing schemas in the sysroot, which is wrong for native
> packages as nothing should touch the sysroot directly, and even more wrong for
> non-native packages as the sysroot is irrelevant.
>
> So, export the environment variable that stops the registration happening at
> install time. The postinst script will handle the non-native case, and for the
> sysroot I've opened #2648.  This isn't a massive problem as nothing to my
> knowledge actually installs schemas to the sysroot.
>
> [YOCTO #2245]
>
> Signed-off-by: Ross Burton<ross.burton@intel.com>
> ---
>   meta/classes/gconf.bbclass |   12 ++++++++++--
>   1 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/meta/classes/gconf.bbclass b/meta/classes/gconf.bbclass
> index a966c26..fb9f701 100644
> --- a/meta/classes/gconf.bbclass
> +++ b/meta/classes/gconf.bbclass
> @@ -1,10 +1,18 @@
>   DEPENDS += "gconf gconf-native"
>
> -# This is referenced by the gconf m4 macros and would default to the value hardcoded
> -# into gconf at compile time otherwise
> +# These are for when gconftool is used natively and the prefix isn't necessarily
> +# the sysroot.  TODO: replicate the postinst logic for -native packages going
> +# into sysroot as they won't be running their own install-time schema
> +# registration (disabled below) nor the postinst script (as they don't happen).
>   export GCONF_SCHEMA_INSTALL_SOURCE = "xml:merged:${STAGING_DIR_NATIVE}${sysconfdir}/gconf/gconf.xml.defaults"
>   export GCONF_BACKEND_DIR = "${STAGING_LIBDIR_NATIVE}/GConf/2"
>
> +# Disable install-time schema registration as we're a packaging system so this
> +# happens in the postinst script, not at install time.  Set both the configure
> +# script option and the traditional envionment variable just to make sure.
> +EXTRA_OECONF += "--disable-schemas-install"
> +export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL = "1"
> +
>   gconf_postinst() {
>   if [ "x$D" != "x" ]; then
>   	exit 1

Merged into OE-Core - Still needs to be merged to 1.2.1

Thanks
	Sau!
Colin Walters - June 28, 2012, 10:10 p.m.
On Wed, 2012-06-27 at 07:01 +0100, Ross Burton wrote:

> I'd prefer to use an option that the GConf autoconf macro provides
> over patching every module that uses GConf, 

I wasn't objecting to your patch.  However, please do *also* (in
addition, as well, etc. ;) ) consider patching these modules upstream.

Concretely doing so will also fix jhbuild (and my gnome-ostree build
system).

Patch

diff --git a/meta/classes/gconf.bbclass b/meta/classes/gconf.bbclass
index a966c26..fb9f701 100644
--- a/meta/classes/gconf.bbclass
+++ b/meta/classes/gconf.bbclass
@@ -1,10 +1,18 @@ 
 DEPENDS += "gconf gconf-native"
 
-# This is referenced by the gconf m4 macros and would default to the value hardcoded
-# into gconf at compile time otherwise
+# These are for when gconftool is used natively and the prefix isn't necessarily
+# the sysroot.  TODO: replicate the postinst logic for -native packages going
+# into sysroot as they won't be running their own install-time schema
+# registration (disabled below) nor the postinst script (as they don't happen).
 export GCONF_SCHEMA_INSTALL_SOURCE = "xml:merged:${STAGING_DIR_NATIVE}${sysconfdir}/gconf/gconf.xml.defaults"
 export GCONF_BACKEND_DIR = "${STAGING_LIBDIR_NATIVE}/GConf/2"
 
+# Disable install-time schema registration as we're a packaging system so this
+# happens in the postinst script, not at install time.  Set both the configure
+# script option and the traditional envionment variable just to make sure.
+EXTRA_OECONF += "--disable-schemas-install"
+export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL = "1"
+
 gconf_postinst() {
 if [ "x$D" != "x" ]; then
 	exit 1