Patchwork [2/3] classes/[gnome|gnomebase|mime]: enhance gnome related classes

login
register
mail settings
Submitter Joshua Lock
Date Nov. 9, 2011, 12:53 a.m.
Message ID <dd949a69e2e7c9379caf5bb6162259c4f2584ea5.1320799787.git.josh@linux.intel.com>
Download mbox | patch
Permalink /patch/14585/
State New
Headers show

Comments

Joshua Lock - Nov. 9, 2011, 12:53 a.m.
This patch pulls in the gnome related classes from oe-core which
adds extra packaging rules and functionality whilst modularising things
so that one can get a subset of gnome functionality without adding a lot
of extra dependencies.

These aren't an exact copy of the classes from meta-openembedded, notable
Koen Kooi - Nov. 9, 2011, 9:27 a.m.
Op 9 nov. 2011, om 01:53 heeft Joshua Lock het volgende geschreven:

> This patch pulls in the gnome related classes from oe-core which
> adds extra packaging rules and functionality whilst modularising things
> so that one can get a subset of gnome functionality without adding a lot
> of extra dependencies.
> 
> These aren't an exact copy of the classes from meta-openembedded, notable
> differences are:
> * gnome.bbclass - I dropped the BBCLASSEXTEND

It looks that will break a number of things in meta-oe, why was it dropped?


> * mime.bbclass:
>  - updated coding style
>  - use which to find update-mime-database program rather than hard coded
>  - fix typo in populate_packges_append such that it's actually called

Will it drag in the shared-mime-info-data package you created automatically now?

Also, do you have matching patches to update meta-oe now that these things are heading into oe-core?

regards,

Koen
Richard Purdie - Nov. 9, 2011, 9:37 a.m.
On Wed, 2011-11-09 at 10:27 +0100, Koen Kooi wrote:
> Op 9 nov. 2011, om 01:53 heeft Joshua Lock het volgende geschreven:
> 
> > This patch pulls in the gnome related classes from oe-core which
> > adds extra packaging rules and functionality whilst modularising things
> > so that one can get a subset of gnome functionality without adding a lot
> > of extra dependencies.
> > 
> > These aren't an exact copy of the classes from meta-openembedded, notable
> > differences are:
> > * gnome.bbclass - I dropped the BBCLASSEXTEND
> 
> It looks that will break a number of things in meta-oe, why was it dropped?

Unconditionally BBCLASSEXTENDing everything gnome is a great way to hack
around build issues and create a convoluted dependency mess that isn't
really required. I'd much rather we try and minimise the amount of
-native dependencies to those actually needed.

