[oe] Problems bumping clutter recipes

Andreas Mueller schnitzeltony at gmx.de
Tue Jun 29 15:47:11 UTC 2010


I am working on building clutter recipes (clutter / clutter-box2d / clutter-gtk / clutter-gst). Since none of the recipes worked - most crashed already during patching - I decided to rework these 
recipes and bump to latest stable versions. With clutter / clutter-box2d / clutter-gtk I had success so far but now I am in trouble with clutter-gst.

The modifications I made:

-----------------------------------------------------------------------------------------------------------------------------------------
From 503e5976ff638b278511d232c69058c03e4a2cea Mon Sep 17 00:00:00 2001
From: Andreas Mueller <schnitzeltony at gmx.de>
Date: Tue, 29 Jun 2010 16:25:31 +0200
Subject: [PATCH] Bump clutter recipes to latest stable versions

Note: clutter-gst fails during compile at overo environment!

Signed-off-by: Andreas Mueller <schnitzeltony at gmx.de>
---
 recipes/clutter/clutter-box2d.inc           |    2 +-
 recipes/clutter/clutter-box2d_0.10.0_git.bb |   13 +++++++++++++
 recipes/clutter/clutter-gst.inc             |   13 +------------
 recipes/clutter/clutter-gst_1.0.0.bb        |   12 ++++++++++++
 recipes/clutter/clutter-gtk_0.10.4.bb       |   12 ++++++++++++
 recipes/clutter/clutter.inc                 |    2 +-
 recipes/clutter/clutter_1.2.10.bb           |   18 ++++++++++++++++++
 7 files changed, 58 insertions(+), 14 deletions(-)
 create mode 100644 recipes/clutter/clutter-box2d_0.10.0_git.bb
 create mode 100644 recipes/clutter/clutter-gst_1.0.0.bb
 create mode 100644 recipes/clutter/clutter-gtk_0.10.4.bb
 create mode 100644 recipes/clutter/clutter_1.2.10.bb

diff --git a/recipes/clutter/clutter-box2d.inc b/recipes/clutter/clutter-box2d.inc
index 8189d12..bb4f1b6 100644
--- a/recipes/clutter/clutter-box2d.inc
+++ b/recipes/clutter/clutter-box2d.inc
@@ -5,7 +5,7 @@ LICENSE = "GPLv2"
 DEPENDS = "clutter"
 
 # The main clutter lib is machine specific so we need to be too
-PACKAGE_ARCH = "${MACHINE_ARCH}"
+#PACKAGE_ARCH = "${MACHINE_ARCH}"
 
 inherit autotools pkgconfig gtk-doc
 
diff --git a/recipes/clutter/clutter-box2d_0.10.0_git.bb b/recipes/clutter/clutter-box2d_0.10.0_git.bb
new file mode 100644
index 0000000..6417a7d
--- /dev/null
+++ b/recipes/clutter/clutter-box2d_0.10.0_git.bb
@@ -0,0 +1,13 @@
+require clutter-box2d.inc
+
+SRCREV = "dae84a82efe22b284cba8ca1985ce14bb4e86c99"
+
+PV = "0.10.0"
+PR = "r0"
+PR_append = "+git${SRCREV}"
+
+SRC_URI = "git://git.clutter-project.org/clutter-box2d.git;protocol=git"
+
+S = "${WORKDIR}/git"
+
+
diff --git a/recipes/clutter/clutter-gst.inc b/recipes/clutter/clutter-gst.inc
index fa8f810..262f033 100644
--- a/recipes/clutter/clutter-gst.inc
+++ b/recipes/clutter/clutter-gst.inc
@@ -7,17 +7,6 @@ DEPENDS = "clutter gstreamer gst-plugins-base"
 PACKAGES =+ "${PN}-examples"
 FILES_${PN}-examples = "${bindir}/video-player ${bindir}/video-sink ${bindir}/audio"
 
-inherit autotools pkgconfig
+inherit autotools pkgconfig gtk-doc
 
