From 79bbef16b18e1a8050e8a39d8d1b11598ba77200 Mon Sep 17 00:00:00 2001 From: Szabolcs Hubai Date: Thu, 18 Apr 2024 00:18:44 +0200 Subject: [PATCH] snapcast: add Snapcast from badaix/snapos as is This will be squashed in the end. Fixes: #23924 Signed-off-by: Szabolcs Hubai --- sound/snapcast/Makefile | 117 +++++++++++++++++++++++++++ sound/snapcast/files/snapclient.init | 31 +++++++ sound/snapcast/files/snapserver.init | 31 +++++++ 3 files changed, 179 insertions(+) create mode 100644 sound/snapcast/Makefile create mode 100755 sound/snapcast/files/snapclient.init create mode 100755 sound/snapcast/files/snapserver.init diff --git a/sound/snapcast/Makefile b/sound/snapcast/Makefile new file mode 100644 index 0000000000..a7c2291765 --- /dev/null +++ b/sound/snapcast/Makefile @@ -0,0 +1,117 @@ +# +# Copyright (C) 2015 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 := snapcast +PKG_VERSION := 0.27.0 +PKG_RELEASE := $(PKG_SOURCE_VERSION) +PKG_USE_MIPS16 := 0 + +# 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) + +include $(INCLUDE_DIR)/package.mk +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 +endef + +define Package/snapcast/description/Default + Synchronous audio player +endef + +define Package/snapcast + $(call Package/snapcast/Default) + TITLE += packages +endef + +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 +endef + +define Package/snapclient + $(call Package/snapcast/Default) + TILE += Snapclient + DEPENDS += +libvorbisidec +libsoxr + HIDDEN := 1 +endef + +define Package/snapserver/description + $(call Package/snapcast/description/Default) + Snapcast server +endef + +define Package/snapclient/description + $(call Package/snapcast/description/Default) + 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 +endef + +define Package/snapcast/Default/install + true +endef + +define Package/snapserver/install + $(INSTALL_DIR) $(1)/usr/bin + $(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 + +define Package/snapclient/install + $(INSTALL_DIR) $(1)/usr/bin + $(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.init b/sound/snapcast/files/snapclient.init new file mode 100755 index 0000000000..9bace4b084 --- /dev/null +++ b/sound/snapcast/files/snapclient.init @@ -0,0 +1,31 @@ +#!/bin/sh /etc/rc.common +# Author: Johannes Pohl +START=90 + +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 + + autostart=$(grep ^START_SNAPCLIENT $CONFIG_FILE |cut -d= -f2) + [ "$autostart" != "true" ] && logger -t $NAME "Not starting due to START_SNAPCLIENT" && exit 0 + + opts=$(grep ^SNAPCLIENT_OPTS $CONFIG_FILE |cut -d "\"" -f2) + opts="--logsink system $opts" + + procd_open_instance + procd_set_param command $PROG + procd_append_param command $opts + procd_set_param pidfile $PID_FILE + procd_set_param respawn # use the defaults for respawing crashed process + procd_set_param stderr 1 + procd_set_param stdout 1 + procd_close_instance +} diff --git a/sound/snapcast/files/snapserver.init b/sound/snapcast/files/snapserver.init new file mode 100755 index 0000000000..0747fe95c9 --- /dev/null +++ b/sound/snapcast/files/snapserver.init @@ -0,0 +1,31 @@ +#!/bin/sh /etc/rc.common +# Author: Johannes Pohl +START=90 + +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 + + autostart=$(grep ^START_SNAPSERVER $CONFIG_FILE |cut -d= -f2) + [ "$autostart" != "true" ] && logger -t $NAME "Not starting due to START_SNAPSERVER" && exit 0 + + opts=$(grep ^SNAPSERVER_OPTS $CONFIG_FILE |cut -d "\"" -f2) + opts="--logging.sink system $opts" + + procd_open_instance + procd_set_param command $PROG + procd_append_param command $opts + procd_set_param pidfile $PID_FILE + procd_set_param respawn # use the defaults for respawing crashed process + procd_set_param stderr 1 + procd_set_param stdout 1 + procd_close_instance +}