Comparing our builds against other systems its becoming clear our
convoluted dependency trees are one of the areas we don't do as well and
it hurts performance :(.

Cheers,

Richard
Koen Kooi - Nov. 9, 2011, 10:27 a.m.
Op 9 nov. 2011, om 10:37 heeft Richard Purdie het volgende geschreven:

> On Wed, 2011-11-09 at 10:27 +0100, Koen Kooi wrote:
>> Op 9 nov. 2011, om 01:53 heeft Joshua Lock het volgende geschreven:
>> 
>>> This patch pulls in the gnome related classes from oe-core which
>>> adds extra packaging rules and functionality whilst modularising things
>>> so that one can get a subset of gnome functionality without adding a lot
>>> of extra dependencies.
>>> 
>>> These aren't an exact copy of the classes from meta-openembedded, notable
>>> differences are:
>>> * gnome.bbclass - I dropped the BBCLASSEXTEND
>> 
>> It looks that will break a number of things in meta-oe, why was it dropped?
> 
> Unconditionally BBCLASSEXTENDing everything gnome is a great way to hack
> around build issues and create a convoluted dependency mess that isn't
> really required. I'd much rather we try and minimise the amount of
> -native dependencies to those actually needed.
> 
> Comparing our builds against other systems its becoming clear our
> convoluted dependency trees are one of the areas we don't do as well and
> it hurts performance :(.

The list of -native needed in meta-gnome:

bison-native
cairo-native
docbook-utils-native
flex-native
gconf-native
gdk-pixbuf-native
glib-2.0-native
gnome-doc-utils-native
gobject-introspection-native
gtk-doc-native
icon-naming-utils-native
intltool-native
libffi-native
libidl-native
libxml-parser-perl-native
orbit2-native
pango-native
perl-native
popt-native
python-native

regards,

Koen
Richard Purdie - Nov. 9, 2011, 10:35 a.m.
On Wed, 2011-11-09 at 11:27 +0100, Koen Kooi wrote:
> Op 9 nov. 2011, om 10:37 heeft Richard Purdie het volgende geschreven:
> 
> > On Wed, 2011-11-09 at 10:27 +0100, Koen Kooi wrote:
> >> Op 9 nov. 2011, om 01:53 heeft Joshua Lock het volgende geschreven:
> >> 
> >>> This patch pulls in the gnome related classes from oe-core which
> >>> adds extra packaging rules and functionality whilst modularising things
> >>> so that one can get a subset of gnome functionality without adding a lot
> >>> of extra dependencies.
> >>> 
> >>> These aren't an exact copy of the classes from meta-openembedded, notable
> >>> differences are:
> >>> * gnome.bbclass - I dropped the BBCLASSEXTEND
> >> 
> >> It looks that will break a number of things in meta-oe, why was it dropped?
> > 
> > Unconditionally BBCLASSEXTENDing everything gnome is a great way to hack
> > around build issues and create a convoluted dependency mess that isn't
> > really required. I'd much rather we try and minimise the amount of
> > -native dependencies to those actually needed.
> > 
> > Comparing our builds against other systems its becoming clear our
> > convoluted dependency trees are one of the areas we don't do as well and
> > it hurts performance :(.
> 
> The list of -native needed in meta-gnome:
> 
> bison-native
> cairo-native
> docbook-utils-native
> flex-native
> gconf-native
> gdk-pixbuf-native
> glib-2.0-native
> gnome-doc-utils-native
> gobject-introspection-native
> gtk-doc-native
> icon-naming-utils-native
> intltool-native
> libffi-native
> libidl-native
> libxml-parser-perl-native
> orbit2-native
> pango-native
> perl-native
> popt-native
> python-native

Many of which are not gnome bbclass derived recipes. I therefore think
it makes sense to put the BBCLASSEXTEND in the recipes where its needed
and not the core class...

Cheers,

Richard
Koen Kooi - Nov. 9, 2011, 11:18 a.m.
Op 9 nov. 2011, om 11:35 heeft Richard Purdie het volgende geschreven:

> On Wed, 2011-11-09 at 11:27 +0100, Koen Kooi wrote:
>> Op 9 nov. 2011, om 10:37 heeft Richard Purdie het volgende geschreven:
>> 
>>> On Wed, 2011-11-09 at 10:27 +0100, Koen Kooi wrote:
>>>> Op 9 nov. 2011, om 01:53 heeft Joshua Lock het volgende geschreven:
>>>> 
>>>>> This patch pulls in the gnome related classes from oe-core which
>>>>> adds extra packaging rules and functionality whilst modularising things
>>>>> so that one can get a subset of gnome functionality without adding a lot
>>>>> of extra dependencies.
>>>>> 
>>>>> These aren't an exact copy of the classes from meta-openembedded, notable
>>>>> differences are:
>>>>> * gnome.bbclass - I dropped the BBCLASSEXTEND
>>>> 
>>>> It looks that will break a number of things in meta-oe, why was it dropped?
>>> 
>>> Unconditionally BBCLASSEXTENDing everything gnome is a great way to hack
>>> around build issues and create a convoluted dependency mess that isn't
>>> really required. I'd much rather we try and minimise the amount of
>>> -native dependencies to those actually needed.
>>> 
>>> Comparing our builds against other systems its becoming clear our
>>> convoluted dependency trees are one of the areas we don't do as well and
>>> it hurts performance :(.
>> 
>> The list of -native needed in meta-gnome:
>> 
>> bison-native
>> cairo-native
>> docbook-utils-native
>> flex-native
>> gconf-native
>> gdk-pixbuf-native
>> glib-2.0-native
>> gnome-doc-utils-native
>> gobject-introspection-native
>> gtk-doc-native
>> icon-naming-utils-native
>> intltool-native
>> libffi-native
>> libidl-native
>> libxml-parser-perl-native
>> orbit2-native
>> pango-native
>> perl-native
>> popt-native
>> python-native
> 
> Many of which are not gnome bbclass derived recipes. I therefore think
> it makes sense to put the BBCLASSEXTEND in the recipes where its needed
> and not the core class...

Exactly! I did a lot of dependency cleanup when importing them, so the situation isn't as bad as it was in OE classic.

Josh, what kind of test builds did you do for the meta-gnome recipes after moving the classes?

regards,

Koen
Joshua Lock - Nov. 9, 2011, 7:14 p.m.
On 09/11/11 01:27, Koen Kooi wrote:
> 
> Op 9 nov. 2011, om 01:53 heeft Joshua Lock het volgende geschreven:
> 
>> This patch pulls in the gnome related classes from oe-core which
>> adds extra packaging rules and functionality whilst modularising things
>> so that one can get a subset of gnome functionality without adding a lot
>> of extra dependencies.
>>
>> These aren't an exact copy of the classes from meta-openembedded, notable
>> differences are:
>> * gnome.bbclass - I dropped the BBCLASSEXTEND
> 
> It looks that will break a number of things in meta-oe, why was it dropped?

Richard didn't want us to add native variants of everything that uses
the gnome class.
At least in the short term it should be easy enough to keep meta-oe's
gnome.bbclass where the BBCLASSEXTEND is still set.

Whether you'd want to keep that or instead set BBCLASSEXTEND in the
required places feels like a policy decision for meta-oe.

>> * mime.bbclass:
>>  - updated coding style
>>  - use which to find update-mime-database program rather than hard coded
>>  - fix typo in populate_packges_append such that it's actually called
> 
> Will it drag in the shared-mime-info-data package you created automatically now?
> 
> Also, do you have matching patches to update meta-oe now that these things are heading into oe-core?

I have not, I wanted to see what the feedback on this series was.
Particularly the BBCLASSEXTEND bit as above.

Joshua
Joshua Lock - Nov. 9, 2011, 8:20 p.m.
On 09/11/11 03:18, Koen Kooi wrote:
> 
> Op 9 nov. 2011, om 11:35 heeft Richard Purdie het volgende geschreven:
> 
>> On Wed, 2011-11-09 at 11:27 +0100, Koen Kooi wrote:
>>> Op 9 nov. 2011, om 10:37 heeft Richard Purdie het volgende geschreven:
>>>
>>>> On Wed, 2011-11-09 at 10:27 +0100, Koen Kooi wrote:
>>>>> Op 9 nov. 2011, om 01:53 heeft Joshua Lock het volgende geschreven:
>>>>>
>>>>>> This patch pulls in the gnome related classes from oe-core which
>>>>>> adds extra packaging rules and functionality whilst modularising things
>>>>>> so that one can get a subset of gnome functionality without adding a lot
>>>>>> of extra dependencies.
>>>>>>
>>>>>> These aren't an exact copy of the classes from meta-openembedded, notable
>>>>>> differences are:
>>>>>> * gnome.bbclass - I dropped the BBCLASSEXTEND
>>>>>
>>>>> It looks that will break a number of things in meta-oe, why was it dropped?
>>>>
>>>> Unconditionally BBCLASSEXTENDing everything gnome is a great way to hack
>>>> around build issues and create a convoluted dependency mess that isn't
>>>> really required. I'd much rather we try and minimise the amount of
>>>> -native dependencies to those actually needed.
>>>>
>>>> Comparing our builds against other systems its becoming clear our
>>>> convoluted dependency trees are one of the areas we don't do as well and
>>>> it hurts performance :(.
>>>
>>> The list of -native needed in meta-gnome:
>>>
>>> bison-native
>>> cairo-native
>>> docbook-utils-native
>>> flex-native
>>> gconf-native
>>> gdk-pixbuf-native
>>> glib-2.0-native
>>> gnome-doc-utils-native
>>> gobject-introspection-native
>>> gtk-doc-native
>>> icon-naming-utils-native
>>> intltool-native
>>> libffi-native
>>> libidl-native
>>> libxml-parser-perl-native
>>> orbit2-native
>>> pango-native
>>> perl-native
>>> popt-native
>>> python-native
>>
>> Many of which are not gnome bbclass derived recipes. I therefore think
>> it makes sense to put the BBCLASSEXTEND in the recipes where its needed
>> and not the core class...
> 
> Exactly! I did a lot of dependency cleanup when importing them, so the situation isn't as bad as it was in OE classic.
> 
> Josh, what kind of test builds did you do for the meta-gnome recipes after moving the classes?
> 

I'm sorry to say almost zero.

Joshua

Patch

differences are:
* gnome.bbclass - I dropped the BBCLASSEXTEND
* mime.bbclass:
  - updated coding style
  - use which to find update-mime-database program rather than hard coded
  - fix typo in populate_packges_append such that it's actually called

CC: Koen Kooi <koen@dominion.thruhere.net>
CC: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Joshua Lock <josh@linux.intel.com>
---
 meta/classes/gnome.bbclass     |   18 +-----------
 meta/classes/gnomebase.bbclass |   30 ++++++++++++++++++++
 meta/classes/mime.bbclass      |   58 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 90 insertions(+), 16 deletions(-)
 create mode 100644 meta/classes/gnomebase.bbclass
 create mode 100644 meta/classes/mime.bbclass

diff --git a/meta/classes/gnome.bbclass b/meta/classes/gnome.bbclass
index 3d68b12..a19dd17 100644
--- a/meta/classes/gnome.bbclass
+++ b/meta/classes/gnome.bbclass
@@ -1,17 +1,3 @@ 
-def gnome_verdir(v):
-	import re
-	m = re.match("^([0-9]+)\.([0-9]+)", v)
-	return "%s.%s" % (m.group(1), m.group(2))
+inherit gnomebase gtk-icon-cache gconf mime
 
-SECTION ?= "x11/gnome"
-SRC_URI = "${GNOME_MIRROR}/${BPN}/${@gnome_verdir("${PV}")}/${BPN}-${PV}.tar.bz2;name=archive"
-
-DEPENDS += "gnome-common"
-
-FILES_${PN} += "${datadir}/application-registry \
-    ${datadir}/mime-info \
-    ${datadir}/gnome-2.0"
-
-inherit autotools pkgconfig gconf
-
-EXTRA_OEMAKE += "GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1"
+EXTRA_OECONF += "--enable-introspection=no"
diff --git a/meta/classes/gnomebase.bbclass b/meta/classes/gnomebase.bbclass
new file mode 100644
index 0000000..a4209a0
--- /dev/null
+++ b/meta/classes/gnomebase.bbclass
@@ -0,0 +1,30 @@ 
+def gnome_verdir(v):
+	import re
+	m = re.match("^([0-9]+)\.([0-9]+)", v)
+	return "%s.%s" % (m.group(1), m.group(2))
+
+SECTION ?= "x11/gnome"
+SRC_URI = "${GNOME_MIRROR}/${BPN}/${@gnome_verdir("${PV}")}/${BPN}-${PV}.tar.bz2;name=archive"
+
+DEPENDS += "gnome-common"
+
+FILES_${PN} += "${datadir}/application-registry  \
+	${datadir}/mime-info \
+	${datadir}/mime/packages \	
+	${datadir}/mime/application \
+	${datadir}/gnome-2.0 \
+	${datadir}/polkit* \
+	${datadir}/GConf \
+	${datadir}/glib-2.0/schemas \
+"
+
+FILES_${PN}-doc += "${datadir}/devhelp"
+
+inherit autotools pkgconfig
+
+do_install_append() {
+	rm -rf ${D}${localstatedir}/lib/scrollkeeper/*
+	rm -rf ${D}${localstatedir}/scrollkeeper/*
+	rm -f ${D}${datadir}/applications/*.cache
+}
+
diff --git a/meta/classes/mime.bbclass b/meta/classes/mime.bbclass
new file mode 100644
index 0000000..2d17d9c
--- /dev/null
+++ b/meta/classes/mime.bbclass
@@ -0,0 +1,58 @@ 
+DEPENDS += "shared-mime-info-native shared-mime-info"
+
+mime_postinst() {
+if [ "$1" = configure ]; then
+	UPDATEMIMEDB=`which update-mime-database`
+	if [ -x "$UPDATEMIMEDB" ] ; then
+		echo "Updating MIME database... this may take a while."
+		$UPDATEMIMEDB $D${datadir}/mime
+	else
+		echo "Missing update-mime-database, update of mime database failed!"
+		exit 1
+	fi
+fi
+}
+
+mime_postrm() {
+if [ "$1" = remove ] || [ "$1" = upgrade ]; then
+	UPDATEMIMEDB=`which update-mime-database`
+	if [ -x "$UPDATEMIMEDB" ] ; then
+		echo "Updating MIME database... this may take a while."
+		$UPDATEMIMEDB $D${datadir}/mime
+	else
+		echo "Missing update-mime-database, update of mime database failed!"
+		exit 1
+	fi
+fi
+}
+
+python populate_packages_append () {
+	import os.path, re
+	packages = d.getVar('PACKAGES', True).split()
+	pkgdest =  d.getVar('PKGDEST', True)
+
+	for pkg in packages:
+		mime_dir = '%s/%s/usr/share/mime/packages' % (pkgdest, pkg)
+		mimes = []
+		mime_re = re.compile(".*\.xml$")
+		if os.path.exists(mime_dir):
+			for f in os.listdir(mime_dir):
+				if mime_re.match(f):
+					mimes.append(f)
+		if mimes:
+			bb.note("adding mime postinst and postrm scripts to %s" % pkg)
+			postinst = d.getVar('pkg_postinst_%s' % pkg, True) or d.getVar('pkg_postinst', True)
+			if not postinst:
+				postinst = '#!/bin/sh\n'
+			postinst += d.getVar('mime_postinst', True)
+			d.setVar('pkg_postinst_%s' % pkg, postinst)
+			postrm = d.getVar('pkg_postrm_%s' % pkg, True) or d.getVar('pkg_postrm', True)
+			if not postrm:
+				postrm = '#!/bin/sh\n'
+			postrm += d.getVar('mime_postrm', True)
+			d.setVar('pkg_postrm_%s' % pkg, postrm)
+			bb.note("adding shared-mime-info-data dependency to %s" % pkg)
+			rdepends = explode_deps(dgetVar('RDEPENDS_' + pkg, False) or d.getVar('RDEPENDS', False)) or ""
+			rdepends.append("shared-mime-info-data")
+			d.setVar('RDEPENDS_' + pkg, " " + " ".join(rdepends))
+}