-do_configure_prepend() {
-	if [ -e ${WORKDIR}/gtk-doc.make ] ; then
-		cp ${WORKDIR}/gtk-doc.make ${S}/gtk-doc.make
-	else
-		touch ${S}/gtk-doc.make
-	fi
-}
-
-do_stage () {
-        autotools_stage_all
-}
 
diff --git a/recipes/clutter/clutter-gst_1.0.0.bb b/recipes/clutter/clutter-gst_1.0.0.bb
new file mode 100644
index 0000000..ef6589f
--- /dev/null
+++ b/recipes/clutter/clutter-gst_1.0.0.bb
@@ -0,0 +1,12 @@
+require clutter-gst.inc
+
+PR = "r0"
+
+SRC_URI = "http://source.clutter-project.org/sources/clutter-gst/1.0/clutter-gst-${PV}.tar.bz2 \
+          "
+
+# The main clutter lib is machine specific so we need to be too
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+SRC_URI[md5sum] = "673e9548172698ebd48713ebedff500c"
+SRC_URI[sha256sum] = "ae6ec048b570157130e9f9069f2495caf0da9eefa8d7f3b1789f3346fb16f696"
diff --git a/recipes/clutter/clutter-gtk_0.10.4.bb b/recipes/clutter/clutter-gtk_0.10.4.bb
new file mode 100644
index 0000000..8f4e6a8
--- /dev/null
+++ b/recipes/clutter/clutter-gtk_0.10.4.bb
@@ -0,0 +1,12 @@
+require clutter-gtk.inc
+
+PR = "r0"
+
+SRC_URI = "http://source.clutter-project.org/sources/clutter-gtk/0.10/clutter-gtk-${PV}.tar.bz2 \
+          "
+
+DEPENDS = "clutter"
+
+SRC_URI[md5sum] = "fd015e8080e1212dacc95d0e3d776d0d"
+SRC_URI[sha256sum] = "0134a8de202c518e231f340f5f2f3e988350105de9fadd0e849f08d95ac1b912"
+
diff --git a/recipes/clutter/clutter.inc b/recipes/clutter/clutter.inc
index fce3236..8f38419 100644
--- a/recipes/clutter/clutter.inc
+++ b/recipes/clutter/clutter.inc
@@ -4,7 +4,7 @@ LICENSE = "LGPL"
 
 COMPATIBLE_MACHINE = "(zylonite|mx31litekit|omap-3430ldp|omap-3430sdp|mx31ads|qemuarm|qemux86|ipodtouch|am3517-evm|dm3730-am3715-evm|beagleboard|overo|omap3evm|
omap5912osk)"
 
-STDDEPENDS = "virtual/libx11 gtk-doc-native pango glib-2.0 libxfixes gtk+"
+STDDEPENDS = "virtual/libx11 gtk-doc-native pango glib-2.0 libxfixes gtk+ cairo"
 BASE_CONF = "--disable-gtk-doc ${@get_clutter_fpu_setting(bb, d)}"
 
 DEPENDS = "${STDDEPENDS} virtual/libgl"
diff --git a/recipes/clutter/clutter_1.2.10.bb b/recipes/clutter/clutter_1.2.10.bb
new file mode 100644
index 0000000..298972d
--- /dev/null
+++ b/recipes/clutter/clutter_1.2.10.bb
@@ -0,0 +1,18 @@
+require clutter.inc
+
+PR = "${INC_PR}.0"
+
+SRC_URI = "http://source.clutter-project.org/sources/clutter/1.2/clutter-${PV}.tar.bz2 \
+          "
+
+PARALLEL_MAKE = ""
+
+do_compile_prepend() {
+	for i in $(find ${S} -name Makefile) ; do
+		sed -i -e s:-Werror::g $i
+	done
+    ( cd clutter/cogl/gles ; for i in *.glsl ; do sh stringify.sh -h $i ; done )
+}
+
+SRC_URI[md5sum] = "ca8dbc4a65c55720779872c13eac86ba"
+SRC_URI[sha256sum] = "26cdee7a528eb1346553d16ae8d8d87f35a8a46c0a86829eabd227067e84da5d"
-- 
1.5.3.4
-----------------------------------------------------------------------------------------------------------------------------------------

