Patchwork [OpenWrt-Devel,packages] fix rygel build

login
register
Submitter Andy Leiserson
Date 2013-01-17 06:42:46
Message ID <20130117064246.GC19815@leiserson.org>
Download mbox | patch
Permalink /patch/3178/
State Changes Requested
Delegated to: Jonas Gorski
Headers show

Comments

Andy Leiserson - 2013-01-17 06:42:46
manually specify vapidirs in staging_dir
correct libgupnp-vala package name in depends

Signed-off-by: Andy Leiserson <andy@leiserson.org>
---
For prior discussion, see http://patchwork.openwrt.org/patch/2524/, this
eliminates the need for that patch.

I am having problems with audio output using the latest trunk, which I'm
still looking into. But this patch only changes the build, and I think
should make rygel work when built for AA and possibly even for trunk in
environments different from mine.

 multimedia/rygel/Makefile                          |    2 +-
 .../patches/010-vapidirs-from-pkg-config.patch     |   28 --------------------
 multimedia/rygel/patches/010-vapidirs.patch        |   12 +++++++++
 3 files changed, 13 insertions(+), 29 deletions(-)
 delete mode 100644 multimedia/rygel/patches/010-vapidirs-from-pkg-config.patch
 create mode 100644 multimedia/rygel/patches/010-vapidirs.patch
Andy Leiserson - 2013-02-22 17:06:28
For anyone looking for a working rygel package, I would suggest one of:

* Attitude adjustment with the packages from
  https://github.com/aandyl/openwrt-packages/tree/rygel-attitude-adjustment

* Trunk at revisions >= r34528 and < r35523, with the patch at
  http://patchwork.openwrt.org/patch/3178/, or newer revisions with
  the same patch and with r35523 reverted.

The audio issues I mentioned previously should be resolved in kernel
3.7.7 and 3.8.

