--- /dev/null
+#
+# Copyright (C) 2006-2012 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=rygel
+PKG_VERSION:=0.14.1
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=@GNOME/rygel/0.14/
+PKG_SHA256SUM:=c4f79fb30bc1a062a2ffdadc7a55dd91fa58240302f152fb070d8c674bdddd67
+
+PKG_FIXUP:=autoreconf
+PKG_BUILD_DEPENDS:=vala/host intltool/host vala gupnp-vala
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
+
+TARGET_LDFLAGS+=\
+ -Wl,-rpath-link=$(STAGING_DIR)/usr/lib
+
+define Package/rygel/Default
+ SECTION:=multimedia
+ CATEGORY:=Multimedia
+ TITLE:=GNOME UPnP/DLNA services
+ URL:=http://live.gnome.org/Rygel
+endef
+
+define Package/rygel/description/Default
+ Rygel is a collection of DLNA (UPnP AV) services (devices in UPnP speak),
+ implemented through a plug-in mechanism.
+endef
+
+define Package/rygel
+$(call Package/rygel/Default)
+ DEPENDS:=+libgssdp +libgupnp +libgupnp-av +libgupnp-dlna +libgee \
+ +libsoup +gstreamer +libgstvideo +libgstpbutils
+endef
+
+define Package/rygel/conffiles
+/etc/config/rygel
+endef
+
+define Package/rygel/description
+$(call Package/rygel/description/Default)
+ .
+ This package contains the main rygel binary.
+endef
+
+define RemoveValaStamps
+ find $(PKG_BUILD_DIR) -name "*_vala.stamp" | xargs rm -f
+endef
+
+Hooks/Configure/Pre += RemoveValaStamps
+
+define Build/Configure
+ $(call Build/Configure/Default,--without-ui,)
+endef
+
+define Build/Compile
+ $(MAKE) -C $(PKG_BUILD_DIR) \
+ DESTDIR="$(PKG_INSTALL_DIR)" \
+ all install
+endef
+
+define Package/rygel/install
+ $(INSTALL_DIR) $(1)/usr/bin
+
+ $(INSTALL_BIN) \
+ $(PKG_INSTALL_DIR)/usr/bin/rygel \
+ $(1)/usr/bin
+
+ $(INSTALL_DIR) $(1)/usr/share/rygel/xml
+
+ $(INSTALL_DATA) \
+ $(PKG_INSTALL_DIR)/usr/share/rygel/xml/*.xml \
+ $(1)/usr/share/rygel/xml
+
+ $(INSTALL_DIR) $(1)/etc
+ $(INSTALL_DATA) files/etc/rygel.conf $(1)/etc
+
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) files/etc/init.d/rygel $(1)/etc/init.d/rygel
+
+ $(INSTALL_DIR) $(1)/etc/config
+ $(INSTALL_CONF) files/etc/config/rygel $(1)/etc/config/rygel
+
+ $(INSTALL_DIR) $(1)/usr/share/icons/hicolor/{32x32,48x48,128x128}/apps
+ $(INSTALL_DATA) \
+ $(PKG_INSTALL_DIR)/usr/share/icons/hicolor/32x32/apps/rygel.png \
+ $(1)/usr/share/icons/hicolor/32x32/apps/rygel.png
+ $(INSTALL_DATA) \
+ $(PKG_INSTALL_DIR)/usr/share/icons/hicolor/48x48/apps/rygel.png \
+ $(1)/usr/share/icons/hicolor/48x48/apps/rygel.png
+ $(INSTALL_DATA) \
+ $(PKG_INSTALL_DIR)/usr/share/icons/hicolor/128x128/apps/rygel.png \
+ $(1)/usr/share/icons/hicolor/128x128/apps/rygel.png
+endef
+
+# 1: plugin name as used in shared library filename
+# 2: additional dependencies, if any
+define RygelBuildPlugin
+
+ define Package/rygel-$(1)
+ $(call Package/rygel/Default)
+ TITLE+= - $(1) plugin
+ DEPENDS:=+rygel $(2)
+ endef
+
+ define Package/rygel-$(1)/install
+ $(INSTALL_DIR) $$(1)/usr/lib/rygel-1.0
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/rygel-1.0/librygel-$(1).so \
+ $$(1)/usr/lib/rygel-1.0
+ endef
+
+ $$(eval $$(call BuildPackage,rygel-$(1)))
+endef
+
+define Package/rygel-external/description
+ $(call Package/rygel/description/Default)
+ .
+ This package contains the external plugin, a MediaServer plugin that exports
+ media provided by applications implementing the D-Bus MediaServer interface.
+endef
+$(eval $(call RygelBuildPlugin,external))
+
+define Package/rygel-media-export/description
+ $(call Package/rygel/description/Default)
+ .
+ This package contains the media-export plugin, a MediaServer plugin that
+ recursively exports files and folders specified in the user configuration.
+endef
+$(eval $(call RygelBuildPlugin,media-export,+libsqlite3 +libgstapp +libgsttag))
+
+define Package/rygel-mpris/description
+ $(call Package/rygel/description/Default)
+ .
+ This package contains the mpris plugin, a MediaServer plugin that exports
+ media provided by applications implementing the D-Bus MPRIS2 interface.
+endef
+$(eval $(call RygelBuildPlugin,mpris))
+
+define Package/rygel-tracker/description
+ $(call Package/rygel/description/Default)
+ .
+ This package contains the tracker plugin, a MediaServer plugin that exports
+ media known to Tracker.
+endef
+$(eval $(call RygelBuildPlugin,tracker))
+
+define Package/rygel-playbin/description
+ $(call Package/rygel/description/Default)
+ .
+ This package contains the playbin plugin, the MediaRenderer plugin.
+endef
+$(eval $(call RygelBuildPlugin,playbin))
+
+define Package/rygel-playbin-gst-suggested/description
+ $(call Package/rygel/description/Default)
+ .
+ This optional metapackage installs a suggested set of gstreamer plugins to
+ support audio playback in rygel-playbin.
+endef
+
+define Package/rygel-playbin-gst-suggested
+ $(call Package/rygel/Default)
+ TITLE:=Suggested GStreamer plugins for rygel-playbin
+ DEPENDS:= \
+ +gst-mod-alsa \
+ +gst-mod-audioconvert \
+ +gst-mod-audioparsers \
+ +gst-mod-audioresample \
+ +gst-mod-autodetect \
+ +gst-mod-decodebin2 \
+ +gst-mod-flac \
+ +gst-mod-icydemux \
+ +gst-mod-id3demux \
+ +gst-mod-isomp4 \
+ +gst-mod-ogg \
+ +gst-mod-playbin \
+ +gst-mod-souphttpsrc \
+ +gst-mod-typefindfunctions \
+ +gst-mod-volume \
+ +gst-mod-vorbis \
+ +BUILD_PATENTED:gst-mod-faad \
+ +BUILD_PATENTED:gst-mod-mad
+endef
+$(eval $(call BuildPackage,rygel-playbin-gst-suggested))
+
+$(eval $(call BuildPackage,rygel))
--- /dev/null
+Take all the output and send it to syslog.
+This isn't great, but it's better than sending it to the bitbucket, at least
+for troubleshooting.
+--- a/src/rygel/rygel-log-handler.vala
++++ b/src/rygel/rygel-log-handler.vala
+@@ -56,6 +56,29 @@
+ private LogHandler () {
+ this.log_level_hash = new HashMap<string,LogLevelFlags> ();
+
++ string[] argv = { "/usr/bin/logger", "-t", "rygel" };
++ int logger_fd;
++
++ try {
++ GLib.Process.spawn_async_with_pipes (null, // working_directory
++ argv,
++ null, // envp
++ SpawnFlags.STDOUT_TO_DEV_NULL |
++ SpawnFlags.STDERR_TO_DEV_NULL,
++ null, // child_setup
++ null, // child_pid
++ out logger_fd, // standard_input
++ null, // standard_output
++ null); // standard_error
++
++ Posix.dup2 (logger_fd, Posix.STDOUT_FILENO);
++ Posix.dup2 (logger_fd, Posix.STDERR_FILENO);
++ Posix.close (logger_fd);
++ } catch (Error err) {
++ warning (_("Unable to send output to /usr/bin/logger: %s"),
++ err.message);
++ }
++
+ // Get the allowed log levels from the config
+ var config = MetaConfig.get_default ();
+ string log_levels;