From patchwork Sun May 20 08:28:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fabrice Fontaine X-Patchwork-Id: 917088 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=busybox.net (client-ip=140.211.166.137; helo=fraxinus.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="O/qxCPkU"; dkim-atps=neutral Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40pZnk0LB3z9s37 for ; Sun, 20 May 2018 18:29:13 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 12A1987A2A; Sun, 20 May 2018 08:29:11 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0qrR06H-U2KI; Sun, 20 May 2018 08:29:09 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id 972968763F; Sun, 20 May 2018 08:29:09 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id 637FF1BFDB0 for ; Sun, 20 May 2018 08:29:07 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 6065F8763F for ; Sun, 20 May 2018 08:29:07 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hoUb7v7PTuui for ; Sun, 20 May 2018 08:29:06 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wm0-f49.google.com (mail-wm0-f49.google.com [74.125.82.49]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 9182B8743E for ; Sun, 20 May 2018 08:29:05 +0000 (UTC) Received: by mail-wm0-f49.google.com with SMTP id x12-v6so8394255wmc.0 for ; Sun, 20 May 2018 01:29:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=LKFYKk+K/dZohhx2OiG7lhTj3Ma/d9BA9kik82Hx7/c=; b=O/qxCPkU9HIv+4l4H3TmfNqyI+O+A8SrQVSwPea2FtLKouVFNNw6BpSuu4n7v+Qobr 2a7kHZ9DnTbGyIAKv51C3SBemEvX6LcotzmTFM87T44OKChudelQ9xjnzZz7vhTzR6qG 1oYh7fPL3Sq1YvS0yDACPndZYt7Ob5C+IXiaTLsZeFME67xB9ezIYlT/5dIfk8xbjM5W Mlgue1RNfVm6OTWAJhXCV7L8Lj1PFDWiWxCOt8h6Q97ntV9p8IfbNLuGiR2r1ojH+H2r Snb0NMA7Yo2tqnrvrEE4Siyx+T00o1uJolpXoT/e8EZKV1e16uxK1uWQKu2FjOfnx1Yi SpqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=LKFYKk+K/dZohhx2OiG7lhTj3Ma/d9BA9kik82Hx7/c=; b=O1TV36Fkx6dZWI0+1l8Xde6xeYEyWjZukU1+Yx29jGQeC23PzA0hwJlS75hBWGInkz OunX8kmlFWe8d3DQ62pRKclPOTJn4n2t67wuleFwYOL5+MP6fpWjOxHrPMH7EsZBsPes cnRNx+7Go/2j+yhG2+0Jyuk3aPpqbzhiDgNlod/gagGDqydcRu9RNXn51hvwQIVwe2Jd 5XLYjbEuik7VjdG/CNcfz/YpK5rJjaI7nepvOU/gDAGKdmf+I8kLwLu1tmKIp0cv2/0J KXyNy/or7vD05CukxsRKE9f5BqVfatlIGNopuE0CU0AKM2tQP2KtaR4RmE7Exx4tImHG 56EA== X-Gm-Message-State: ALKqPwfyCxdugOj8NP4juT8hIgM8Xu/9bOCIsgMjfGX8feRJ6+u4lDN0 zbKLCcGVOpdR2jEPi+pYUBevSw== X-Google-Smtp-Source: AB8JxZqVQoTY4KLD6c0m3jNB+xmZZjNTKm9x1DyaljKSSlbasgauqtx+JH46dXcAKHn0HTve2EXIrA== X-Received: by 2002:a1c:6443:: with SMTP id y64-v6mr7757241wmb.108.1526804943424; Sun, 20 May 2018 01:29:03 -0700 (PDT) Received: from fabrice-VirtualBox.home (ARennes-656-1-376-103.w90-32.abo.wanadoo.fr. [90.32.124.103]) by smtp.gmail.com with ESMTPSA id o9-v6sm11020097wrn.74.2018.05.20.01.29.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 20 May 2018 01:29:02 -0700 (PDT) From: Fabrice Fontaine To: buildroot@buildroot.org Date: Sun, 20 May 2018 10:28:53 +0200 Message-Id: <20180520082853.6753-1-fontaine.fabrice@gmail.com> X-Mailer: git-send-email 2.14.1 Subject: [Buildroot] [PATCH 1/1] gerbera: new package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.24 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fabrice Fontaine MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" A free media server. Stream your media to devices on your home network. https://gerbera.io Signed-off-by: Fabrice Fontaine --- DEVELOPERS | 1 + package/Config.in | 1 + package/gerbera/0001-Fix-atrailers-build.patch | 48 +++++++++ package/gerbera/Config.in | 27 +++++ package/gerbera/S99gerbera | 38 +++++++ package/gerbera/config.xml | 139 +++++++++++++++++++++++++ package/gerbera/gerbera.hash | 3 + package/gerbera/gerbera.mk | 114 ++++++++++++++++++++ 8 files changed, 371 insertions(+) create mode 100644 package/gerbera/0001-Fix-atrailers-build.patch create mode 100644 package/gerbera/Config.in create mode 100644 package/gerbera/S99gerbera create mode 100644 package/gerbera/config.xml create mode 100644 package/gerbera/gerbera.hash create mode 100644 package/gerbera/gerbera.mk diff --git a/DEVELOPERS b/DEVELOPERS index 43b1668343..9dc8d20215 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -671,6 +671,7 @@ F: package/alljoyn-tcl/ F: package/alljoyn-tcl-base/ F: package/boinc/ F: package/flatbuffers/ +F: package/gerbera/ F: package/gtksourceview/ F: package/gssdp/ F: package/gupnp/ diff --git a/package/Config.in b/package/Config.in index ecee4938c9..e72e9cdb1b 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1715,6 +1715,7 @@ menu "Networking applications" source "package/fping/Config.in" source "package/freeswitch/Config.in" source "package/freeswitch-mod-bcg729/Config.in" + source "package/gerbera/Config.in" source "package/gesftpserver/Config.in" source "package/glorytun/Config.in" source "package/gupnp-tools/Config.in" diff --git a/package/gerbera/0001-Fix-atrailers-build.patch b/package/gerbera/0001-Fix-atrailers-build.patch new file mode 100644 index 0000000000..ba99ef4714 --- /dev/null +++ b/package/gerbera/0001-Fix-atrailers-build.patch @@ -0,0 +1,48 @@ +From 5d4c24bcca7f8d7f550720461373fb84eefef27e Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 12 May 2018 14:16:30 +0200 +Subject: [PATCH] Fix atrailers build + +i2i function is used in atrailers_service.cc but this function is +defined only if defined(HAVE_JS) || defined(HAVE_TAGLIB) || +defined(YOUTUBE) || defined(HAVE_LIBMP4V2) as a result compilation +fails if HAVE_CURL is set but HAVE_JS and HAVE_TAGLIG are not. +As youtube and libmp4v2 support have been dropped, replace those by +ATRAILERS in this list. + +[Upstream Status: merged (https://github.com/gerbera/gerbera/pull/300)] +Signed-off-by: Fabrice Fontaine +--- + src/string_converter.cc | 2 +- + src/string_converter.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/string_converter.cc b/src/string_converter.cc +index b0b1f20f..79f46008 100644 +--- a/src/string_converter.cc ++++ b/src/string_converter.cc +@@ -226,7 +226,7 @@ Ref StringConverter::p2i() + } + #endif + +-#if defined (HAVE_JS) || defined(HAVE_TAGLIB) || defined(YOUTUBE) || defined(HAVE_LIBMP4V2) ++#if defined (HAVE_JS) || defined(HAVE_TAGLIB) || defined(ATRAILERS) + + Ref StringConverter::i2i() + { +diff --git a/src/string_converter.h b/src/string_converter.h +index c0b64f29..ca8ae16f 100644 +--- a/src/string_converter.h ++++ b/src/string_converter.h +@@ -66,7 +66,7 @@ public: + static zmm::Ref p2i(); + + #endif +-#if defined(HAVE_JS) || defined(HAVE_TAGLIB) || defined(YOUTUBE) || defined(HAVE_LIBMP4V2) ++#if defined(HAVE_JS) || defined(HAVE_TAGLIB) || defined(ATRAILERS) + /// \brief safeguard - internal to internal - needed to catch some + /// scenarious where the user may have forgotten to add proper conversion + /// in the script. +-- +2.14.1 + diff --git a/package/gerbera/Config.in b/package/gerbera/Config.in new file mode 100644 index 0000000000..b0155d1b37 --- /dev/null +++ b/package/gerbera/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_GERBERA + bool "gerbera" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14 + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_PACKAGE_LIBUPNP # libupnp18 + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_LIBUPNP18 + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_ZLIB + help + A free media server. + Stream your media to devices on your home network. + + https://gerbera.io + +comment "gerbera needs a toolchain w/ C++, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_PACKAGE_LIBUPNP + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/package/gerbera/S99gerbera b/package/gerbera/S99gerbera new file mode 100644 index 0000000000..f0743962cf --- /dev/null +++ b/package/gerbera/S99gerbera @@ -0,0 +1,38 @@ +#!/bin/sh + +NAME=gerbera +PIDFILE=/var/run/$NAME.pid +DAEMON=/usr/bin/$NAME +DAEMON_ARGS="-c /etc/gerbera/config.xml" + +start() { + printf "Starting $NAME: " + start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON -- $DAEMON_ARGS + [ $? = 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}" + exit 1 +esac + +exit $? diff --git a/package/gerbera/config.xml b/package/gerbera/config.xml new file mode 100644 index 0000000000..fa990d1502 --- /dev/null +++ b/package/gerbera/config.xml @@ -0,0 +1,139 @@ + + + + + + + + + Gerbera + uuid:ac20d9b6-5c82-48e6-80de-436965fbe1d7 + /var/lib/gerbera + /usr/share/gerbera/web + + 1800 + + + gerbera.db + + + + + + + + + + * + + video + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + audio/L16 + no + yes + no + + + + + video/mpeg + yes + yes + yes + + + + + + diff --git a/package/gerbera/gerbera.hash b/package/gerbera/gerbera.hash new file mode 100644 index 0000000000..a9281cc253 --- /dev/null +++ b/package/gerbera/gerbera.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 a64fe5820aced590bcdc22600596dc8a41c0baf68d7c0ec5baf7a561ade820df gerbera-v1.2.0.tar.gz +sha256 cae4138373be41fd2be75faf41ce7efbcf49fb17d0e05ad1c51cc01ac335b9b6 LICENSE.md diff --git a/package/gerbera/gerbera.mk b/package/gerbera/gerbera.mk new file mode 100644 index 0000000000..9fb6ddfa8d --- /dev/null +++ b/package/gerbera/gerbera.mk @@ -0,0 +1,114 @@ +################################################################################ +# +# gerbera +# +################################################################################ + +GERBERA_VERSION = v1.2.0 +GERBERA_SITE = $(call github,gerbera,gerbera,$(GERBERA_VERSION)) +GERBERA_LICENSE = GPLv2 +GERBERA_LICENSE_FILES = LICENSE.md +GERBERA_DEPENDENCIES = \ + expat \ + host-pkgconf \ + libupnp18 \ + sqlite \ + util-linux \ + zlib +GERBERA_CONF_OPTS = \ + -DWITH_DEBUG=OFF \ + -DWITH_JS=OFF + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +GERBERA_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -latomic" +endif + +ifeq ($(BR2_PACKAGE_EXIV2),y) +GERBERA_DEPENDENCIES += exiv2 +GERBERA_CONF_OPTS += -DWITH_EXIV2=ON +else +GERBERA_CONF_OPTS += -DWITH_EXIV2=OFF +endif + +ifeq ($(BR2_PACKAGE_FFMPEG),y) +GERBERA_DEPENDENCIES += ffmpeg +GERBERA_CONF_OPTS += -DWITH_AVCODEC=ON +else +GERBERA_CONF_OPTS += -DWITH_AVCODEC=OFF +endif + +ifeq ($(BR2_PACKAGE_FILE),y) +GERBERA_DEPENDENCIES += file +GERBERA_CONF_OPTS += -DWITH_MAGIC=ON +else +GERBERA_CONF_OPTS += -DWITH_MAGIC=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +GERBERA_DEPENDENCIES += libcurl +GERBERA_CONF_OPTS += -DWITH_CURL=ON +else +GERBERA_CONF_OPTS += -DWITH_CURL=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBEXIF),y) +GERBERA_DEPENDENCIES += libexif +GERBERA_CONF_OPTS += -DWITH_EXIF=ON +else +GERBERA_CONF_OPTS += -DWITH_EXIF=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +GERBERA_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_PACKAGE_MYSQL),y) +GERBERA_DEPENDENCIES += mysql +GERBERA_CONF_OPTS += -DWITH_MYSQL=ON +else +GERBERA_CONF_OPTS += -DWITH_MYSQL=OFF +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +GERBERA_DEPENDENCIES += systemd +GERBERA_CONF_OPTS += -DWITH_SYSTEMD=ON +else +GERBERA_CONF_OPTS += -DWITH_SYSTEMD=OFF +endif + +ifeq ($(BR2_PACKAGE_TAGLIB),y) +GERBERA_DEPENDENCIES += taglib +GERBERA_CONF_OPTS += -DWITH_TAGLIB=ON +else +GERBERA_CONF_OPTS += -DWITH_TAGLIB=OFF +endif + +# gerbera does not provide a default configuration file, it can be +# created during run time through --create-config: +# http://docs.gerbera.io/en/latest/config-overview.html#generating-configuration +# However, to have a correct home directory and UDN, install it ourself +define GERBERA_INSTALL_CONFIGURATION + $(INSTALL) -D -m 0644 package/gerbera/config.xml \ + $(TARGET_DIR)/etc/gerbera/config.xml +endef + +GERBERA_POST_INSTALL_TARGET_HOOKS += GERBERA_INSTALL_CONFIGURATION + +define GERBERA_USERS + gerbera -1 gerbera -1 * /var/lib/gerbera - - Gerbera user +endef + +define GERBERA_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/gerbera/S99gerbera \ + $(TARGET_DIR)/etc/init.d/S99gerbera +endef + +# gerbera.service is installed by cmake in $(TARGET_DIR)/usr/lib/systemd/system +define GERBERA_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/gerbera.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/gerbera.service +endef + +$(eval $(cmake-package))