More detail on my most recent experience building rygel for openwrt
follows. I'll pause here to ask whether there's interest in maintaining
the package in openwrt archive. If not, I would probably invest less
effort in updating dependency packages in a way that's generally useful,
and I'd also suggest removing rygel, gupnp*, vala, and libgee from the
archive rather than let them go stale. (FWIW, there was an inquiry about
building rygel in the forum, so there's at least some interest.)

As for the current state of the build: r35523 updated gupnp to the
latest version, 0.19.4 (and also updated gssdp).  The packaged version
of rygel (0.14.1) doesn't work with gupnp 0.19.4.

I've worked on updating to the latest rygel. It involves quite a few
updates to various dependencies, including updating to GStreamer 1.0.

More troubling is the issue of generating vapi (Vala API) files for the
newer gupnp releases. Previously the generated vapi were shipped in the
gupnp-vala dist tarball, which avoided the issue. (I didn't realize the
distribution included these generated files when I packaged it.)

The recent gupnp releases no longer ship vapi files, so they must be
generated. The flow for generating the vapi files involves generating a
.gir with the gobject introspection tools, and then generating the .vapi
from the .gir with vapigen. The gobject introspection tools compile
*and run* a test program linked against the library being "introspected".

Because of this, gobject introspection does not in general support cross
compiling (see https://bugzilla.gnome.org/show_bug.cgi?id=592311).
However, the .gir and the .vapi are portable across architectures.
I have considered either doing host builds of gupnp (and all its
dependencies) so that the .gir and .vapi can be generated on the host
and then copied from the host build area to the target build area, or
shipping generated .vapi with the openwrt packages. In the latter case,
I would still need to maintain the host builds for gupnp+deps to
generate the vapi when updating the packages, but the host builds
wouldn't be needed to build the packages, and wouldn't need to be added
to the packages repo.
Jonas Gorski - 2013-04-23 09:53:47
On Thu, Jan 17, 2013 at 7:42 AM, Andy Leiserson <andy@leiserson.org> wrote:
> manually specify vapidirs in staging_dir
> correct libgupnp-vala package name in depends
>
> Signed-off-by: Andy Leiserson <andy@leiserson.org>

rygel currently doesn't build with gcc 4.6 and newer it seems, so I
didn't apply it. I updated gupnp-av to a compiling version though.
Rygel is apparently fixed in 17.1 and later. Since this is a major
version bump and I lack the ability to test rygel, it would be good if
you could provide a patch for it.
Andy Leiserson - 2013-05-28 00:42:52
On Tue, Apr 23, 2013 at 11:53:47AM +0200, Jonas Gorski wrote:
>rygel currently doesn't build with gcc 4.6 and newer it seems, so I
>didn't apply it. I updated gupnp-av to a compiling version though.
>Rygel is apparently fixed in 17.1 and later. Since this is a major
>version bump and I lack the ability to test rygel, it would be good if
>you could provide a patch for it.

I have recent rygel (0.18.2) working locally. The changes are available
at:

https://github.com/aandyl/openwrt-packages/commits/rygel

The two patches to the main tree that I just sent to the list are
required for the build to work.

Among the package changes needed are an update to gstreamer 1.0 and
addition of host builds for a number of packages (for reasons I
explained previously in this thread).

I expect that updating to gstreamer 1.0 will break other packages, which
might be resolvable by version bumps, or might require more extensive
work. I do intend to try this but may not get to it for a few more
weeks.

Patch

diff --git a/multimedia/rygel/Makefile b/multimedia/rygel/Makefile
index ce9c4e7..93e12d0 100644
--- a/multimedia/rygel/Makefile
+++ b/multimedia/rygel/Makefile
@@ -16,7 +16,7 @@  PKG_SOURCE_URL:=@GNOME/rygel/0.14/
 PKG_SHA256SUM:=c4f79fb30bc1a062a2ffdadc7a55dd91fa58240302f152fb070d8c674bdddd67
 
 PKG_FIXUP:=autoreconf
-PKG_BUILD_DEPENDS:=vala/host intltool/host vala gupnp-vala
+PKG_BUILD_DEPENDS:=vala/host intltool/host vala libgupnp-vala
 
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/nls.mk
diff --git a/multimedia/rygel/patches/010-vapidirs-from-pkg-config.patch b/multimedia/rygel/patches/010-vapidirs-from-pkg-config.patch
deleted file mode 100644
index 70023c5..0000000
--- a/multimedia/rygel/patches/010-vapidirs-from-pkg-config.patch
+++ /dev/null
@@ -1,28 +0,0 @@ 
---- a/m4/rygel.m4	2012-04-12 08:47:08.000000000 -0700
-+++ b/m4/rygel.m4	2012-06-15 11:55:36.000000000 -0700
-@@ -99,6 +99,25 @@
-           [dnl check for vala
-            AM_PROG_VALAC([$1])
- 
-+            dnl See where we should look for vapi files. If it's under
-+            dnl $datadir, then assume it's one of the standard locations where
-+            dnl vala will look. Otherwise, specify explicitly.
-+            dnl
-+            dnl Note the distinction between these directories (where we look
-+            dnl for APIs when we do vala builds) and VAPIDIR, which is where we
-+            dnl install our own vapi files.
-+
-+            for var in vapidir vapidir_versioned; do
-+                AS_IF([dir=`$PKG_CONFIG --variable=$var vapigen`],
-+                    [
-+                        AC_MSG_NOTICE([got $var=$dir from pkg-config])
-+                        AS_IF([expr "$dir" : "${datadir}"],
-+                            [],
-+                            [RYGEL_ADD_VALAFLAGS([--vapidir $dir])])
-+                    ],
-+                    [AC_MSG_NOTICE([pkg-config didn't return a value for $var, relying on valac built-in defaults])])
-+            done
-+
-             AS_IF([test x$VALAC = "x"],
-                 [AC_MSG_ERROR([Cannot find the "valac" compiler in your PATH])],
-                 [
diff --git a/multimedia/rygel/patches/010-vapidirs.patch b/multimedia/rygel/patches/010-vapidirs.patch
new file mode 100644
index 0000000..6a4b353
--- /dev/null
+++ b/multimedia/rygel/patches/010-vapidirs.patch
@@ -0,0 +1,12 @@ 
+--- a/m4/rygel.m4	2012-04-12 08:47:08.000000000 -0700
++++ b/m4/rygel.m4	2012-12-17 22:59:38.000000000 -0800
+@@ -99,6 +99,9 @@
+           [dnl check for vala
+            AM_PROG_VALAC([$1])
+ 
++            RYGEL_ADD_VALAFLAGS([--vapidir $STAGING_DIR/usr/share/vala/vapi])
++            RYGEL_ADD_VALAFLAGS([--vapidir $STAGING_DIR/usr/share/vala-0.16/vapi])
++
+             AS_IF([test x$VALAC = "x"],
+                 [AC_MSG_ERROR([Cannot find the "valac" compiler in your PATH])],
+                 [