Some comments of what I did:

1. clutter-box2d does use latest git because the stable version is missing HAVE_INTROSPECTION (see 
http://git.clutter-project.org/clutter-box2d/commit/?id=dae84a82efe22b284cba8ca1985ce14bb4e86c99)
2. In clutter-box2d.inc I removed PACKAGE_ARCH = "${MACHINE_ARCH}" because I had the feeling that this caused OE build an empty image.
3. To get clutter-gst I did several attempts:
	- With or without PACKAGE_ARCH = "${MACHINE_ARCH}" 
	- Checked poky recipes
	- Tried with latest git version

All compiling attempts lead to a bunch of warnings like

| /home/Superandi/OpenEmbedded/tmp/sysroots/armv7a-angstrom-linux-gnueabi/usr/include/gstreamer-0.10/gst/gstmessage.h: In function 'gst_message_ref':
| /home/Superandi/OpenEmbedded/tmp/sysroots/armv7a-angstrom-linux-gnueabi/usr/include/gstreamer-0.10/gst/gstmessage.h:306: warning: cast increases required alignment of target type
| /home/Superandi/OpenEmbedded/tmp/sysroots/armv7a-angstrom-linux-gnueabi/usr/include/gstreamer-0.10/gst/gstmessage.h: In function 'gst_message_copy':
| /home/Superandi/OpenEmbedded/tmp/sysroots/armv7a-angstrom-linux-gnueabi/usr/include/gstreamer-0.10/gst/gstmessage.h:344: warning: cast increases required alignment of target type

and ends up in error

| ./clutter-gst-video-sink.c:138: error: expected ')' before 'GLUNIFORM1IPROC'
| ./clutter-gst-video-sink.c:140: error: expected ')' before 'GLGENPROGRAMSPROC'
| ./clutter-gst-video-sink.c:141: error: expected ')' before 'GLBINDPROGRAMPROC'
| ./clutter-gst-video-sink.c:142: error: expected ')' before 'GLPROGRAMSTRINGPROC'
| ./clutter-gst-video-sink.c:147: error: expected specifier-qualifier-list before 'GLGENPROGRAMSPROC'

The code found from clutter-gst-video-sink.c:138 is

typedef void (APIENTRYP GLUNIFORM1IPROC)(GLint location, GLint value);
/* GL_ARB_fragment_program */
typedef void (APIENTRYP GLGENPROGRAMSPROC)(GLsizei n, GLuint *programs);
typedef void (APIENTRYP GLBINDPROGRAMPROC)(GLenum target, GLuint program);
typedef void (APIENTRYP GLPROGRAMSTRINGPROC)(GLenum target, GLenum format,
                                             GLsizei len, const void *string);

I seems that APIENTRYP is not defined. APIENTRYP is found in <OEDir>/tmp/sysroots/armv7a-angstrom-linux-gnueabi/usr/include/GL/gl.h the mesa OpenGL header which is not to be included 
here. The header of interest which is coming from libgles-omap3 in <OEDir>/tmp/sysroots/armv7a-angstrom-linux-gnueabi/usr/include/GLES2/gl2.h does not define APIENTRYP.

OK these are the symthoms.

What is a good solution? Creating a patch which adds APIENTRYP (and others) to GLES2/gl2.h? I am afraid that this is not the solution because the warnings make me feel that it might leed to a 
successful build but will the code work as expected? To me it seems that there is some configure/automake option not properly feeded - especially if you take a look on clutter-gst-video-sink.c: 
It seems there is code to feed shaders (do we have any on omap3?). Is possible that clutter-gst is not suitable for omap3 or did it ever build?

I would be very pleased to get some suggestions on this...





More information about the Openembedded-devel mailing list