[Buildroot] [PATCH v2,2/2] rygel: new package

Romain Naour romain.naour at smile.fr
Mon Jul 3 22:56:24 UTC 2017


Hi Fabrice,

Le 24/03/2017 à 21:38, Fabrice Fontaine a écrit :
> Rygel is a home media solution (UPnP AV MediaServer) that allows you to
> easily share audio, video and pictures to other devices.
> 
> Additionally, media player software may use Rygel to become a
> MediaRenderer that may be controlled remotely by a UPnP or DLNA
> Controller.
> 
> Rygel achieves interoperability with other devices in the market by
> trying to conform to the very strict requirements of DLNA and by
> converting media on-the-fly to formats that client devices can handle.
> 
> Most Rygel functionality is implemented through a plug-in mechanism.
> 
> https://wiki.gnome.org/Projects/Rygel
> 
> Signed-off-by: Fabrice Fontaine <fontaine.fabrice at gmail.com>

With br-arm-full-static config used by test-pkg script rygel doesn't build
statically due to conflict between libgupnp-1.0.a and libgupnp-av-1.0.a.

sysroot/usr/lib/libgupnp-1.0.a(xml-util.o): In function `xml_util_get_element':
build/gupnp-1.0.1/libgupnp/xml-util.c:31: multiple definition of
`xml_util_get_element'
host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgupnp-av-1.0.a(xml-util.o):build/gupnp-av-0.12.10/libgupnp-av/xml-util.c:86:
first defined here

Theses two libraries seems to define the same function (xml_util_get_element).
It's probably not a rygel issue directly, any package using these two library
when building statically should fail to build...

Otherwise looks good.

Best regards,
Romain

