Skip to content

Commit

Permalink
snapcast: add Snapcast from badaix/snapos as is
Browse files Browse the repository at this point in the history
This will be squashed in the end.

Signed-off-by: Szabolcs Hubai <[email protected]>
  • Loading branch information
xabolcs committed Apr 17, 2024
1 parent f788525 commit 1e7d758
Show file tree
Hide file tree
Showing 3 changed files with 179 additions and 0 deletions.
117 changes: 117 additions & 0 deletions sound/snapcast/Makefile
Original file line number Diff line number Diff line change
@@ -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))
31 changes: 31 additions & 0 deletions sound/snapcast/files/snapclient.init
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/bin/sh /etc/rc.common
# Author: Johannes Pohl <[email protected]>
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
}
31 changes: 31 additions & 0 deletions sound/snapcast/files/snapserver.init
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/bin/sh /etc/rc.common
# Author: Johannes Pohl <[email protected]>
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
}

0 comments on commit 1e7d758

Please sign in to comment.