diff --git a/sound/snapcast/Makefile b/sound/snapcast/Makefile index a7c2291765..df23e780ab 100644 --- a/sound/snapcast/Makefile +++ b/sound/snapcast/Makefile @@ -1,22 +1,20 @@ -# -# Copyright (C) 2015 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# +# SPDX-License-Identifier: GPL-2.0-or-later include $(TOPDIR)/rules.mk -PKG_NAME := snapcast -PKG_VERSION := 0.27.0 -PKG_RELEASE := $(PKG_SOURCE_VERSION) -PKG_USE_MIPS16 := 0 +PKG_NAME:=snapcast +PKG_VERSION:=0.28.0 +PKG_RELEASE:=1 -# PKG_MIRROR_HASH=skip PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/badaix/snapcast.git -PKG_SOURCE_VERSION:=v0.27.0 -PKG_BUILD_DIR:=$(BUILD_DIR)/snapcast-$(PKG_VERSION) +PKG_SOURCE_VERSION:=v$(PKG_VERSION) +PKG_MIRROR_HASH=288325fc8b134502adb522711c18210794734675684cf5d8eba8a0a82778f6c9 + +PKG_MAINTAINER:=Szabolcs Hubai , David Andreoletti +PKG_LICENSE:=GPL-3.0-or-later +PKG_LICENSE_FILES:=LICENSE +PKG_CPE_ID:=cpe:/a:badaix:snapcast include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/cmake.mk @@ -24,73 +22,58 @@ include $(INCLUDE_DIR)/cmake.mk CMAKE_OPTIONS += -DBUILD_TESTS=OFF define Package/snapcast/Default - SECTION := sound - CATEGORY := Sound - TITLE := Synchronous multiroom audio player - DEPENDS := +AUDIO_SUPPORT:alsa-lib +libstdcpp +libavahi-client +libatomic +libogg +libflac +libopus +boost +libsoxr - URL := https://github.com/badaix/snapcast + SECTION:=sound + CATEGORY:=Sound + TITLE:=Synchronous multiroom audio player + DEPENDS:=+AUDIO_SUPPORT:alsa-lib +libavahi-client +libatomic +libogg +libflac +libopus +boost +libsoxr + URL:=https://github.com/badaix/snapcast endef -define Package/snapcast/description/Default - Synchronous audio player -endef +define Package/snapcast/Default/description + Synchronous audio player - Snapcast -define Package/snapcast - $(call Package/snapcast/Default) - TITLE += packages -endef + Snapcast is a multi-room client-server audio player, + where all clients are time synchronized with the server + to play perfectly synced audio. + It's not a standalone player, but an extension that turns + your existing audio player into a Sonos-like multiroom solution. + Audio is captured by the server and routed to the connected clients. + Several players can feed audio to the server in parallel + and clients can be grouped to play the same audio stream. + One of the most generic ways to use Snapcast is in conjunction + with the Music Player Daemon (MPD) or Mopidy. -define Package/snapcast/description - $(call Package/snapcast/description/Default) - Snapcast is a multi-room client-server audio player, - where all clients are time synchronized with the server - to play perfectly synced audio endef define Package/snapserver - $(call Package/snapcast/Default) - TITLE += Snapserver - DEPENDS += +AUDIO_SUPPORT:alsa-lib +libvorbis +libsoxr - HIDDEN := 1 + $(call Package/snapcast/Default) + TITLE+= (server) + DEPENDS+=+libvorbis endef define Package/snapclient - $(call Package/snapcast/Default) - TILE += Snapclient - DEPENDS += +libvorbisidec +libsoxr - HIDDEN := 1 + $(call Package/snapcast/Default) + TITLE+= (client) + DEPENDS+=+libvorbisidec endef define Package/snapserver/description - $(call Package/snapcast/description/Default) - Snapcast server + $(call Package/snapcast/Default/description) + This package contains the Snapcast server. endef define Package/snapclient/description - $(call Package/snapcast/description/Default) - Snapcast client + $(call Package/snapcast/Default/description) + This package contains the Snapcast client. endef -define Package/snapcast/config - menu "Select Snapcast Options" - depends on PACKAGE_snapcast - comment "Choose server or client" - config PACKAGE_snapserver - prompt "Snapserver" - help - Snapcast server - default n - - config PACKAGE_snapclient - prompt "Snapclient" - help - Snapcast client - default y - endmenu +define Package/snapserver/conffiles +/etc/config/snapserver +/etc/snapserver.conf endef -define Package/snapcast/Default/install - true +define Package/snapclient/conffiles +/etc/config/snapclient endef define Package/snapserver/install @@ -98,8 +81,6 @@ define Package/snapserver/install $(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/snapserver $(1)/usr/bin/ $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) ./files/snapserver.init $(1)/etc/init.d/snapserver - $(INSTALL_DIR) $(1)/etc/default - $(INSTALL_BIN) $(CURDIR)/../../debian/snapserver.default $(1)/etc/default/snapserver $(INSTALL_BIN) $(PKG_BUILD_DIR)/server/etc/snapserver.conf $(1)/etc/snapserver.conf endef @@ -108,10 +89,7 @@ define Package/snapclient/install $(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/snapclient $(1)/usr/bin/ $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) ./files/snapclient.init $(1)/etc/init.d/snapclient - $(INSTALL_DIR) $(1)/etc/default - $(INSTALL_BIN) $(CURDIR)/../../debian/snapclient.default $(1)/etc/default/snapclient endef $(eval $(call BuildPackage,snapserver)) $(eval $(call BuildPackage,snapclient)) -$(eval $(call BuildPackage,snapcast)) diff --git a/sound/snapcast/files/snapclient.conf b/sound/snapcast/files/snapclient.conf new file mode 100644 index 0000000000..051890a0b8 --- /dev/null +++ b/sound/snapcast/files/snapclient.conf @@ -0,0 +1,4 @@ +config snapclient 'config' + option enabled '0' + option log_sink 'system' + option opts '' diff --git a/sound/snapcast/files/snapclient.init b/sound/snapcast/files/snapclient.init index 9bace4b084..49e95dc415 100755 --- a/sound/snapcast/files/snapclient.init +++ b/sound/snapcast/files/snapclient.init @@ -1,5 +1,6 @@ #!/bin/sh /etc/rc.common # Author: Johannes Pohl +# Co-Author: Szabolcs Hubai START=90 USE_PROCD=1 @@ -7,21 +8,22 @@ USE_PROCD=1 NAME=snapclient PROG=/usr/bin/$NAME PID_FILE=/var/run/$NAME.pid -CONFIG_FILE=/etc/default/$NAME - start_service() { - local autostart opts + config_load "$NAME" - autostart=$(grep ^START_SNAPCLIENT $CONFIG_FILE |cut -d= -f2) - [ "$autostart" != "true" ] && logger -t $NAME "Not starting due to START_SNAPCLIENT" && exit 0 + local enabled + config_get_bool enabled "config" enabled 0 + [ "$enabled" -ne "1" ] && logger -t $NAME "Disabled in /etc/config/$NAME" && return 1 - opts=$(grep ^SNAPCLIENT_OPTS $CONFIG_FILE |cut -d "\"" -f2) - opts="--logsink system $opts" + local log_sink opts + config_get log_sink "config" log_sink system + config_get opts "config" opts "" procd_open_instance procd_set_param command $PROG + procd_append_param command --logsink $log_sink procd_append_param command $opts procd_set_param pidfile $PID_FILE procd_set_param respawn # use the defaults for respawing crashed process diff --git a/sound/snapcast/files/snapserver.conf b/sound/snapcast/files/snapserver.conf new file mode 100644 index 0000000000..a341c48027 --- /dev/null +++ b/sound/snapcast/files/snapserver.conf @@ -0,0 +1,4 @@ +config snapserver 'config' + option enabled '0' + option log_sink 'system' + option opts '' diff --git a/sound/snapcast/files/snapserver.init b/sound/snapcast/files/snapserver.init index 0747fe95c9..7aae17a200 100755 --- a/sound/snapcast/files/snapserver.init +++ b/sound/snapcast/files/snapserver.init @@ -1,5 +1,6 @@ #!/bin/sh /etc/rc.common # Author: Johannes Pohl +# Co-Author: Szabolcs Hubai START=90 USE_PROCD=1 @@ -7,21 +8,22 @@ USE_PROCD=1 NAME=snapserver PROG=/usr/bin/$NAME PID_FILE=/var/run/$NAME.pid -CONFIG_FILE=/etc/default/$NAME - start_service() { - local autostart opts + config_load "$NAME" - autostart=$(grep ^START_SNAPSERVER $CONFIG_FILE |cut -d= -f2) - [ "$autostart" != "true" ] && logger -t $NAME "Not starting due to START_SNAPSERVER" && exit 0 + local enabled + config_get_bool enabled "config" enabled 0 + [ "$enabled" -ne "1" ] && logger -t $NAME "Disabled in /etc/config/$NAME" && return 1 - opts=$(grep ^SNAPSERVER_OPTS $CONFIG_FILE |cut -d "\"" -f2) - opts="--logging.sink system $opts" + local log_sink opts + config_get log_sink "config" log_sink system + config_get opts "config" opts "" procd_open_instance procd_set_param command $PROG + procd_append_param command --logging.sink $log_sink procd_append_param command $opts procd_set_param pidfile $PID_FILE procd_set_param respawn # use the defaults for respawing crashed process diff --git a/sound/snapcast/test.sh b/sound/snapcast/test.sh new file mode 100755 index 0000000000..fb410e0d0a --- /dev/null +++ b/sound/snapcast/test.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +"$1" --version | grep -F "$PKG_VERSION"