> ---
> Changes v1 -> v2 (after review of Rahul Bedarkar):
>  - Use tab to indent help in Config.in
>  - Add a link to rygel website
>  - Update version from 0.33 to 0.34
>  - Update license from LGPLv2+ to "LGPLv2.1+, CC-BY-SA 3.0 (logo)"
>  - Add a comment on missing COPYING.logo in archive
> 
>  package/Config.in           |  1 +
>  package/rygel/Config.in     | 51 +++++++++++++++++++++++++++++++
>  package/rygel/S99rygel      | 37 +++++++++++++++++++++++
>  package/rygel/rygel.hash    |  2 ++
>  package/rygel/rygel.mk      | 73 +++++++++++++++++++++++++++++++++++++++++++++
>  package/rygel/rygel.service | 10 +++++++
>  6 files changed, 174 insertions(+)
>  create mode 100644 package/rygel/Config.in
>  create mode 100644 package/rygel/S99rygel
>  create mode 100644 package/rygel/rygel.hash
>  create mode 100644 package/rygel/rygel.mk
>  create mode 100644 package/rygel/rygel.service
> 
> diff --git a/package/Config.in b/package/Config.in
> index 612270f..05e35c6 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -1639,6 +1639,7 @@ endif
>  	source "package/rsync/Config.in"
>  	source "package/rtorrent/Config.in"
>  	source "package/rtptools/Config.in"
> +	source "package/rygel/Config.in"
>  	source "package/samba4/Config.in"
>  	source "package/sconeserver/Config.in"
>  	source "package/ser2net/Config.in"
> diff --git a/package/rygel/Config.in b/package/rygel/Config.in
> new file mode 100644
> index 0000000..b3a37ea
> --- /dev/null
> +++ b/package/rygel/Config.in
> @@ -0,0 +1,51 @@
> +config BR2_PACKAGE_RYGEL
> +	bool "rygel"
> +	depends on BR2_USE_WCHAR # gupnp-av
> +	depends on BR2_TOOLCHAIN_HAS_THREADS # gupnp-av
> +	depends on BR2_USE_MMU # gupnp-av
> +	select BR2_PACKAGE_GUPNP_AV
> +	select BR2_PACKAGE_LIBGEE
> +	select BR2_PACKAGE_LIBMEDIAART
> +	select BR2_PACKAGE_SQLITE
> +	help
> +	  Rygel is a home media solution (UPnP AV MediaServer) that
> +	  allows you to easily share audio, video and pictures to other
> +	  devices.
> +
> +	  Additionally, media player software may use Rygel to become a
> +	  MediaRenderer that may be controlled remotely by a UPnP or
> +	  DLNA Controller.
> +
> +	  Rygel achieves interoperability with other devices in the
> +	  market by trying to conform to the very strict requirements of
> +	  DLNA and by converting media on-the-fly to formats that client
> +	  devices can handle.
> +
> +	  Most Rygel functionality is implemented through a plug-in
> +	  mechanism.
> +
> +	  https://wiki.gnome.org/Projects/Rygel
> +
> +comment "rygel needs a toolchain w/ wchar, threads"
> +	depends on BR2_USE_MMU
> +	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS
> +
> +if BR2_PACKAGE_RYGEL
> +
> +choice
> +	prompt "media engine"
> +	default BR2_PACKAGE_RYGEL_MEDIA_ENGINE_SIMPLE
> +
> +config BR2_PACKAGE_RYGEL_MEDIA_ENGINE_SIMPLE
> +	bool "simple"
> +
> +config BR2_PACKAGE_RYGEL_MEDIA_ENGINE_GSTREAMER1
> +	bool "gstreamer1"
> +	select BR2_PACKAGE_GDK_PIXBUF
> +	select BR2_PACKAGE_GUPNP_DLNA
> +	select BR2_PACKAGE_GSTREAMER1
> +	select BR2_PACKAGE_GST1_PLUGINS_BASE
> +
> +endchoice
> +
> +endif # BR2_PACKAGE_RYGEL
> diff --git a/package/rygel/S99rygel b/package/rygel/S99rygel
> new file mode 100644
> index 0000000..ee832e9
> --- /dev/null
> +++ b/package/rygel/S99rygel
> @@ -0,0 +1,37 @@
> +#!/bin/sh
> +
> +NAME=rygel
> +PIDFILE=/var/run/$NAME.pid
> +DAEMON=/usr/bin/$NAME
> +
> +start() {
> +	printf "Starting $NAME: "
> +	start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON
> +	[ $? = 0 ] && echo "OK" || echo "FAIL"
> +}
> +stop() {
> +	printf "Stopping $NAME: "
> +	start-stop-daemon -K -q -p $PIDFILE
> +	[ $? = 0 ] && echo "OK" || echo "FAIL"
> +}
> +restart() {
> +	stop
> +	start
> +}
> +
> +case "$1" in
> +  start)
> +	start
> +	;;
> +  stop)
> +	stop
> +	;;
> +  restart|reload)
> +	restart
> +	;;
> +  *)
> +	echo "Usage: $0 {start|stop|restart|reload}"
> +	exit 1
> +esac
> +
> +exit $?
> diff --git a/package/rygel/rygel.hash b/package/rygel/rygel.hash
> new file mode 100644
> index 0000000..40a17d4
> --- /dev/null
> +++ b/package/rygel/rygel.hash
> @@ -0,0 +1,2 @@
> +# Hash from: http://ftp.gnome.org/pub/gnome/sources/rygel/0.34/rygel-0.34.0.sha256sum:
> +sha256	fbb2d46cbe4e750df6610b4c66b2278f06d1f71a257c7903e676ccb394dad418	rygel-0.34.0.tar.xz
> diff --git a/package/rygel/rygel.mk b/package/rygel/rygel.mk
> new file mode 100644
> index 0000000..4b58488
> --- /dev/null
> +++ b/package/rygel/rygel.mk
> @@ -0,0 +1,73 @@
> +################################################################################
> +#
> +# rygel
> +#
> +################################################################################
> +
> +RYGEL_VERSION_MAJOR = 0.34
> +RYGEL_VERSION = $(RYGEL_VERSION_MAJOR).0
> +RYGEL_SOURCE = rygel-$(RYGEL_VERSION).tar.xz
> +RYGEL_SITE = http://ftp.gnome.org/pub/gnome/sources/rygel/$(RYGEL_VERSION_MAJOR)
> +# COPYING.logo is in the git repository but not in the archive
> +RYGEL_LICENSE = LGPLv2.1+, CC-BY-SA 3.0 (logo)
> +RYGEL_LICENSE_FILES = COPYING
> +RYGEL_DEPENDENCIES = \
> +	gupnp-av \
> +	libgee \
> +	libmediaart \
> +	sqlite
> +RYGEL_INSTALL_STAGING = YES
> +
> +RYGEL_CONF_OPTS += \
> +	--disable-apidocs \
> +	--disable-coverage \
> +	--disable-example-plugins \
> +	--enable-external-plugin \
> +	--enable-lms-plugin \
> +	--enable-mpris-plugin \
> +	--enable-ruih-plugin \
> +	--disable-tracker-plugin
> +
> +ifeq ($(BR2_PACKAGE_GDK_PIXBUF),y)
> +RYGEL_DEPENDENCIES += gdk-pixbuf
> +endif
> +
> +ifeq ($(BR2_PACKAGE_RYGEL_MEDIA_ENGINE_GSTREAMER1),y)
> +RYGEL_CONF_OPTS += \
> +	--with-media-engine=gstreamer \
> +	--enable-playbin-plugin \
> +	--enable-media_export-plugin \
> +	--enable-gst-launch-plugin
> +RYGEL_DEPENDENCIES += \
> +	gupnp-dlna \
> +	gst1-plugins-base \
> +	gstreamer1
> +else ifeq ($(BR2_PACKAGE_RYGEL_MEDIA_ENGINE_SIMPLE),y)
> +RYGEL_CONF_OPTS += \
> +	--with-media-engine=simple \
> +	--disable-playbin-plugin \
> +	--disable-media_export-plugin \
> +	--disable-gst-launch-plugin
> +endif
> +
> +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y)
> +RYGEL_CONF_OPTS += --with-ui
> +RYGEL_DEPENDENCIES += libgtk3
> +else
> +RYGEL_CONF_OPTS += --without-ui
> +endif
> +
> +define RYGEL_INSTALL_INIT_SYSV
> +	$(INSTALL) -D -m 0755 package/rygel/S99rygel \
> +		$(TARGET_DIR)/etc/init.d/S99rygel
> +endef
> +
> +define RYGEL_INSTALL_INIT_SYSTEMD
> +	$(INSTALL) -D -m 644 package/rygel/rygel.service \
> +		$(TARGET_DIR)/usr/lib/systemd/system/rygel.service
> +	mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
> +	ln -sf ../../../../usr/lib/systemd/system/rygel.service \
> +		$(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/rygel.service
> +endef
> +
> +$(eval $(autotools-package))
> diff --git a/package/rygel/rygel.service b/package/rygel/rygel.service
> new file mode 100644
> index 0000000..6ae8ee7
> --- /dev/null
> +++ b/package/rygel/rygel.service
> @@ -0,0 +1,10 @@
> +[Unit]
> +Description=Rygel DLNA server
> +After=network.target
> +
> +[Service]
> +ExecStart=/usr/bin/rygel
> +Restart=always
> +
> +[Install]
> +WantedBy=multi-user.target
> 



More information about the buildroot mailing list