From 8177f5d66b8160339aa3793e8724a02b2ad2651a Mon Sep 17 00:00:00 2001 From: hgy59 Date: Mon, 28 Dec 2020 16:58:27 +0100 Subject: [PATCH 01/14] add forked-daadp - add forked-daadp v27.2 - add dependencies - enable unlock notify in cross/sqlite --- cross/avahi/Makefile | 25 ++++++++++++++++++ cross/avahi/PLIST | 18 +++++++++++++ cross/avahi/digests | 3 +++ cross/dbus/PLIST | 12 +++++++++ cross/forked-daapd/Makefile | 23 ++++++++++++++++ cross/forked-daapd/PLIST | 4 +++ cross/forked-daapd/digests | 3 +++ cross/libantlr3c/Makefile | 16 ++++++++++++ cross/libantlr3c/PLIST | 1 + cross/libantlr3c/digests | 3 +++ cross/libconfuse/Makefile | 16 ++++++++++++ cross/libconfuse/PLIST | 3 +++ cross/libconfuse/digests | 3 +++ cross/mxml/Makefile | 21 +++++++++++++++ cross/mxml/PLIST | 3 +++ cross/mxml/digests | 3 +++ spk/forked-daapd/Makefile | 36 ++++++++++++++++++++++++++ spk/forked-daapd/PLIST | 0 spk/forked-daapd/src/forked-daapd.png | Bin 0 -> 7899 bytes 19 files changed, 193 insertions(+) create mode 100644 cross/avahi/Makefile create mode 100644 cross/avahi/PLIST create mode 100644 cross/avahi/digests create mode 100644 cross/forked-daapd/Makefile create mode 100644 cross/forked-daapd/PLIST create mode 100644 cross/forked-daapd/digests create mode 100644 cross/libantlr3c/Makefile create mode 100644 cross/libantlr3c/PLIST create mode 100644 cross/libantlr3c/digests create mode 100644 cross/libconfuse/Makefile create mode 100644 cross/libconfuse/PLIST create mode 100644 cross/libconfuse/digests create mode 100644 cross/mxml/Makefile create mode 100644 cross/mxml/PLIST create mode 100644 cross/mxml/digests create mode 100644 spk/forked-daapd/Makefile create mode 100644 spk/forked-daapd/PLIST create mode 100644 spk/forked-daapd/src/forked-daapd.png diff --git a/cross/avahi/Makefile b/cross/avahi/Makefile new file mode 100644 index 00000000000..33df52d0f97 --- /dev/null +++ b/cross/avahi/Makefile @@ -0,0 +1,25 @@ +PKG_NAME = avahi +PKG_VERS = 0.8 +PKG_EXT = tar.gz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://github.com/lathiat/avahi/releases/download/v$(PKG_VERS) +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +DEPENDS = native/glib cross/glib cross/libevent cross/expat cross/libdaemon cross/dbus + +HOMEPAGE = https://www.avahi.org/ +COMMENT = Avahi - Service Discovery for Linux using mDNS/DNS-SD -- compatible with Bonjour +LICENSE = LGPLv2.1 + +GNU_CONFIGURE = 1 +CONFIGURE_ARGS = --with-distro=none +CONFIGURE_ARGS += --disable-qt5 --disable-qt4 +CONFIGURE_ARGS += --disable-gtk --disable-gtk3 +CONFIGURE_ARGS += --disable-gdbm +CONFIGURE_ARGS += --disable-python +CONFIGURE_ARGS += --disable-mono --disable-monodoc + +NATIVE_GLIB_GOBJECT_DIR = $(realpath $(WORK_DIR)/../../../native/glib/work-native/install/usr/local/bin) +ENV = PATH=$$PATH:$(NATIVE_GLIB_GOBJECT_DIR) + +include ../../mk/spksrc.cross-cc.mk diff --git a/cross/avahi/PLIST b/cross/avahi/PLIST new file mode 100644 index 00000000000..4a90e8ec59e --- /dev/null +++ b/cross/avahi/PLIST @@ -0,0 +1,18 @@ +lnk:lib/libavahi-client.so +lnk:lib/libavahi-client.so.3 +lib:lib/libavahi-client.so.3.2.9 +lnk:lib/libavahi-common.so +lnk:lib/libavahi-common.so.3 +lib:lib/libavahi-common.so.3.5.4 +lnk:lib/libavahi-core.so +lnk:lib/libavahi-core.so.7 +lib:lib/libavahi-core.so.7.1.0 +lnk:lib/libavahi-glib.so +lnk:lib/libavahi-glib.so.1 +lib:lib/libavahi-glib.so.1.0.2 +lnk:lib/libavahi-gobject.so +lnk:lib/libavahi-gobject.so.0 +lib:lib/libavahi-gobject.so.0.0.5 +lnk:lib/libavahi-libevent.so +lnk:lib/libavahi-libevent.so.1 +lib:lib/libavahi-libevent.so.1.0.0 diff --git a/cross/avahi/digests b/cross/avahi/digests new file mode 100644 index 00000000000..01a9d862c30 --- /dev/null +++ b/cross/avahi/digests @@ -0,0 +1,3 @@ +avahi-0.8.tar.gz SHA1 969a50ae18c8d8e2288435a75666dd076e69852a +avahi-0.8.tar.gz SHA256 060309d7a333d38d951bc27598c677af1796934dbd98e1024e7ad8de798fedda +avahi-0.8.tar.gz MD5 229c6aa30674fc43c202b22c5f8c2be7 diff --git a/cross/dbus/PLIST b/cross/dbus/PLIST index dcd1cfcbe45..4d078f73695 100644 --- a/cross/dbus/PLIST +++ b/cross/dbus/PLIST @@ -1,3 +1,15 @@ +bin:bin/dbus-cleanup-sockets +bin:bin/dbus-daemon +bin:bin/dbus-launch +bin:bin/dbus-monitor +bin:bin/dbus-run-session +bin:bin/dbus-send +bin:bin/dbus-test-tool +bin:bin/dbus-update-activation-environment +bin:bin/dbus-uuidgen +lnk:lib/libdbus-1.so +lnk:lib/libdbus-1.so.3 +lib:lib/libdbus-1.so.3.29.0 lnk:lib/libdbus-1.so lnk:lib/libdbus-1.so.3 lib:lib/libdbus-1.so.3.31.0 diff --git a/cross/forked-daapd/Makefile b/cross/forked-daapd/Makefile new file mode 100644 index 00000000000..0690859a08d --- /dev/null +++ b/cross/forked-daapd/Makefile @@ -0,0 +1,23 @@ +PKG_NAME = forked-daapd +PKG_VERS = 27.2 +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://github.com/ejurgensen/forked-daapd/releases/download/$(PKG_VERS) +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +DEPENDS = cross/libunistring cross/zlib cross/libconfuse cross/curl +DEPENDS += cross/mxml cross/sqlite cross/libevent cross/json-c +DEPENDS += cross/libantlr3c cross/libgcrypt +DEPENDS += cross/ffmpeg +DEPENDS += cross/avahi +DEPENDS += cross/libplist +DEPENDS += cross/libwebsockets + +HOMEPAGE = http://ejurgensen.github.io/forked-daapd/ +COMMENT = Linux/FreeBSD DAAP (iTunes) and MPD media server with support for AirPlay devices (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio. +LICENSE = GPLv2 + +GNU_CONFIGURE = 1 +ADDITIONAL_CFLAGS = -std=c99 + +include ../../mk/spksrc.cross-cc.mk diff --git a/cross/forked-daapd/PLIST b/cross/forked-daapd/PLIST new file mode 100644 index 00000000000..e85e0f4f7f5 --- /dev/null +++ b/cross/forked-daapd/PLIST @@ -0,0 +1,4 @@ +rsc:etc/forked-daapd.conf +lib:lib/forked-daapd/forked-daapd-sqlext.so +bin:sbin/forked-daapd +rsc:share/forked-daapd/htdocs/ diff --git a/cross/forked-daapd/digests b/cross/forked-daapd/digests new file mode 100644 index 00000000000..669dab400b0 --- /dev/null +++ b/cross/forked-daapd/digests @@ -0,0 +1,3 @@ +forked-daapd-27.2.tar.xz SHA1 c4a0a9766ff8e1f7d39f199783b12c2f0c127e04 +forked-daapd-27.2.tar.xz SHA256 27294a893253d232161f4521fc42147e65324ce5a13fcf550b537100375277bb +forked-daapd-27.2.tar.xz MD5 62133c9477a0506a3bfdcfc7e3c1dd9d diff --git a/cross/libantlr3c/Makefile b/cross/libantlr3c/Makefile new file mode 100644 index 00000000000..c8979357cde --- /dev/null +++ b/cross/libantlr3c/Makefile @@ -0,0 +1,16 @@ +PKG_NAME = libantlr3c +PKG_VERS = 3.4 +PKG_EXT = tar.gz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://www.antlr3.org/download/C/ +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +DEPENDS = + +HOMEPAGE = https://www.antlr3.org/ +COMMENT = ANother Tool for Language Recognition, is a language tool that provides a framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages. +LICENSE = 3-clause BSD + +GNU_CONFIGURE = 1 + +include ../../mk/spksrc.cross-cc.mk diff --git a/cross/libantlr3c/PLIST b/cross/libantlr3c/PLIST new file mode 100644 index 00000000000..4c86610535a --- /dev/null +++ b/cross/libantlr3c/PLIST @@ -0,0 +1 @@ +lib:lib/libantlr3c.so diff --git a/cross/libantlr3c/digests b/cross/libantlr3c/digests new file mode 100644 index 00000000000..d329cd3eb3c --- /dev/null +++ b/cross/libantlr3c/digests @@ -0,0 +1,3 @@ +libantlr3c-3.4.tar.gz SHA1 faa9ab43ab4d3774f015471c3f011cc247df6a18 +libantlr3c-3.4.tar.gz SHA256 ca914a97f1a2d2f2c8e1fca12d3df65310ff0286d35c48b7ae5f11dcc8b2eb52 +libantlr3c-3.4.tar.gz MD5 08b1420129d5dccd0f4461cedf2a0d7d diff --git a/cross/libconfuse/Makefile b/cross/libconfuse/Makefile new file mode 100644 index 00000000000..bf04e050780 --- /dev/null +++ b/cross/libconfuse/Makefile @@ -0,0 +1,16 @@ +PKG_NAME = confuse +PKG_VERS = 3.3 +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://github.com/libconfuse/libconfuse/releases/download/v$(PKG_VERS) +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +DEPENDS = + +HOMEPAGE = https://github.com/libconfuse/libconfuse#readme +COMMENT = Small configuration file parser library for C. +LICENSE = ISC + +GNU_CONFIGURE = 1 + +include ../../mk/spksrc.cross-cc.mk diff --git a/cross/libconfuse/PLIST b/cross/libconfuse/PLIST new file mode 100644 index 00000000000..dfc9a5cfeb2 --- /dev/null +++ b/cross/libconfuse/PLIST @@ -0,0 +1,3 @@ +lnk:lib/libconfuse.so +lnk:lib/libconfuse.so.2 +lib:lib/libconfuse.so.2.1.0 diff --git a/cross/libconfuse/digests b/cross/libconfuse/digests new file mode 100644 index 00000000000..1b137312885 --- /dev/null +++ b/cross/libconfuse/digests @@ -0,0 +1,3 @@ +confuse-3.3.tar.xz SHA1 8d07f3877331b7e87309e4dcacb353ce5e2ea0bd +confuse-3.3.tar.xz SHA256 1dd50a0320e135a55025b23fcdbb3f0a81913b6d0b0a9df8cc2fdf3b3dc67010 +confuse-3.3.tar.xz MD5 a183cef2cecdd3783436ff8de500d274 diff --git a/cross/mxml/Makefile b/cross/mxml/Makefile new file mode 100644 index 00000000000..016593a54b6 --- /dev/null +++ b/cross/mxml/Makefile @@ -0,0 +1,21 @@ +PKG_NAME = mxml +PKG_VERS = 3.2 +PKG_EXT = tar.gz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://github.com/michaelrsweet/mxml/releases/download/v$(PKG_VERS) +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +DEPENDS = + +HOMEPAGE = https://www.msweet.org/mxml +COMMENT = Tiny XML library. +LICENSE = Apache 2.0 + +GNU_CONFIGURE = 1 +INSTALL_TARGET = mxml_install + +include ../../mk/spksrc.cross-cc.mk + +.PHONY: mxml_install +mxml_install: + @$(RUN) $(MAKE) DSTROOT=$(INSTALL_DIR) install diff --git a/cross/mxml/PLIST b/cross/mxml/PLIST new file mode 100644 index 00000000000..c694a714703 --- /dev/null +++ b/cross/mxml/PLIST @@ -0,0 +1,3 @@ +lnk:lib/libmxml.so +lnk:lib/libmxml.so.1 +lib:lib/libmxml.so.1.6 diff --git a/cross/mxml/digests b/cross/mxml/digests new file mode 100644 index 00000000000..46282fc2f5f --- /dev/null +++ b/cross/mxml/digests @@ -0,0 +1,3 @@ +mxml-3.2.tar.gz SHA1 0f13a4a29278c37a59c621dcbe79af0db7f71e97 +mxml-3.2.tar.gz SHA256 b894f6c64964f2e77902564c17ba00f5d077a7a24054e7c1937903b0bd42c974 +mxml-3.2.tar.gz MD5 1befcac3c4b46c48acd9649e4d741fb4 diff --git a/spk/forked-daapd/Makefile b/spk/forked-daapd/Makefile new file mode 100644 index 00000000000..055ce086e45 --- /dev/null +++ b/spk/forked-daapd/Makefile @@ -0,0 +1,36 @@ +SPK_NAME = forked-daapd +SPK_VERS = 27.2 +SPK_REV = 1 +SPK_ICON = src/forked-daapd.png + +DEPENDS = cross/forked-daapd + +MAINTAINER = SynoCommunity +DESCRIPTION = Linux/FreeBSD DAAP (iTunes) and MPD media server with support for AirPlay devices (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio. + +RELOAD_UI = yes +DISPLAY_NAME = Forked DAAPd + +HOMEPAGE = http://ejurgensen.github.io/forked-daapd/ +LICENSE = GPLv2 + +STARTABLE=yes + +include ../../mk/spksrc.common.mk + +# Reuse FFmpeg libraries +export FFMPEG_DIR = $(shell pwd)/../ffmpeg/work-$(ARCH)-$(TCVERSION)/install/var/packages/ffmpeg/target + +ifneq ($(wildcard $(FFMPEG_DIR)),) +PRE_DEPEND_TARGET = daapd_pre_depend +SPK_DEPENDS = "ffmpeg>4.2" +# Use FFMPEG package shared libraries +FFMPEG_LIBS = libavcodec.pc libavdevice.pc libavfilter.pc libavformat.pc libavresample.pc libavutil.pc +endif + +include ../../mk/spksrc.spk.mk + +.PHONY: daapd_pre_depend +daapd_pre_depend: + mkdir -p $(STAGING_INSTALL_PREFIX)/lib/pkgconfig/ + $(foreach lib,$(FFMPEG_LIBS),ln -sf $(FFMPEG_DIR)/lib/pkgconfig/$(lib) $(STAGING_INSTALL_PREFIX)/lib/pkgconfig/ ;) diff --git a/spk/forked-daapd/PLIST b/spk/forked-daapd/PLIST new file mode 100644 index 00000000000..e69de29bb2d diff --git a/spk/forked-daapd/src/forked-daapd.png b/spk/forked-daapd/src/forked-daapd.png new file mode 100644 index 0000000000000000000000000000000000000000..c77e9e3d627ba62580e63b9c02070b1209ff7715 GIT binary patch literal 7899 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 literal 0 HcmV?d00001 From 46856a7c1c4deb0916e034a95d8e2ddf2b98836e Mon Sep 17 00:00:00 2001 From: hgy59 Date: Sun, 23 May 2021 15:03:41 +0200 Subject: [PATCH 02/14] rename package to owntone - source is still called forked-daapd but repository is renamed to owntone --- cross/forked-daapd/Makefile | 23 --------------------- cross/forked-daapd/digests | 3 --- cross/owntone/Makefile | 24 ++++++++++++++++++++++ cross/{forked-daapd => owntone}/PLIST | 0 cross/owntone/digests | 3 +++ spk/forked-daapd/src/forked-daapd.png | Bin 7899 -> 0 bytes spk/{forked-daapd => owntone}/Makefile | 27 ++++++++++++------------- spk/{forked-daapd => owntone}/PLIST | 0 spk/owntone/src/owntone.png | Bin 0 -> 35826 bytes 9 files changed, 40 insertions(+), 40 deletions(-) delete mode 100644 cross/forked-daapd/Makefile delete mode 100644 cross/forked-daapd/digests create mode 100644 cross/owntone/Makefile rename cross/{forked-daapd => owntone}/PLIST (100%) create mode 100644 cross/owntone/digests delete mode 100644 spk/forked-daapd/src/forked-daapd.png rename spk/{forked-daapd => owntone}/Makefile (53%) rename spk/{forked-daapd => owntone}/PLIST (100%) create mode 100644 spk/owntone/src/owntone.png diff --git a/cross/forked-daapd/Makefile b/cross/forked-daapd/Makefile deleted file mode 100644 index 0690859a08d..00000000000 --- a/cross/forked-daapd/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -PKG_NAME = forked-daapd -PKG_VERS = 27.2 -PKG_EXT = tar.xz -PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) -PKG_DIST_SITE = https://github.com/ejurgensen/forked-daapd/releases/download/$(PKG_VERS) -PKG_DIR = $(PKG_NAME)-$(PKG_VERS) - -DEPENDS = cross/libunistring cross/zlib cross/libconfuse cross/curl -DEPENDS += cross/mxml cross/sqlite cross/libevent cross/json-c -DEPENDS += cross/libantlr3c cross/libgcrypt -DEPENDS += cross/ffmpeg -DEPENDS += cross/avahi -DEPENDS += cross/libplist -DEPENDS += cross/libwebsockets - -HOMEPAGE = http://ejurgensen.github.io/forked-daapd/ -COMMENT = Linux/FreeBSD DAAP (iTunes) and MPD media server with support for AirPlay devices (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio. -LICENSE = GPLv2 - -GNU_CONFIGURE = 1 -ADDITIONAL_CFLAGS = -std=c99 - -include ../../mk/spksrc.cross-cc.mk diff --git a/cross/forked-daapd/digests b/cross/forked-daapd/digests deleted file mode 100644 index 669dab400b0..00000000000 --- a/cross/forked-daapd/digests +++ /dev/null @@ -1,3 +0,0 @@ -forked-daapd-27.2.tar.xz SHA1 c4a0a9766ff8e1f7d39f199783b12c2f0c127e04 -forked-daapd-27.2.tar.xz SHA256 27294a893253d232161f4521fc42147e65324ce5a13fcf550b537100375277bb -forked-daapd-27.2.tar.xz MD5 62133c9477a0506a3bfdcfc7e3c1dd9d diff --git a/cross/owntone/Makefile b/cross/owntone/Makefile new file mode 100644 index 00000000000..e96d0271005 --- /dev/null +++ b/cross/owntone/Makefile @@ -0,0 +1,24 @@ +PKG_NAME = owntone +PKG_ORIGINAL_NAME = forked-daapd +PKG_VERS = 27.4 +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_ORIGINAL_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://github.com/owntone/owntone-server/releases/download/$(PKG_VERS) +PKG_DIR = $(PKG_ORIGINAL_NAME)-$(PKG_VERS) + +DEPENDS = cross/libunistring cross/zlib cross/libconfuse cross/curl +DEPENDS += cross/mxml cross/sqlite cross/libevent cross/json-c +DEPENDS += cross/libantlr3c cross/libgcrypt +DEPENDS += cross/ffmpeg +DEPENDS += cross/avahi +DEPENDS += cross/libplist +DEPENDS += cross/libwebsockets + +HOMEPAGE = http://owntone.github.io/owntone-server +COMMENT = OwnTone is forked-daapd's new name! Linux/FreeBSD DAAP (iTunes) and MPD media server with support for AirPlay devices (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio. +LICENSE = GPLv2 + +GNU_CONFIGURE = 1 +ADDITIONAL_CFLAGS = -std=c99 + +include ../../mk/spksrc.cross-cc.mk diff --git a/cross/forked-daapd/PLIST b/cross/owntone/PLIST similarity index 100% rename from cross/forked-daapd/PLIST rename to cross/owntone/PLIST diff --git a/cross/owntone/digests b/cross/owntone/digests new file mode 100644 index 00000000000..ef1c9eaeed1 --- /dev/null +++ b/cross/owntone/digests @@ -0,0 +1,3 @@ +forked-daapd-27.4.tar.xz SHA1 3e529a3b28b0fa667bc93c07a50b30d06c2f8d2e +forked-daapd-27.4.tar.xz SHA256 00f71c687df268a3c4db77cecf37972e76832a99e34f09750d07a92934a0bfa8 +forked-daapd-27.4.tar.xz MD5 386fff5c55ccb957dc4ff2de753096ae diff --git a/spk/forked-daapd/src/forked-daapd.png b/spk/forked-daapd/src/forked-daapd.png deleted file mode 100644 index c77e9e3d627ba62580e63b9c02070b1209ff7715..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7899 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 diff --git a/spk/forked-daapd/Makefile b/spk/owntone/Makefile similarity index 53% rename from spk/forked-daapd/Makefile rename to spk/owntone/Makefile index 055ce086e45..c6c81a01d33 100644 --- a/spk/forked-daapd/Makefile +++ b/spk/owntone/Makefile @@ -1,28 +1,27 @@ -SPK_NAME = forked-daapd -SPK_VERS = 27.2 +SPK_NAME = owntone +SPK_VERS = 27.4 SPK_REV = 1 -SPK_ICON = src/forked-daapd.png +SPK_ICON = src/owntone.png -DEPENDS = cross/forked-daapd +DEPENDS = cross/owntone MAINTAINER = SynoCommunity -DESCRIPTION = Linux/FreeBSD DAAP (iTunes) and MPD media server with support for AirPlay devices (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio. +DESCRIPTION = OwnTone is forked-daapd's new name! Linux/FreeBSD DAAP (iTunes) and MPD media server with support for AirPlay devices (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio. -RELOAD_UI = yes -DISPLAY_NAME = Forked DAAPd +DISPLAY_NAME = OwnTone -HOMEPAGE = http://ejurgensen.github.io/forked-daapd/ +HOMEPAGE = http://owntone.github.io/owntone-server LICENSE = GPLv2 -STARTABLE=yes - -include ../../mk/spksrc.common.mk +STARTABLE = yes +SERIVCE_PORT = 3689 +ADMIN_PORT = $(SERIVCE_PORT) # Reuse FFmpeg libraries export FFMPEG_DIR = $(shell pwd)/../ffmpeg/work-$(ARCH)-$(TCVERSION)/install/var/packages/ffmpeg/target ifneq ($(wildcard $(FFMPEG_DIR)),) -PRE_DEPEND_TARGET = daapd_pre_depend +PRE_DEPEND_TARGET = owntone_pre_depend SPK_DEPENDS = "ffmpeg>4.2" # Use FFMPEG package shared libraries FFMPEG_LIBS = libavcodec.pc libavdevice.pc libavfilter.pc libavformat.pc libavresample.pc libavutil.pc @@ -30,7 +29,7 @@ endif include ../../mk/spksrc.spk.mk -.PHONY: daapd_pre_depend -daapd_pre_depend: +.PHONY: owntone_pre_depend +owntone_pre_depend: mkdir -p $(STAGING_INSTALL_PREFIX)/lib/pkgconfig/ $(foreach lib,$(FFMPEG_LIBS),ln -sf $(FFMPEG_DIR)/lib/pkgconfig/$(lib) $(STAGING_INSTALL_PREFIX)/lib/pkgconfig/ ;) diff --git a/spk/forked-daapd/PLIST b/spk/owntone/PLIST similarity index 100% rename from spk/forked-daapd/PLIST rename to spk/owntone/PLIST diff --git a/spk/owntone/src/owntone.png b/spk/owntone/src/owntone.png new file mode 100644 index 0000000000000000000000000000000000000000..16a1c302a706584c008e05df15f960a90dc46e16 GIT binary patch literal 35826 zcmbTdWmMbE7cKk?!QI_8KyfV^T#8Gf6qn)-#UZ#`3xz^~6j}6cea=i);&rrC@UW?|0RX^LQ&rRh02Jg~6aW()`Eu?*d5e5` z=A&fnqu^y{<>Tn?#%SQ^Y6oaK@-hlMXVkQEWEA8V6krq(l@NR`At=Pi%`d>uPdT@0 zgPe!qqo%2Zv4uv0PtS`&shWWN2+KqDl{Wz35dZfCjW31XBR@p7m(!F3fa+A7dn+^m zNK{i(lr!+3KUl)b$lMC)JKYIbzN+XFgi+e*3&dNRMf?B@;d6N=mb+@JmZ#vL3F zZ!ZTNojrUK@&n;N8u&l8Uxh3OR3H=Z|NO{cKa>Dq`TBYJAz3d2H^W1^x zlYl^UGyuX_TbfZ|xX}I>8=8E{EL%4bc&+=$!c{w+4t|J=vptwdDY`YQ4OIF0(fMhV z@6_Pw$uv{TZ+lIa237FN-@DPtG`e{yPAbxqp;$gSD!W~m{zM@aKEgbz53Usx#g<) z%G~E_{v6EEFoHuWgbjF*Ivu%5S#(PZ1eYrfkD4TV<&}PlE6GwSQ|X#9v0rg*v-#~c z^ATpP00Qv!H3LV6FCCxYvJ3gc1fF?VW=42*^WP{gTSFS3*Y3*wHx3zXo2~WVUb*lD z_O2PCqT^rMcQbn!v!5CK@(3{O2cfwk^L59EF&d2jIw_QWYkp|TcD@6hppgQIoQ(XS z^mI#|8JcqY1-U1c3Lz#xWXN4I&+siU=7X!)YfoOyd<1470OYlZ-*D?NesqPVXU(|& zLDy-8&}WReTb&H4nG2Ks`kWoUXTRN>QSqZuVDH45P7^lXlRaFTH>LK{*O9CyRm_;s zIb+CXoeyU7ptxSHZL}VrJAW^FD6YuDYA?U3{1Ch=!H}j+3S|7ilFgPDCmvhDHF@oJ z6=)bd3yR)Y31>E7#sfTI0af*_3mIrfuUY45Q^5#M+ry0cB&o&-Tc7HS8d zQrQ(-n*Gd|tox#UDJZWlpmWYXl%IEUYl}g>@l*@(O_**fc!)IHlb}$KeekYTP?Y%< zR-9@7f|rSqNQQVmlrOH4BCW5KiMYfB}=Vn(ZOiJp#;G|EDtzQDIyE3>t3$O zH@7Q6;3140Cn2&o=a(?9Q1f!5cKlo8NaPutx;cd|P0hRV;nE(zrV%hL7B+yryc@K0 zp;_}5e_Aglog_3^^o(h5aC2Xf9!U#Aha zOWd+lfxw*Uz=VA%#2Rt>P6YIW<5$0OExy2BU;0%j(glcp@f*X-)BC&2w)e-gV2Iei z&kl1a&0X|wn%jabjq1FY%l2a5HjJPisDNNWr5RLZGS5Yidfapi`D*R&IGR&XH*@0d zl^p|`corTJFPv8UxbpB#?d1cC07Pld9uno9pBPjf8Ehj3L^b80PoXK9X>i% zyG%_MSTUMcteLj(&cpK1RD2wivCG)K6C%Ffzdc_+M8Zo-2T1c1@%tmKCh@DNRv>l$ zvn;}w9&b)$IGll=Cirw)Y z_Tz0?@+HsU#Rj}8L`BL3%Z3XMm-3BLM@^JW?NJhv;|6B?EMgb%gNW}3x!R%$pDTl) zBL?57V-v^hslR5;t*y);jT+1nR|)9|YGR!I{d@k-&vZx55e_hNH1S?Ie{{fjvPD|d zvr9y%f4!LBzIlcRzk>kcP8-w}yBilrcdma@MIBZ?6=zGb-$_!O@)e%~X$c(!DPZ zDny(An(fG~ZD0fVPUB179Q#n-X?3x))_dqF<`p3!+l%hqu-D#wotYK?;QYG4NsyMN zX7Z&o!*xrRD(~X0&6h@X8OEgn9QG;d(YN|5!Bq_Qh|I13?sQsK4Q*vT;?2oI2!5Z^(A|(gSXB{Xv(fo>-fG z2du`S5MWEmVp6=w(a-LuGWT;cn!0dc)DZPiA>PTY&0Du24Aw9bnU7qGWa?^hp0C+^ zrYm$P|Ke9P9}JA?PMqOzUOZL5boX)pS-&j1998!0$`Nusa7T-@7U~$Uw3o5Q$ zy5P=6L$GM2@fG(>K$-<9jMyk-=U`t$ig{~3^w z3z_4Zvz$j_dB@aV&P^9k*YFKI@-N@C4-R60nPRn@>0~@6PL)Q}AiqA+0n`>Mc^pU}bmE{8V!yb7UDk(ug!cg}D^_#%>-BvF0 zWF)YFyGh(!(^{K<1HLq77#(XiSa8+*y_VeXzRYd+`b$*R?jZ{;W-2JK6(Y7gxz|C; zN-h6pzA%_03j%&JH=qQs3!Tq!d3LtBqpRo~HCt z7uhvlwusw5015GNHFky`kMoo7-psu6uw0Zghj%{Qx5fnwT+4JZK*y^4${W57>zfs5 zMnrVmazaH)8|}HZLklxy#*m5K#n(NnAP(RmDRJDNNSu?dg6RO*{n;O9a5dQr|ESwl zzCSq8Mp6}MWM+0R#rKu_7oqgp)V{-f5!IOS`?jfUXX>5y?lPIZqboC#s!-m;2U?J! zNJE{|@U-E+jBg%>DF}jDv|}2kv6z38t7@Ahy7&PE_lfWC{Qxzq;cSf~UZq4sRC|`j zFbR;na+{Vlv1W+jcevvo#;l=bpi{L3IY65p4j5EVYxB?~M~QChaV2194O5ULwW zE4wx=UpMqFDdXukn(=kC*0GjqB(47n#^CS)CrWjglRX-W2ZLp%_M8+Nh4lQs%NHRF zk;W4hU!JnU?Hf*s0eq<9&&xdq6BFi(+@ogqZ~IbTQ>-%V*G}9sjVJQISY%yXvxfoV z*&z&mp~|f9=mb6P=l+B>ywPml*Z7*m29w&Kj4%GsP`ZDf{Q!7~cW%LK1xeak#(h8N z^%6t#P1BurC#KiLTvPW3e<^!^MFUb0ZCkK{I*gCE6caD}8b|aKC^Z5+e4Sp}ITJe0 zQ;iwDr5-Mo1!zBq41(ihcj51&;4(E8|wFU}+ZTvBySBYI8{;5q5h;Yw{QU+z5s9f|6j zJej4YNA3zI+afrPWut9{pOtt@o6@zn8A-3N%G}bk4$|8V^8)SuVN;2Vq}gE8l9BK+ z?+RIV^5m9PHtXOod`Q*4o&)iOO9bf$5*0AdYCZ$`=o>yvv8=ZRd{`p@ZYX#$Sd#-k zY{8C@1f_9$V=g58E=l(DyWgHUnvVcnWtNz~-$7(MO3iRkOsvx8`6|S7ATXmXH)rW7 zvTo?FbbP;R&j|*M9=VP!N~w8)IkGYMVBNhbp)T3|diq_Gz&!|&?(v+_dQx!ac>>wQ zJ_OkYd<#Cnu*aOy1`s^ue=t*jSJ;rU9D&5;N!&l`7D@jT+6ah5ViD%`EwjQv*+Sg* z>>BU&%Zil)32lKj+Dpt&X0om9uZhf#3|ZHay%X@5`hW8{0nG@&pD0+F7iS~6pnq?B zK-p7&2ZG9tncSJ|dB^67?OhCWPq%F#7lQ+|F##{=e=Kw6X&+tM@pmx**zb8jnd5T- z9iv!9Gw!ec5f6f55t^`AtJL4TPpb3n%t!)39D1+X3t5eiBvb@eu@Ov@q8hn3a&-^H z8vz+?00c#XdaTQ-OlGOYYe{+L6*kqk8VucB^_vG1+1zUG!q8c&iy-ekhS>d>e@}{R zHUcvOu%G0o%+0A~KkhrkV(`NZoR{__w3*J#Fdzn9)*Z7;=?P!+l-2O+_A0+3#O)RgBPOID{I*b;YlguojN8aZ zX(apbg&=YoN3vms08k%}X7+lwPZ%AAQuSx5)S!j=NVX`Xeg40NN22>K?Om`exvxSX zz@4qe-Jf3}Tv}7XEqp-6cm2beKW4EIQVmIG`HdRR*AaE^&2|7_bLls8XCDSPHmu2G zBuSSnKEZAvo5U0;Lz`y)KP=w7KtN{XOu6q+s>+O9)Y*w>3g`9+fPo&uJHtyO&_EOL zNk8n+S9$;Lzs1fQ?vyqqW|&O57EnAM%w)6a4_B^08>a!PfKD-e6`N(#K4C?M9jGKf zAfUZoFv#h3$ixiNbC}Q?Zb>a0ykMV^H^T-r3ch8ys|u;`rb7i*O~rBO>)7B2Zm8VN zC@0qwPmAXPlVuY`GUy;+lLa?N`1xvF|hU901TbKH<$Y;g7u^CRc( z4GO>eSjdFU12=<#%LNV~E=BO63tf)Q4B*WZDf3!-YB9QN#GXCD06ZEl-3bl$BvfTG zeLxPHs3iCPKeU3_9xC@VR0O{Z#+U3<0%-(m%K(XKZ2z}+c}d^2@~B;Z+mid-vfWkg z8pP7wmw%(J6l}FddIxQLMwtFidXRH&PkcM6QnvDr^^aFx(PUJvUES4-?;mtIzQcdY zd%B~+h{;FNcFbb?v)(-eR&wrIe;?N!(-%`|J)c>wl&?*p{P9J*)0Y(3#p+VD{kczg zqw@~UQd{b6b;7lR*$za+wUy+%>leDmkoW&t)yA^_-BY2ksi5YHnxX!6$oZq$MS;3K zi~Un0iTR~F&FJgeWXdlFXwHwofL2kQOYI-cw{@r$U7PA^W*~q4kaxnTy9yHY$qgfV z>P<0EoNuqM5`JwH-17zP(6bnYES-9<{F@CpI2fszA-D$;)UXUdSeSCY-~?(pQr(^s zd8Han^=N8pQ_}Ck%C1bD$@8z6_8 zK9S*m0RBo?n1KE>>868;l9ey~j~-_d!l9lV*JywLabQM>n>9S9uM7iJ%@ zN38t;KW$7s#*ha#to;Ok&!9wz%G8exmlYZA0Cf4n{rP>gm)VGv6b`;lsmac40C6dDZd%C4q~-NdDO(mEAJqYf%tO(h#&9?>eqa+9mCe0;If6}T6Ke_3!NMhr@2Ascn-->O9~_TubmWqs zdXGF$-o6A%){z-1#8JJgl=0d@_@d%wpf&vCYx{W>wa_q*UXb!cXPr!en3L>y+QInS zo{t>sp3X{3F;vlV%k6ih8N|non?dGp<9VrP^dU5w>q)YU*A^k=_b%`O3kjm6ZdVfT z))y1Yv6x^REc_)u3%f$8OOY3!o5FN;HdcB-vOBKemxUl%R5`-e;jC&F&Fd$h)#vZx z1`*;wG|_{;JI|lgbmb6x;XhOuVTGziA;?whFx5Wvkq$l@{Qu+J^Q7KVI6nHtJeNTk z84(bC{BN=3;^oXs@^wK%e8fudU9LsB9<5_6wW^x$%sedU--rf%E>KK96Lv zGFMYIS47U0j_#`(E!VgEL7~^v`$iS>?1qmx>)u7~c|!OutpA6XBiO7;W0UENnOR|L zAEX_Rw=~XM!6(-Q`7Mijs~bsNPtl0Z_Fe<3MOU`Rc8$+r5sY!>OloI+nJ#N*HCLYO zxAWhpooY`X80Mc4ceOn=^@1MPP1qwh3;Yb3{}G>(_{1`tL{W_XN7t{OKNS;m@?#?R z_yiLEc)6G3(SOwR$oPYw!Yv*nU-vavEq)lAnO^&K_3-iU;2CO3Nb7JLxV`%V$1m-a z1GBKKfdyT-8r~2+Uc=;VO+~suX3{5SV5}hbGuii9+lXgd3R|6)_fJf7PKJ9rO}{s8 zWRpD-swgiPdAAUq_@ys1UO5}51-LVv!k@ddN{*f9goKbB?GKyP?L_d&JWd!v$2lMP zB3jFFAFoyC7Z@?E`z`N1){;+yURZ^^jM%?HkW!r;4`EZ8Nu365(L$dyRIvO`3-ZIa zm3@@|Ifz)+cYSJk$q7B$x`I~bqU5gi2L8lNvp5#~cdhWsl;rh>Fa+;7@jg|Ogs(>F z+!cGZhr;5S?7y(ekesBj;FB5j*17FAEQtpa)G^|$c=YFne|wnAy!>N)a^S*^mZENYZUWBuXh*v{5jwIcGVK}2 zl8`ePdi(CR8z+Z_qx0@-jMdt`qO04l_l-#Kz*jA9dvD$Y1{d0d-Q+M)-5qqJkL7Ea zEf*Yy(F_vbJ2G_BeT7YTP{mrxN!l|etdb>3m}892f{#?6)zA^QU|6G04)@F?b@WGj z1_$W(uauET<>lyGeDiU$lJa(6kFJYr^93G{_Bi0vrZ0kMz|qfjQI%Oju_9*WNwa8{ z>g})b`W$8ZxX`LjHhF%gY=nop5V6iU%kCJxu&f_P@q`wY^Zp~bx0Vim#{e7p{cco* z%9rFzKlRWkV(n@|3kPT6PTw|7{UJBy@CC-|iN({@MbFq6O^9Aaq9)_D_YrI90}*QV zmIEG5jo;2ZQ?QO*m7f7}DiaY0!q^;q)2(+M)mCA)UV2)DCFsXmvk{EP?W4N5w6Xfv z+Hv%t`CqOc@rXaDDa4RPQBVk*^(4vbR8!_N4qF6$NKyG?cCT2)T92R5 zwvpT`wI?wAcXFT#oxvZD^!alja=G zSY=m%hxen@3vNpt#CKmSq0GwcPr~-u1ekj(m%D+VOj68xP&!tjXvk*RNcZ;Tt(&?f zGRR84Hlx73?y;JBI-duV%#{MU#YfDEBy*bRYnO<2YKPM2Oppsh}dF)=&PK z-w35cFkb1jgVFlky^f7hx7Ut@YzLV7#FB;hngv~agGD|a)zymZi-^zxCge>A?Th@b zEML0GLf)6z$S!sSRI;tUVnvm6OOe%!e`KJy#vn(Cb;_PFx_L!HWGEvQV4pG)K3OyW z=cb5dbWw)7IY)N)SxGKD&lsKaU8I;_YUHV#@1s3thI#o)i^ zdb30bS)3qyHctV@PSb0xb)_Z^WRSA?xmrOu;K=u4h@~+1U6v%^rtCtu!RiN0%d4PhuY7>whqki7vCh0^rF#>eS8<;K9LI+6)i9HDF;U+!aE9TYT%yp)rELY4Eudf6`z=7__l_fLM$&B*hk zt`;=vfbJTOvS0Fn=2M$k=Wz-DuFDR7JW+d&MfE4fJjA>%>;lE{vo&-9?Z&wK^V)H0 z6OcE;jhX(|?BQE%3ajatvh!r{Nh`yH<&0;2K;}jO>60uteBFW#V}w=nmIbpg$dakL zJ&1NF!PtZ-^FdH$M?sF>;Bo_lRE(P(t)I>UrF7bK<;4r$St^o!%+VbuMisl@YDqc% z)Pk<{-ns_DcJjx7IA!I~H}1rgL;ot94(e78auwWG!~wpR`@i8XGGXPcY5$%(ueE<+ zze^lD5gJz zS$+Ao63Qak+L9Jr{R{9GCTN3?lOemqz5c@dHi{gv7}xOk>jRcy- z86`MyZw~oh2(+06j;W>lqn1B$U7iLlnoVHCV{3CBYOihYWIy=8}SeB4_IVmH@y+-VniH_ ziM^76wi4KirU&+ZU zkw~Wd4?h{ENgE&rFA1CN9gPhfVk4v|(+SBa1$9W^Y&qOADqW z-SL|&ZKl&1bOfD^nCFy}?(C(%ewg9j=`bQD2dj_o8pa+s2#hhCF&bjP1d65ZdbKO; z-x+A#Meh1lrDkIJw<9~cJora^hd%QE2#EQK3xl(N*6^GjOvi%dmfd&7{$laEm#y4JyC*E5ZhLR{=*PAZp*jSZX{0 zV^%qo?jOHRiipYqDvF^j1xF#$B7=jJxlPyWFWRJDTc{y}+c@RJQhyX2_^*9pL6OU! z`|!nWb913v)Hd8#_%YCh$0hYfNl9A69(z{nlMv%;tvmZqMwVFlh+o-#D-HOWEBf3w zv(d?NDstsmdK36P@%&_C(QZE?HbQP2b zO4s>t4Ihz4Ul`E-_&4GrPDSu<1$mais&N^tAfVFVFt#E^DmT&Kh9rG|x??0|w1N4o;O=ARs zQ@RrPliJ5JVcrIcSBxq(c!WRLR3&JjBh;2(AlMl>V2>G|f)Kct?qLDJmEeQxB%>Um zqC~%O{L`|$!?lN^do8B9a-!?~32NogkD9wvq9hc|VJd#tv>oTe0$tO7iZssNeW)(u zZ_h4ijRdL_-0vtRYx|z0%`7^9JWQs4V7%iSrz(98Je{EN}s3Sw53QJr0WyIW9I*DS=XW%%^k+46*+D8cBU)YjXp7BMyN&%X%AD! zv=`BV#95$lZ1c5mVQkEYiC)`oB5hLqkK6%MsE%wJY}Z>-{wOSChCkTilCG5wzGv69 z3)EBNb9Q3#tVBB4E6S!1j6ChFwB4~4nP#irt=~~KXP_xJB9B6P=#nVHNhm))9_~2%cj9KGVX&{dcl_`E!*1+>m5euLNtATu{CglQ#PcItfab zGh(`z)e(60LC8cP%qoISBJ5ar*=OE4LgjDRH#BJ*l`8p6RlfKDwiJz5-USHLHqk@6gGHqf{K5C?uxa{UE8QCz$9xMV5~to5t}B(Flj=PO@U4F zYAaZWMj-Bd5p+G+{&36j?K{Z~O6gM`@%bB`XH}n1kQ*NoDlIG(-fm{?bOy-U`Pb=Dz}s8dZ$*MQqudfy4z0XYNu?h6_nKyFCL(OKJ58#+a9=YPHjG9O9@M$-_Uz0IeLa`fm zDx;BS0&B^az71_Ict_?MRH!5Y|AvnkD^gM6d+6sgvsa6!;fNu}t?tWrL5q0W7bTj zJDGlQ8knmKsHpC@UR?vaQ2D;h+XYSQWgYpzzkt-~qPNWl$7RM+gT=QJi=5SUr2n17 zi8c{Cx`Z6K;TRDT>cRSj<#UWmw!YO1zsX0*Fndu|zWrNkA$``Hn47T5_ueQcHvuaz z!B{Ljp-`U45E@fy{~N#VUB$}khXI>-a-uKDux$Rwpz*a_yy08%f>$+AB!+xN3e5v% zj&VpSeH22>vWUepo)ml*>*>Ojv9&c4DfSAxsbD>#7IpMH8)8C;+QS0wrvBOy<}$w~ zf=SLooh|R6Y+fK1apza~hdlZ;i5G%{J*tnf>WBY$tBLoq^XVHn_AyO@8EGUbq6cO? z+)gB~0+wQ9e^pTg|D((U!l&vqkk`#aP}FYMp6FiVTtTg`Y1B6z(BFmb%XMfF>eB!*1eD8f49i%{`@7cSH+g;=ob zq5uz6+^Wq0xUv(L&cX_J@A0=j&d9R?lP}pi&{Mv7tXX{$*UEmW|#BSK=&>QBTP1)_rhO&HbM8ZZ>>fg9g zk8Gr-pms`mj@>wKDQCy3=rT4#M&IpvZT!iLySyu^2!~2qj3yIOc_(pV%I-;js!j(N zJRR=8;~_4{M@sa?y|}N(mIKoos#Ar@H?E!9J3&Esp__{jsa2j$ z=}Z1*NDN_D)P+Z@Qp!NkNhNLm61}pFv4*mo{=1$XC{a>OJ^^BR;<3sW)$1xQf8fLI z@exJZ!4x?kJ_dhg>K;7d%U`9)Lf&O+k`CgxF)_!21gl^{C5? z#w`(`2nfRxLBp0`Le1{8*W$(t?^I?pKueq~?gs=DqEB*cu4xW+a38|jW}};A%tuu!R`vGJX}#2D%0$O%w@a@RW@h2(U?cw7_017^kz_!9c~x* zp}&63niM(y71n+sv_tV+7==Eomp`Kr*-0J2u>ERqiZ+(0oe6lJz`01$~d$OW8jY>%+*NU<@7qRCLulx6$ zvt+X{cC9+c+^F+9oc|HTlnl2aErds%dP*?KP0#cjZBk42*>IpR885+AA*rbhV;2LN ze&(D%hP%yo4OJJsZ;-46$fD)=_#;4sB(fTa7UFTd9*ww;G&8~F5ztQ?b-*dt@Pc8`!~PQS`UssS&;M@VFm&p#QhXdyQ|eA zBhq>nQTM@QLV&;UERk!;|sQ$=>tzx>BXN`l3e`K8`)Em z_;Du|;Oy;_vgCwz)5aVIGW-W`_*4mv^V07-pV@l8kkQ4v@;Q zeo(>ai2e6>-NqA24Oh-GB$ZyQ+r*XXNT1DA+^&D*$M4`>u#CTOQK-i3;@9{#7O7J= z5pB+cXW1Y6$Y01sPha_&sNyS8cW>NyN~|NQX8Og~nA6jHIOQp@fQ1zuN4^}SNkoVi zP0RhWaJ3e5VA>m;lxzL6nm$LK0)yMLIN-lO8O4*=MnBSjd-bs+`sLcU-2u7 ze0o%as)r6pR)r#lvN|BsWqVy~&#qBf;xg~Wt=uuJ5YnBzx8M0?Qi|0 z(}nUY%d9kZB|~}06k7PE|4LkhylP-=sN3QvWE=7wp3X}L3p`io5=HpA|KlIr+G9G}tf!=3Ho>@&e6C88l>5NTGeY`V(Ob%16=7gXU07mdYnYYS`+Y_I*KtgJ-l6n=Z!c zaY4v7)6yuN8;Zjh)|UB(wa*pM;L%nEl2tm&{qszI&si?HqueZL>TRKIwzFk9#pfjD zs+V$nw19zB@?TSH$}s!pxC<}@6O}0Xrju|e8Kq(Bim1&-H-jUp+@a4%YHq-I;tiGu zMk+omhq?jXE9Cx)A6vKl(CgO+AM2Vb5dtXfUsRGJg7~llO{6<*mv*O8{#PqWvWna( zdrqSZcAOi_?AzypF{M_8pzhPA%eOf6FDHt=n+LX19{T@af+{>q@^fvegs3+OVM6tHP%y!?vtze6TbA@LJ>1-Rn4Ofd zL}<~Q4pv_=i8$^8qO^Eg*Tv$9KqIWXXY$92m2Qouq{}2bWQJebYOkSJzaI;byazeA zx*_aDLPU}nu&kmqlNcxa?oxu^WI&2 zM445m)W>0TB=!cTXJ*`&!_J$En7EfjR^Pau@b`89iMGm?>7M6O*q!#h5x_luO_a=! zjlD%?C>?^l*8Q8JMzQ1Su%n=6CEuE9?n7fjq&v+2x6!VZft-kI8G9PkE%&dhXysJ@ z>ECcQdBE2@O{cXiK2v|&mD%eDDby08Ax<=+c3dPIq+=O`N6@PD)0I3&O)PooGR(wd z*1F<8`_R26TI#L&rIM{!W@P#bM~6jGfH4A3fr+(t_mB5F9vXJYQ)pGKiZ#!f`c>{^ zr?%|Xvu70*thK?%5jQ_VcL7Vvm^m~}N-G7du2^FY3V~F<4!RZzN(fEs8}(^WoOf&j zk)QWiGJgtruT-1Fd&cjds-@bDmp{fb9!nn?K)KOwRnLFN7$Ec0=DW>i{72?AL#Z4Y&oD_m&^hft7pAj8C;7-KO(GtsLNsk0=QkK;OE&G3pbNy{?iF9 z??p`saFt9oSc)}$X*GY0kTOzw1jw-6!u&t(j^R8ff8~1Db*@5DAIz~1L|OT7G`C;T zwVPnQ0;!_41CsnW7+Xz|DPpF=X7T?cj83sXOf2+-jzWl>j6<2So;6%SX@e@ zj~xY{_gaRv1nvfgFUt{;{NC(fr33@SXX|SbjTKlQNa%xx+H;%XHtZ<~6p3#R_UwJV zH(`!pA;OWCl*Gy1V%}-Wh00++XN^EYI5l1Rw4x9tvFR4IN3FE1GHM)*tdQQ61&q5k zAE;BO;_zW6?SL0VR|*48i=Jj6V#bV*`1MDYfWp2Ks0T#X*JG;&Ge1+tSgl7e`9JGk zAnNJ(9g3>pB)l^&get%&WuaRtJK<49z!U*X$EhXbw~JuV)g&BCOeTWyZx?G1aK8Sn zm_kymydn`oUGa>U)vKd5sqZE%#tI#1yiibr_QdHghyBdf66iFMAPW%YD=f3}hew}& zg=_2n-msx8Nb3`u#6)q6u$cxZI|Hh{q&ERmpznq3U6O{xZpDNm&5jOI44u za>b;d2EJ&#%N{j<7YD8~oQsHf9pA3gPNYx%4w-Z#gtdf7YHE)UQwP4N1kjmAObcZE zGu$Dvq?bk(Ts?jI0!EH!$FB}y2u%5`x7}jV%O8g16yK_wd~_ z8w$WqB0uMaN?*8vM(p;t&kPnU&jDqnWMH?(PfVG<<@VI!zPXl7CcW(T{Lj;I!O=9$ z5vfe5f3q-dH?q-it4rK7U`grm;n_Z|&Q1~326VknOFF3uxo(n+U&{CZ5SC<-`U)%9 z;mR(on<vq zS!K7CAoc`!|NLS1u9Y6D!*e|*_(4~|G^2{B7Y+^(Ze6OPU-*pl*%2Y(eqyOU})1B2hmn35-d#`0{6%3Hum0@Y+HATH2JO3N46 zVUV%&z+>#;kk7(IB`UQ#? z2gqsz-=!}zNd9M*R`atDXFo|TvpKEv^}sVw9ytgKuDJP5l#<`Kq6I3!2ddv$NH8St z6c5SGaw8$Jh)8W$mHkX4uZ>jD2l-hfPmbj}o2#k|^0xs~yQouXT3?Fg516o@rde(P zi6?N+AJ?wRQ2p@v_}q{mx9dPUxzWc&!T=}7C0^N?#h~kim4#k3|Mf(DGbJ;L=vRQb zj_^n%-ZYcqgcX5)!s(3)v&xn$;v{Hyjl!Bb|IRrExd40kqQZ3gIc(50ci5G9`6J*G zKqM&$phsJT_HzPAl%x|<%kME&zkB+=71w+ng9$r_6xK6}(!XfgCZrx_>^Pl!F@J=t zHrLfj@2L*YlYPlPp&%gvq*u09h0t^!(#mvzxYc zv%d9mFA+6Gz)eIm(jFv)%tN*Oo)I7U66T=#BRL(cY@7f%hq(O<>4VbdV@I4!8z&yf zGjqa3C4!M-HU1Er)5WCzqOQ$rnVrjM9V;>1fqt9~t_E`G53dnLHC!W1z| zXS47ncYUK}y4TX7hfEGXF(!z04QTNWarPDn_YETFImp)`?&2THFEpV#b3Xa|y}h4C zqg)LZyDMdCC=b=_ETfX79QiNa1v)@;0wvi7NRBe9&p>YcxwMJ?ohkR2 z&X&jg8})@A%=&BQV)`EE?1+-v7&rKnD$1$8pGth z6yHbKDpZx`N49w3zcE_rv?df?0ylh9)FnqS5|Vm>cZp`SAY)jk zM2w6OH7ezH=@UU`HC`#sU;MUG*va?O7&Cche3_|ztdfR#ZZD5hfmWJ7)DAAO+Mi4IB;6^#D7!d%K};tP?1us>d>qNFdxPARJWDJ ztmP`>wEsO#evh#gQ1lig>_^ydgLUlQy0;iQni;){r0QJF#NORsuFXEgzXqZ-tLzSx z9dAc`rujb{37JU~bbv~u3Ak}zXZg7|avfDE(XiR+ca`RJox0CKv*N0)EMWp^iq zK?O+Ug@ERvzsyNfl*PY;8U5B`^mI~sS2(uUe5XK|n4GZUTW|q6Xfz58N2*xU=|e#r znE$!pJkq`lm(2gP`&kYP;1E@$RZ9|!UaGtUVx~`YM_wpqnzd+o0P>pdaWW23>pg@| zv3=9bfH8QxhZ_Yqm~Z-YhM5S%GSEdTJ@L>^_>X-6E0UoJ(1XX?d0ul$dB-SDPFMyt z2(w6%;B2wU1LZu=+c^XB<5OFa1OrGQWONtU&AyF0rS1Ajv$5;^9;xH*ffD~)E9JlH zW_hiyk{$fe7?n&Ivo>`u2aTg&ZPeUabZ80bZ1lD2&Sjynn%s><4=0vJc*lA+1B>(t z0PVaVj5UWJ(}66D?mxl6{_|4Us{4-b2O%!i5xo5N^viiTV^z*y3{0!*Do$Uf)MS$| zxL7f-?RqVsNdzw4seaau0dZ~e5)uD_PggT;3u6f9Mpnd z?=vHP!VMmZL^ho(7+q`!oiyVZ>)$kfFjP%?$HGZQ=pa3@;~rbTXMiUQw;nNPC%uc0kcjY z(5<97e&s1+`vApdg0o8gMaqPmq!;R&UUuTwBnN+UP_X}6@6q5dNF~o{<;Ya9}}*LiV3VqK{0IvnNb=l$QJ8RY#ANn&6{_P z>-6kO_bC4<99KA!2EL5=YY!Y>gQspmR;t6q!ypIa)a+0^8YhZwd}K3m;%a!Wx`_1_ zR{KZ^8aVnO{yK9Xw-Ek!2fayTgtlj0g7^BaL|ydSfgLPuU>r(|bE6r+*963u7Zg zC8M%Bpl8G)6!Bq*g7-|G{xK014;6eXEbziMCdafz(wRY0vC6EUIK@^XgbnFxd^lGy zo>xOdB!^-YShz6Ic@M0p@3$5~%7o%!cneqck;$2-Q2QI(%>RKVVvk62ntFzriVX_W z54#(Zy|y?se`M2t$L3Mg=ZOeSAGe2dqpo86;PE zNU2_cccmcY7A#+QS+$BTL0|nn#kQBu__ph~zFG5l;UTwMSo5Fq#K#M!SidGN2%F>9 z3n|h#tL!%RZo)P_HTTsZzMmi3u4UH%2j!3qcc(Jao5d0aLax#ser-*LFEqV%Y4Zdk zcs1-GW+7!ffSic@e*89`goBuq{sk8baJ3l7orM339ARk5WGP=nhXj)Z9<}z5!kG+G zVEd`4uJfiC)aLb!T#F`y>)uCwnqd-N#~@!U;N`04MB(ylZP6H@42VHg;M@|DzTc;R zF$D7O+Ha#P?(GeD<{?yKPxp%}19`T2EeGEH|2VqJxG29Sx^&9Y-6&mxNV9~rf}{x2 zC?(ywOSg2lG}6+wbV_%Zlyon(`|kh!w7>nb_nG_5ojG&n%w0~?^P25x_o<%n@=8|$ zboIDtc@(BOY?|N$nLIlND9P)t1GFN4KsHv<4bkP)LD!iXe~O-#fgA?$egc1( z6@%V3t}uQr+~%9LJjg7n$|mUN$0rFJDV=@}5%=)jke49u2e0OPUjyV_>xuIt8RTG} zU->~WT#3lgn+kxsy)Qvae$tLoHP23pPeVlw3`TB}&gjl{H)auH00;OFVTfHV+GKQx zM%-lr@<=>~R*L{ATZP}^ggCaYGbV*Hi+R6e;cNqb>{sWIeiLQ?msYBr;$g8PuMoh_ zJ_LHD%%kNP)&^I0n^$nAy8QbD=Hxl6CSUl#m22q@e zsQ{st=5VmjOt`qodpgRZ1BGTLKghUZK5ff0Kfjx3k0+Ky%E$Kb9>si3a2^G}_oR2> zCz8{d!rhAcc4>5CH)I9incMXF%lk{(j>yK03d=!${ND>ninQE@8~26=d=MF{En6jq zyy#N}qU%zO89fkx#XH~^;G4*3KI-#)*Jn>|`a-KllV^xdEMW7zK+hZ^r1vxfMu?x; zdIey=G|Km|FylPbx_(*KAX~y0fb{4}^d3N1WGGa|cjDd##$Z{3jm0Ri*b6es%?z8u z>QEZ$-T~x&Uqk7#=UIzMlbUSA!*0-j29SfcTiPUMGMmvH5hot55A5=k?|k4 z*>}2Y?F$xCUzS3kyI&4Q;MELsgg5}$aqC9t{rw=Ld!E!Tr~tV=*H}jLs37wb?d~A{ zb<(NdBOhDyG1ON$Wg=^oIf26CIa7VCQAz$EOX|(G80P`+Bq?vOl1|Zvz}z-u`-}l|wR;K@=}JiWZjZtS3lP9o3`O9ajKgbYO1Gd2zY;GMlD2z4 zQZ~6QV{)ZYmop%Fvf?{_D+!Y#4F&Pwd(JY8{K+4^g_fh$WJ`tHckO;=bsk}m)qltn z3#h@|gMW~H=u*6qMJA^2-Z7LMMqkXAuo3mU7|aRHXy+3QzJ&Hr_&}lhjLYW!hlx}( zTX|&7<4TRc)>d%y1R^+(2NA{IO_O_mZp)EkZ!Nr)5w?}dvl&m~ETjT_m2Yi!e`Yns zGN!U81}#VO`qv*_xf(iY3^zrxodP7D?0`LEia%t##MgfD_l0F?7WVvSzz|Wp3IfWV zS73E6&T*l|_j9IJDl!gwS7(hqhJ@GtF3*71ew)9Rv9?>?0Lgmyp&EfoOi3}Y;E&7R*`YvS@`eQ`wvMihb(--d&f5wW?vjW}C(Q_z& zmpDeSr$qkqM^0=tq2e+vbS&8%aK(BD<58R0I6#D70L6n|gxWTS{kXp{XH2_PQaELJ zz_@Ipi!i>WmCS3J47o^Cz`c*dH;a9bW2mt1CHga%j84JxP|NwXk!y{t9S79^nLoy{S{#Y zqnH0V=Qijc+2|Ypv(4G}(nd{G->8cap%)>!$_q8J&awRk9~u zhnSDRue*S@(~t;P1>I1A7!#X!22200zarsHoQ&Y-bV_2R<_&PO%cD8+iF~u@2vzD^ z=S%m=DcJ)7-!naN62R_7=I#NmKa3?Sb+X(RmdSNLg#1>W4~sANw<12m%BT(boDgQLe){vWU0_e+@tj$uYw+~nAQy7a01PQ#B+9(!Zwy34Ub1HQmK zgca6v?p+QC_rJn{p{Fpd06l&v-hh%WV!WRhJ4_Y|uozE4|6p5&XKeVUPPRK|YV8O) z@Y*Fa`fVSIG<CGJYh4Zl(p6hP+#51v0xhc5Ojf@AZa zs;K=J-bSs+xiSZygniW6Oxy`lh7dNOB|TuU7^euLGt=QMc3L@55YGP?yzQr) z`ois7f9bP8-H8-DES?{@Y=iI}Ts&kb7$|+LRYR-)%kn61d?`B@Z0;RQeNT2Phvpuq z1JWoH1X_hOU5*OhIa%9ymOL=<)P>$)1>aeDakC5pMtl2xDBFO{;(!d+-6)}5PuogD zTlAXzqoT~gk{nwv6lS0Qr~ORD0k+h;f4&`|_>#LzAmknjpF6*W2y{#kiaV&l)_zx> zJo(H8bRCw~pFuh)xlZ0wZ%1Uxrw7i}wS7jxk6;+N$a3qGMOx z|9Zh+aDe#b?H?5Bb@))GMOtVJ^`Ff2MX8>C2r>)@SBGuLnC!@(l?B81zkh1W78!6r&}#@wSE5U0tj;aGsZ$c9nQ z_iwJ->CL#x&$!;z1KSU`lq$$z%sU|b;v5)r_Vi=s>`%zSme2RhU+@1)|Js|Vm0vYl z4PWgH^EA7wngVQWR(7*7}*iVeTl-b`fN*81ULPKuTXY_B0VIZ7HyA2hzi3NAc>ra>M|ji$=w*?zXet zH(f$q+hlbAzUQG%M#52~_6rOZf#i1N8<6T<(Iw+?2=prjwRFcmTQ#XA47w zuZb7=cabbqt1+NE`OZFI6b9~(bI#zY^6JrC&_Z5|KUWs)c}kEmG5h>O&J;r&BoLK@ ztYM)$eDl?t?8Cc#meT(P9-J3;;;uPWcbx`TGyi@g?M~h~4ezj_c!T-Da|mz4 zXTDciaiwx|7LQvsX!%9;48*jQ@7#f<9C68GdUJ?H*=Ew#*yq#@SWMpyLI-J@wA4Av z8Nm+*DPl)z6OVJbETdJxW(yATpitt5I4GBheNG>0NA~uFiO3kLYM-of~i6MgLUCqXLTd z$@3^z;hGDIC06M_A6qXa`R^NvEsxO{ozsZwonwgXt4pCgctCE$(M}ZJ*P6H69o2GN zH(~0Mw`CK3`h^&`t0>Z)k2#M_c1uWjprzSUAQbXxY=#60n8<5xCRRX=S8aRVbvJzf zHtAXhlrRICN;)wc*X@YC&tCh21oaVekdqmjdepwDifMmJ*~mONn|j0yS~6*PZANSn zJd7wfZ#MlF_Co}4_ORX*)SHN6OoaAIsD%>AQt{@$NkX%6upI;pBhu; znDf{tgzjrk!U*OX9`lc7G8|tx$8g9$DT=%nKqY+59CL?6>iXztT7++lrOiYDo~KN* zxP{rSeJE*^G>=oR-5rzh;-^H@J-=onLO78AuDoe_03Xu!JLdbho@@LP=M3F!;n)n; zIq;20Q#CVQ5wU%`kxd^UO@w&8r>jha{YivBV;T`V-OnN0O2&rJaeOf0d5XOp%$(9< zY^y4>rhs2IN!=H`PO(Zy+BF1}dYaG!ZtB$V@mvK^HVwwJcGbk* zyswQ5aW`l^=Naf1j2mjhs~x&LjD7CbKJoLfb#myfVTKfUCd54mDI=(uMh#6tLU(px*A^!JRIGUK+#lc(eIZV&EeihaT>z?{Vy4LJH3V5h5 zb(o(@QdZiY+1h$#pqc(7d@t0PS3+*pBfjY0yaUPeM?rEE#Wujt>3V~M`N$tDn%g0K2bdQa=^GMbez_*}8J>07YQi9+25W7V~L)tq-I25!TzNO>PC@&NLrB zvxmGCA7EdblXaqY`={>5k3T8%`PXm7n4b8mm_BM!I(tq!|AB+Iu(PjJWBc@&$?04G z{s%D|bP}F}YlN5QnYMup+{c)cW}NSlIj(i*DL@BQcZ_E7gw8VSbc1?O(dD8pr&O(VfNcmZ{C? zc#)tQX<9ss;^yWMr3YF&E^8xtB;S`I4J2c5n>MXS(4+Cy3ixAHzE_!ly>#h}%gcp3 z>vsgkxWIKzmHN8id{p67haPCt^wC(SgYVs;(e^n55F?uO21F-LY4*bbx-;||*7?lVhWNDXF{DM?g;YFbRcipc1va}){VC#b+Jie*({;=+kj?%9mDa;epS!;5AJ7lpnw`?y>`~ufg;)B> zJH61K^BjE$*c}`CjYb$PWdaAY1=f5HBsKM%v_D`<(#q^FLCnP>V7q#F{e?3`fEw-Mw0^xg&OuB8H_g|*>FQ8Xqb zu87)O>5*Hpo7?Ur$9Jx>2Xx|ufqpkjD4x$8PJH!CDCw=RSWjT)5e7eYZ;-p+K&Qv< zg#VETh~7M+ancD3;I&}T2@E7CXS%^<_YUYGTP5n^f3KMoyj8_<%OsLMo58jR59v;_ z^YLDbaOCAptYYcflEeDf8z#LNJ}XdpX><$c`i<2S!>o5y-}tYN)A$&}q{2QPJ=(oM zYZ)=-ikxy1o`ClnRE@^;8JA9U13TT)#Zf6ktwC10sym+@fiZGpeLvNr+}u&{1C3No ztX7f{4Yl273l+wnUzOc5g~*xTbo#7%Rg){_dt@1f|HiWEK%_~@d%0!D$@3IA#tDc^ zbLj??5IZQ~*>8@xpQq?W)kjo00@l4JnkW!U9e2OkKcaJ+K7G)}LQ=)nEbRA3X5&Wb zZVrE{N4qUZ+rN7oz)Eyq^F@F2c8_@@KrurIm->1aTM14LuLN&P)wor!2Yh7y!1wM; zv~+0)LJvf!^|(>)Y4RQ2F#mL(3`w*$ZFHs?8-uxjQC(2b0M18)6YG)AvW)TL-%T-D zrEl$$5?%pbU+WGr^#{eWC*$S7S%vuGR$-x4Mml`gOL}iR|3W zkfUmaP17ylaD5(2jqSYJ{ zes6_`nNhv3Fh4I)BwW2%y}gD~t7e+?uX-MCdo^boOgs;p$GY_sRB<5>{rZa0Rga^U z?~IA{<|mBYxQ1q?mCuW&W|XYF7{`gi|MsLwLK%)?*iC(om#UGJi{`xpcSR!RX&!)x zdfjAk31{udY~P;91JUotB7VnWfOv}=w;X=@#{}hP)Mf9;G2pl-a^^9%(C#sFP_ftu zDZiyTq{fnd8iZdOoPy8OiAr1wh^ULLLsAHhMEdJ*32?)_5bg;uk!B zz0)N?_nv_oGwCiiK(`}j@}?`p0Ifsz;|WO{7+Q8Sk!6V18$}<2olOe+cd%JWTsUtv z759se8?wFpAgG=N6E^cA%WEMZk4gF&<#6_ZBIosVg$OMwd_v5kK_qeIXIe}23I-R_;eKovGh-pzvq1y1i% zpqS|v3E=lKmj2G|s8LemG3z#DcmE?!c1I(x6qPM5f3@)&|C~U5b^$whi%i_(H|_It zsCiHal{`}82Ec!Rk0-P0n=b{<0b_c|S3d8d#0!X6Q>K{4Qv?3t*ffAz`2k z(|!uUM9)&pw#nB_HKkN|bzL)OPZd2z{NY-WawSrr5-1OTZ~8PQVRvVoP9NZ?L`B10 z)ysOk+Ef%ocb;4Zc7CzFxRJp5$TitdP3{Dnv={OIS5Qk~EoiupBpDxP??Bg%$7WFh zG7_whm$+7=G!nW<@o38Hh0D#nNy@D?8eF;0?e?fW6+da&-4WwOI@6~NTnH|kUFc$q zc?pR;1pDzODs12=8^0N|SUGBnj_5N8A}}N_Oeu>S#@K({tU@;Ou{0?+vOx*eH5<+G z?t_QJhp*0H!JjUqjJTRB`o3K!c%yklxJZGxsm-P%?c-l=%HW@7Z_bhw zu12TI)ui53FO~_v>Vq~xU%TIKjU%&78zK^GK3QloVqA&J7J>gs>*+F0dyH(zQutGmh?>hG!_`P)^E+WaHx97@#Z4GX`DM8 z2=;iNfvmJaPBR>(v}B=e)DNj60l#hImh;F6bwg>-Upqhry+t6iAz%4%4*y6WKNwa# zH676?>`X_#kJ0R!2aPQmp%qNj-Kc*r-M)rrZXcj+tK>W!Tedm>@cASL7(x>6CH}DP zuxi%_F>jowJTaG}I9WRYFSZ3GE6U_%N>y&v*)qnmKK*x7SB?;HryiCZLR{XbM)G@D zf^3`|ICOe*cojUSy@MarA~Y?TFSo;G4sNJxT6>_-5QAkLkw<;9&sj#4=|#O%S`Y(d z6ifP?T^JbGgd45q75H>s=Lwlf#hOy?&Bblq4l|t>)>fP>`zhsqCTzPsh#$18eExTy zzg*u@hnJqZZ*7R}-GIkrNWzHA^y;k)>(+Cae0Y)E&Wk$ez$JN0im5OGbvlKb?|JXU zfDt=W>pY5d4tyHnd6#+W%M&d1sY$CwIMM|AhHnL_Xfj<6No~mY{f-NGQPoJtDcm0# zB=(IW>?Vo-F1JeU#Wk9e;TIGZ^fWoq;BAk_N_54%i4WAJ&x3SdwPt>K9|TQO(DM!I-E)V zC6?kd5~m8Pb0xXZ;jPkGx-Y}|Lm+12q`ffd zW>n|rF1TPAKCUq3wF_v`h}OA}wT{1V-Rl=8puNAuG3_L?z7-Ez1LS#V%)(iAj1X#d+e3qBs@72z8T_*{6>=(m#825vCh zAQeZ==YO}UV=I0_J^0&GKPKTA9wS$04Rvi#3R3!^p!>YRua&w;MuU5GiK{niU?CTQ z>0xP6vlwlaiQyO?z|?(h{)Gb*!Q4Bg3?9+z-VdMo#LRG!bp+jL4e z=pVix+{6DcHN~8#Uhz5@4e}=k3Uk=F=<<-&%lFFu<1Pu7w-BTEmf(` zi50nHm}UAg%Eknl&7KG8Wnxb4m}Hz+zn}HRP zbbfAo>gUXyeRy4T%}pubVw8bp$I>~8fou>edJTmVhr)mHxNDvO4d8viIVIgtI(CMN zFnFyAumO!-5^*U~Yrw~l4){O?OHAkuvpRd7{`g4?yYwp~Eg*>B+f(?w!zQVN4e@B6 zd+;yJ>u6^$(beYBJ8)nd(NW?-+0H>F`vVXwiq*w;qu2 zY=SR9?M*`IjIsAvzV`uCzs7Q+GJXXMuO|Xq!Da5N>|~$#pVm5A8p-Gk#G+)L4V=$@ zByixZL`P!4zJL1*yb}(|ePpTJc>eqBp%(gQpkkiZg8yuf`#Z$XTh03~5<})&OCJtU zVY7z*^Fk!x9q#i5$!kCM%Cr@rapTBl4!U+AiUqh|#$yBBKHq`a&?WAq z$SJ2)^M42{YEgdM?Y1o+;e0V}9-?z-ic zh^nk&QM@O{m*n~P7W7_*n_{MIdlIbDe3MqydGYeL-}p0HTSz-JS54+3oF6{t+kw9n zr2N4Ui>??*Jfp?=`$`CClG=0*JxWRt<^nJCuh<%FQT(=Jb2qGcx6JU z6)bSgM;qbjZ1o82k>2j>IzIGr&d*M*&GURtYUV9?z+$L~8a1(>!o~KhJ>oM2t?~N~ zDPYKMi;d-(C*B6mECt@-Uw_<%s;Daf2#>KnpDR7!{jOp(;93+momF>Kh+g_A|9b}J zb+qv^QRgc9?%VE7>5dWlc9RvW{Rkbzc1bX9@SMBkp_0i(9slZVmLJXvmCNBjft4dY z%B66s>ok1^e@>p1d`cHKB@;MWTOQqqBwmW|Iy^qS$HBCc#=YNE^ zEqT8ERf))DN8pcCLcnyb_2*|kM5qp;$7EC)9Q;Y8(qtl2vtDH~UIh9s1H@QuJ&SUe zw;eZB7NBZE*dOiAQrgT{Ed6-1i02lUKyq9?Mh!r z0Y`ZYCwSw+FqL<^%xBz$Br>)E;ubnm5~ab31sle@F%AsU8mV0+MYMyHfY& zb&aGN9Ct%2AuK3PGRalZ=SfkeJAU64zQ2f8Ge!zWai$|ltF-4cX#+1W{I==xOOJ5m zGFzJ8|9ELK2fm*Vx+zBx?)rb~X8rNduNKV1&8V$_X)e~&`ks%m-TQ)&U{}Go(_>?c z&kr`Zv2tZPofG^2(AvdQeIMb+v2RvVU1Z$Fr=ss0p|wvgQrE-(N5_-O;J7X%UuPEn zx7kEAFRYOq7fu?hCR2)iV{!oUvyYJQZWhSEKy+C>XY>Kd35z3>VZwBn6nwc*7)cN8 z?mO}T7$aHW05q(ehkL~hKLXsQId~_>FQ~t; z&xaS}=S@D%<4V}vOORBRYfbt@L<4LKVUpC7raY$6QNaAfcqd?Yecs?0+_GBJai)B^ zbSmVx3y^p?DA;|pZ+V_k3?1Cz8#sojNn^@c(c+k-1z=ts^#_@6nos2#3Ez~djtYEI z@BjUQee=MygqNlwYE5k9S~JG|>rlXm>F!!=e>f8LIrPrX)NJ>}(fB{?eXg!nD7{Ta zV{DgdI=^2d~Ocg7n>F8FWeq2g?ze!7TCiw31o&GNR}IXn<4AzNg1e17SIy+YvBaS;Ke6 zqJW{y&XW&E(E9)&$gTI_ojQT#!8d;5xc>IlL(wgJpJQzPKM=^q^+-5c{|W)hVncvT zKI!~$cDw8;a~vJ|qhdZY3r<5j6quriR|3@h1&>cPY6u{VWxRe5&ndrKl_ zKjnCuNiLPN-(4eXLHvE^+y{y~@IFW7Y-qW9F^Vhd06N%$d%%^7&yJMf$YuM(E6^_hRMCdQl?-DV`HAZ;+ceK~LmhT{r&Bph=Dt z*p~r)XDNGI>}kD3eN0wG1m*7yH<}7NO;%+i(2Ux&1N-*=>tw0yJLfwPPMn4;Vl*=@ z$9CeIaL7qu&LD&RhB`-R;zoej*#q?Cz+q+)*iu zf!*+@$`t~c@Z_7hkCMfRY07fr;!jWJSTYx(ew(r7b=_o+M(x~K2^w;UdzxaVEGm@a z+d&V)&Zw-^{qFC*H4Lr_(Mk7>6aG&dey|QZ;V8EATI7TMD z>X{9ONB4mB&Z;4#SuZZhVMX?`LLafxZSZ#@SDyqLazC@ z^%=|m-f!a(4SM9*q5o5_2e#koPJi7Z^m!85l0jZ`M*TN-0utr@@NMp$iO5qAF@AOi zMn{Np{^>_*l_ul{S03;sokikDUK1|#%76r}K|<|XiFtOUOm{tGb>?+P4?XFn+}w!M z9ftckW3^jlkDN{qKpaKqLj&-6)0P2HdaZ+Jxe%bgvP4l0ar!DBdW+Qb@=U@g`p1_^ zKteU;>x9U8p&dU1>~k+Q+(_ZmAb!KteT-v9&z1&)!0A8y=#PW{z+EYztt?8re-G3c zXnSmLL9>lv%l-JlXy*q7v8^7);HO>>hR&R*IpP6spEyY&tobF3&m4b{1`>v^xgMUQ zYa{3Q=FkowM#wFUGSE8SBc#lyjNuQ~*sNjy=+LWxKlCPS@;_8d97}($z*5i=XT@F(r!vU(lk4G@zZH8rHSz_2G6+**m5v2X@ZA^X_{#?XJSs2j|`*V zw;k!1&T?z>Tt`tLOqTm+58fzsCHpJH4-0aCJ}yFU5l?Lhn8BRZtt4{sSy&7B9`t-7 zx3J-wKeOxC{-#13XgX{K>Gw8rMuU*$~|3IA1f$H-J z_UL*qC*_f=1dk(j8s9Z^^n&z<4cxCv&^K&u%F6+Z_r@aFdmD`xweFH=a||Wc%Nx9v zRYoGPp7|jCzxT8}#{rDVeO+-s zQT$$ZEB0X@XL4>+6NBY@OFQ<}dIpn44fsLOv!-nsdKsBweQ4%+Wo zdV}n#56xdKw(-CSnB{~1`My4WArjZRUM~*9n;5+BcBo=Ke)`~$Bht3zgSMoP?o|aA zhRTqKklVXI*;5$!W<~w_q!7xE{~bMVAl7%m05RjS=8MI(;D*iprbiU@w(K)G zfms@TZ*PFi;GGZwKJnS~?ENc8-s-rhYYQmC3Ug#p#$rP#KIHA!e6YrwKh4Ncua^|Af;$_m6RxQX7U zb!MVw2EQFG&szUHWdXXC7`y(snOgbQw<~SFYeCVw0nk#Nl`PN$XkL z?hco-xwO5R>SVu8L~BW_s+`HsHC%xmzwrs;Ea)i|PRvhj_op`;LhOB)X|MO2Ct1o^DJ^V^RdKwNTK zs2iblY{zfpOy@V7GQh$H`ct7c2{k`9XSqc_%`Y?GvLF-p_U>3rorJ_TtO@n{@5qUX5g5(p^;TG#*xr-UR0-Am(;j;z6g^F2`>dQLJQV>SylOomYZD*R2a6huZ8z z>Kar^OaItBJ)9973eHuYE`A?C=<`(*J$g0MF(3ZTaryTxA%nOV1KD7wZaWlKC`^c7?O(=ZHSY++ca>=d+tp=|Lhy4qv<4iJk)scqs z7~S;+EMclc8W-Di)Z|}J0xix6|9b(Y_*?^mA?2JGrr_10+$@aWAz2_z`Ux4FuR(%y z=_sgnzZnOCnY;7zt1-%>0W4aN>sR+A>ZD@N+-*eefU0f~`1}PM`1~f;_cSG5xeDt* z;Cz>H29D*_dZTfJ3sS^K~8^Vsw23VWAgU=ygj~;&8h-Vke zHOm-?z1$CK0$C1bi|XvKpNo~AFu{1VF%`FmOUmMX$6o^s19jqHJVOS}Pr(-;p#^8B z9Ij~pixf1%AM*g0MVO%PT0KmVkh(=e3LKbYzuK(TSP3 z&4Px^xKtGL$=+GeU<6<;^OuG%vU4u`QTnWk)Dr|kDg(%g^2w+hWN68kG*G9*<6p&v z5XutErl_2Z`na5_5`HYk&`ka`itrdOl1)floh|d;xI4WxBufy1V?ShC(zui~*GEpVGX~SA*$M*8ZwuuuW9<2Rw z!lEhd-$>#)%9lV4j9JZ#*)0W%K3<)OLDHo|R=W$)NGTn^HJ2;;#2gI7TW3`NfWH?B zoi!@F*E{OeO$#I}xD#W~GrzInpKvsescYVu3{$kZzcW}J_foX|g}l~B0aX?S>Pb~j zqht{Q0NMRXrsk_A*))g)K!zS?3e(o|kJPl|@_(K_1c8%MXbt_TpZp5BtR*-Xt7&;P zMJ4!rMG!pb2wMpHCN)+2_S28rh$^v?=Q-Tewb`d!Y##Y_Arq&#`F}6VN+W5NU;kBB zPY9EERr#=8!zLY^5WC^lJRAqsrL}&hHHg!Pn@2 z{jGsA_K`8ej9FeH|K?I$+#rWQ?|C;gfa~szR+led%8xx>u6>Bt`Dg6UiTQZFuS}l; zBi4%EC1$=tC+2$}C`3;f@OQdXNH>zR;-%r*O>WnIM1&3PE%YVqDkRwXoKKW37k0?U znNr^rs|@?s`-z-a8+M4N+&pbq5_U>;IZy~kJJF~8NHPs8h2$?Y=L&Us5WJ(~V#_b5 zZ$M|}s+l?xNh({?1Br28lYb2)sldaUF~cVLIrhrEdfd|{Izbl2xj z@yRwiTL#{KxBg1;5}zsTO@OPfH>9ETcf;SEtJE@_m#l*ceNrj2Hph&Rny=i|ugp%o z?_gIor#}P}3RM5?K0alJKJRXx-E5?M@qbtISu;24R;3^(?TvM6kGk=YEb1hFZEbCv z1pUNfE2ipchMcj-=Dxn1RiX#51}}N!AM;5B?j_l$VYktHx)|Yk>7N{t=ydCE35_y* zE^|g{Ka6vCP9PEAXu;`GrE(uF&_e%b9q>c_9T zH^u^?zWd~aoUZ$2lc@$!xQ{5|>b?Ptg zut2g=eSj7KE^Q)Y{30 zjfWd=!^g(|6|}F-0eEduf^c)^<#b&uCjD+t0R4P2nkMs*U44! z!#=Y*HtZDD{~Xtrxvk~_U;noB>u>;Oe>mfTXF3gkg$>BMqo&YjM8a&Q4;%9^H64-svo|M`XLb z*b0axrCeGgzEFtiEjJ4K@v^f&?iI>UBUSnW-E}X<+E@-1#Xut$rz)~M3@^O|o3q7? zz9bj}XmFvq)TYuxWJynSazl^$eTPBGenXUU*7dnVSSr^uZ7?#rp!6g_%(-zWZ==2c zGEj{f?FQuS^(QOVM+HulRU;=VLK=M_f6q=ZtZ$xOw%i7#z(rH+GJOx|%>w>omwk$(9&q24qY!j$vuY|gc}XgD z?YM!h+oL*5|NZK(po`mC0>zmRd!~tsu~pg+Uf7?M0I1=wP?C@Peea_43qWIQb@^vb zqh2pj9CfHmfS%2_hPPfZb8h`-`x_j!!QCY~iKV)u!+}qw;KK>G#73ARI>m~&Gj`RXq zU|5925P-RI*XP@xIYUxkI!$_)k#8Y$+AxscmC5wuy(gn0e;D%87WC;UsR)S^14E2 zIVP&~WV~WRy-l6F@~c`mi73JtuIF9zK(CXi0!#MtIw?jExc)86+4qG*tMc(TwB69J zCS^`|TP!G&Vs69m-kPw>)=Yz)2rNimPf6I92-dpQ<%qtw5fnjC_Jr~QmC!S_VV@^7 zqNfjm8UBem$*IXnDUxnI=;#RYKq3hFY(1-q88mUQ?x=D;Rdwy{?`c0&z~-?v&fj4r zRt|me(*AD0e@Jp+Z40XAj<&0a?ew2A@Nvq#>B@o6S$`H74;gfOV6Ffkk+(kGnfKn= z_I~*dyz^`k?C5BK$l8*=#LR{3g}0&TUPHO5?NVBDQ*4}nrx)P!+UpC%Mu%!CR*$u5@@1wC%Q&+P@A?)@cxL5>c91imwxJ4@L4gYhfzT5)8^wOxX-JC_=G z%fXcS9MEy4v0}`j1R#Cm*Yo$}d0KpTHD|q6-?b(AlmGzG$c~9t9FNOy*R4_~!nSGq zrC->gv~mm;fu&r!LO9CF;m=J{H5uv1*}b zJ~%OR(3<&Ni!X}@pHXO#A8Du%K*q!ov2k2pRz{U!5$S{2akz7>A?EyzB0Z`hzFG*< zU2h%%Nwa;rY#T#Y)**gX%2t_yAP9X90uVzOP2XmEC?zDBM+;Qww_bq_MBnIl=%R7<&DJ!>0}&a&YLY?T?+de9Srf`<9@ZYyfQ#Q zl@cseVSfu+XmAMz7vDu=0;CWe9Mju?f*lmF47uSckKk zO~wM&v=8g!^LjR40MLn=QZX&u^D|ezwu{(Ic3{Jq02(jfrM)kHOmAe|;I#HHpyQzuY&RCkUHw{xCa$*? z1;EQRJQEvO!gGi_QYo~Pn=4ZE?og`xMh2CzXMliSqldnA|Bu&}Zi(9O)>S*(GkIbF zAb?rrrRbNERr`fB9Yo?|%=B8oUN@;U<&fXuoWtqRL6%^>LA4+!8z(lJv`OE6u%Jzp zBpa|B#Lb9;O`W$7^EX^bxu4ZWT(ABP-dXt6+~Jn;W_SY(7x=T3pPFezP-7dOW2s5=Zk7IUo%6 z7dE?Y15*os{q|E`kBG%8gZu;l_#!!cvSlY<=XqX{_$Z=bh|s#VJ(@8 zuEf;?z=&-vDW#%C0Xf<_F%e(gP(_jBU~{oBJ9jUDLON;yx2TI#eRDugk= zLDYJ=>k&GkqLNW>3Qu50K0Xf`jx;(EdVZ;`!ncV}4C(Xx!^hoiS~pWS2^52PXz#dF z+dAnE-S2FD60Mn*0>46QsKbl3HS zsm<$JVtda50oY#LuwQgl+ae!kH%Ra+*V8XI7qwJ8a01bY0Wghk-&mpie~g+XJWeL1 zp6_^98Z~T9TLK`~D3G{5kH=LjwF^>RGRbE9sh?;ncUXaV?kHUo?{m{!@;-TgJD$1w z@uy{&FqfiWDl!3B5CUM5W1eEf^`b-fQ&aiL=05uKD>nRGu(=_~xZd$5Om(!P0Sa<# zOp~XL&wZ+x zjNvCp9@cho1`CR93)rNn6_4<~t;uh0_O$Kgfu8CvOrBe>r*FIOzQrT@L4%2nS@M}? ze3|Ih-;HyP3j2i;V6*(Ig~d7EsEl#~>-W_bzs0Rft(n^_iSp{JR;7=>l27TSUv3Ni zuXJ<&XS#8q_-CTgTuPCoSHo({wUo=q^0-v^&Yh4MCCX)lHX6CEn^@G6&8=2)UAb)Y zjHEmg5lV8&EoCuTY;J9~$MZLQ&mVAJ@AJ#~;k;hw{f7dE0h8vT^#$06cs?p2#*=yk=j-mhK4AAbtk!LN zX`;j_J5G#6jO~y&ZZyf5SmuA`WoetQ7UfR*z$KS||NM37iSEph%cO+~7(#9=d zWeqZ=qy-zDBke7cj--5fwB(_B*c#ZjZ8F#fTf1TuA>G`;7{UpKTqRwgv~m0;Q2?2m zIN&&oFz2dZB>nRk0L0fSk7^!}3bs^Z}W$KwWy{>~w!MrLHyFo#P2;sRHtv z=-qFV206c_DJkNg&eDxw+_pV*(HE;c)zE=d|7rUbt>#8?p$!#=Sm+%o*3pmq{8!MbaNZSZ@)8%GzADl;B$7sg7ar?wpG z?MZx2Reh{PUlo1K5yRVKkJT~ENAoI1`|4_tP-xt`L_!JNWyqP7jw`KY2XkBI8 z@J34VsPkycSibu#UUinaS!1?CuN;B3bQH>znJp(Vc`8!q(>e`6BfoRG&$>54NDGhB z?8+99Nip-1I-LxZky-mp{9V^p8QaFI`7of_hMd9l9!NltX)km1?l0_5Ju!J(KDer( zp+U63SFy&#GGb2`b>$}sy^eft8e#_A=m)JK9d|iSt5u+Fb(Z=4RpE1EtBYF_#)Cj7 zu(K^7S(!~>VjfIs{ZT12aSE>glOZ8|kjz}X=5y`R5hOEQ^_azdL|!N4GzRB1s9Ao7 zy%)mbi~cZ)xH-F{Z(XZDhBGbFRNiQ+0yh!!=_P;i)%Xrke~ie*nx>Z}VWZ}&#{)eb z+!t#*aV5rG@LMninKHMg;tiA1&uJA0(8Y%IB@1=XXyu6auSu41MEs`~lT8p40ScObtZ zI=c>8af)_FH(G)v5_XUH?CH2H&M!Q8X?(;K&1MbHKR*5RqsJA+c=fS%o93bR)^zio zcy6|`vFvc>nBq%SwMDsR>Llq~kG)1CCb9*G@#YNr+^)f3^H_Jy9Pb^2ci!T{>L7nP z?0aH7(W{MA_(3QAPY zTY9JRdi~r4 zUbp;SW!`MU#4}Gp{k~2ibqVbe=bSZhUZdt|te@I@4<@S-KcBpnS)aglNfOmh#aa=j zt3v!{J!*YpxMrVcmLpQ)`E#4k;xI1*CqK`{i%mH~WyGAIM_EOMmOTy*f)5uMD!ot& zXj=TWQ}ABDccQScZ+-cSQSGdWHr zAF>3s_*cC1t_>MNXLUp&CIyGI6vJH`9qwhZjd6^p5D@Vc=j^C3$TdKu^NVjyIJXu~ z=PA#hJo{V?gs-*N*-_nC1wYmC_L$j5R%o8H|M2Muy4OHiT-#Y_Y1oaN;?7W$S})5Q z;Ypu@Bo|s)MNh2b0V}}j{2q(WbU`IL=Q~Uhf0%LQFL9d&m Date: Wed, 8 Dec 2021 22:23:08 +0100 Subject: [PATCH 03/14] update owntone to v28.1 - reintroduce native/glib for cross/avahi - fix ffmpeg on demand dependencies - forked-daapd is fully renamed to owntone --- cross/avahi/Makefile | 3 ++- cross/opus/Makefile | 3 +++ cross/owntone/Makefile | 20 +++++++++++++------- cross/owntone/PLIST | 7 +++---- cross/owntone/digests | 6 +++--- native/glib/Makefile | 19 +++++++++++++++++++ native/glib/digests | 3 +++ spk/owntone/Makefile | 11 +++++++---- spk/owntone/src/owntone.png | Bin 35826 -> 25186 bytes 9 files changed, 53 insertions(+), 19 deletions(-) create mode 100644 native/glib/Makefile create mode 100644 native/glib/digests diff --git a/cross/avahi/Makefile b/cross/avahi/Makefile index 33df52d0f97..50981f8eb21 100644 --- a/cross/avahi/Makefile +++ b/cross/avahi/Makefile @@ -5,7 +5,8 @@ PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://github.com/lathiat/avahi/releases/download/v$(PKG_VERS) PKG_DIR = $(PKG_NAME)-$(PKG_VERS) -DEPENDS = native/glib cross/glib cross/libevent cross/expat cross/libdaemon cross/dbus +BUILD_DEPENDS = native/glib +DEPENDS = cross/glib cross/libevent cross/expat cross/libdaemon cross/dbus HOMEPAGE = https://www.avahi.org/ COMMENT = Avahi - Service Discovery for Linux using mDNS/DNS-SD -- compatible with Bonjour diff --git a/cross/opus/Makefile b/cross/opus/Makefile index c924e2af761..db745f3c5aa 100644 --- a/cross/opus/Makefile +++ b/cross/opus/Makefile @@ -13,6 +13,9 @@ LICENSE = BSD GNU_CONFIGURE = 1 +# avoid warning _FORTIFY_SOURCE requires compiling with optimization (-O) +ADDITIONAL_CPPFLAGS = -O2 + CONFIGURE_ARGS = --disable-doc --disable-extra-programs ADDITIONAL_CPPFLAGS = -O2 diff --git a/cross/owntone/Makefile b/cross/owntone/Makefile index e96d0271005..1a0576ac395 100644 --- a/cross/owntone/Makefile +++ b/cross/owntone/Makefile @@ -1,21 +1,27 @@ PKG_NAME = owntone -PKG_ORIGINAL_NAME = forked-daapd -PKG_VERS = 27.4 +PKG_VERS = 28.1 PKG_EXT = tar.xz -PKG_DIST_NAME = $(PKG_ORIGINAL_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://github.com/owntone/owntone-server/releases/download/$(PKG_VERS) -PKG_DIR = $(PKG_ORIGINAL_NAME)-$(PKG_VERS) +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +OPTIONAL_DEPENDS = cross/ffmpeg DEPENDS = cross/libunistring cross/zlib cross/libconfuse cross/curl DEPENDS += cross/mxml cross/sqlite cross/libevent cross/json-c DEPENDS += cross/libantlr3c cross/libgcrypt -DEPENDS += cross/ffmpeg DEPENDS += cross/avahi DEPENDS += cross/libplist DEPENDS += cross/libwebsockets - +DEPENDS += cross/libsodium +DEPENDS += cross/alsa-lib + +ifeq ($(wildcard $(FFMPEG_DIR)),) +DEPENDS += cross/ffmpeg +endif + HOMEPAGE = http://owntone.github.io/owntone-server -COMMENT = OwnTone is forked-daapd's new name! Linux/FreeBSD DAAP (iTunes) and MPD media server with support for AirPlay devices (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio. +COMMENT = OwnTone is forked-daapd's new name. Linux/FreeBSD DAAP (iTunes) and MPD media server with support for AirPlay devices (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio. LICENSE = GPLv2 GNU_CONFIGURE = 1 diff --git a/cross/owntone/PLIST b/cross/owntone/PLIST index e85e0f4f7f5..0d277ee9bc2 100644 --- a/cross/owntone/PLIST +++ b/cross/owntone/PLIST @@ -1,4 +1,3 @@ -rsc:etc/forked-daapd.conf -lib:lib/forked-daapd/forked-daapd-sqlext.so -bin:sbin/forked-daapd -rsc:share/forked-daapd/htdocs/ +rsc:etc/owntone.conf +lib:lib/owntone/owntone-sqlext.so +bin:sbin/owntone diff --git a/cross/owntone/digests b/cross/owntone/digests index ef1c9eaeed1..bb4045a0723 100644 --- a/cross/owntone/digests +++ b/cross/owntone/digests @@ -1,3 +1,3 @@ -forked-daapd-27.4.tar.xz SHA1 3e529a3b28b0fa667bc93c07a50b30d06c2f8d2e -forked-daapd-27.4.tar.xz SHA256 00f71c687df268a3c4db77cecf37972e76832a99e34f09750d07a92934a0bfa8 -forked-daapd-27.4.tar.xz MD5 386fff5c55ccb957dc4ff2de753096ae +owntone-28.1.tar.xz SHA1 5a2d5d507df0d4f52c7bb44a47107b7e47e95860 +owntone-28.1.tar.xz SHA256 6b72776dd1fdd6e19fa71e0ba1ce355c2648dfa5be89da08df064bdf84e55f0a +owntone-28.1.tar.xz MD5 b8e1e55364e1e4cc9e6cd10af1758c72 diff --git a/native/glib/Makefile b/native/glib/Makefile new file mode 100644 index 00000000000..5743b27d5f1 --- /dev/null +++ b/native/glib/Makefile @@ -0,0 +1,19 @@ +PKG_NAME = glib +PKG_VERS = 2.66.4 +PKG_SHORT_VERS = $(word 1,$(subst ., ,$(PKG_VERS))).$(word 2,$(subst ., ,$(PKG_VERS))) +PKG_EXT = tar.xz +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://ftp.gnome.org/pub/GNOME/sources/$(PKG_NAME)/$(PKG_SHORT_VERS) + +DEPENDS = + +HOMEPAGE = https://developer.gnome.org/glib/ +COMMENT = General-purpose utility library +LICENSE = GPLv2 + +UNSUPPORTED_ARCHS = powerpc ppc824x ppc853x ppc854x + +CONFIGURE_ARGS += -Dman=false -Dlibmount=disabled -Ddefault_library=shared -Dselinux=disabled + +include ../../mk/spksrc.native-meson.mk diff --git a/native/glib/digests b/native/glib/digests new file mode 100644 index 00000000000..162edd168c0 --- /dev/null +++ b/native/glib/digests @@ -0,0 +1,3 @@ +glib-2.66.4.tar.xz SHA1 a45268bb9adeb49563c16978c52b3bd5ac93ae0d +glib-2.66.4.tar.xz SHA256 97df8670e32f9fd4f7392b0980e661dd625012015d58350da1e58e343f4af984 +glib-2.66.4.tar.xz MD5 2df4576b1e4acfd118867eebb41d9956 diff --git a/spk/owntone/Makefile b/spk/owntone/Makefile index c6c81a01d33..22e63b0a03c 100644 --- a/spk/owntone/Makefile +++ b/spk/owntone/Makefile @@ -1,12 +1,13 @@ SPK_NAME = owntone -SPK_VERS = 27.4 +SPK_VERS = 28.1 SPK_REV = 1 SPK_ICON = src/owntone.png DEPENDS = cross/owntone MAINTAINER = SynoCommunity -DESCRIPTION = OwnTone is forked-daapd's new name! Linux/FreeBSD DAAP (iTunes) and MPD media server with support for AirPlay devices (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio. +DESCRIPTION = OwnTone is forked-daapd\'s new name. Linux/FreeBSD DAAP (iTunes) and MPD media server with support for AirPlay devices (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio. +CHANGELOG = "Initial package release." DISPLAY_NAME = OwnTone @@ -23,8 +24,10 @@ export FFMPEG_DIR = $(shell pwd)/../ffmpeg/work-$(ARCH)-$(TCVERSION)/install/var ifneq ($(wildcard $(FFMPEG_DIR)),) PRE_DEPEND_TARGET = owntone_pre_depend SPK_DEPENDS = "ffmpeg>4.2" -# Use FFMPEG package shared libraries -FFMPEG_LIBS = libavcodec.pc libavdevice.pc libavfilter.pc libavformat.pc libavresample.pc libavutil.pc +# Use some of the FFMPEG package shared libraries +FFMPEG_LIBS = libavformat.pc libavcodec.pc libavutil.pc libavfilter.pc +FFMPEG_LIBS += libswscale.pc libpostproc.pc +FFMPEG_LIBS += libswresample.pc libavresample.pc endif include ../../mk/spksrc.spk.mk diff --git a/spk/owntone/src/owntone.png b/spk/owntone/src/owntone.png index 16a1c302a706584c008e05df15f960a90dc46e16..74d5352eccf41d5820e1d6d2930e3b58aa4c115e 100644 GIT binary patch literal 25186 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%0D%Q+N(RZLn! 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 Date: Thu, 9 Dec 2021 18:57:18 +0100 Subject: [PATCH 04/14] add initial service setup - add default config adjusted for DSM - add libssp from toolchains --- cross/owntone/Makefile | 11 + cross/owntone/PLIST | 3 + spk/owntone/Makefile | 19 +- spk/owntone/src/owntone.conf | 442 +++++++++++++++++++++++++++++++++++ 4 files changed, 473 insertions(+), 2 deletions(-) create mode 100644 spk/owntone/src/owntone.conf diff --git a/cross/owntone/Makefile b/cross/owntone/Makefile index 1a0576ac395..4f3de2a28a1 100644 --- a/cross/owntone/Makefile +++ b/cross/owntone/Makefile @@ -27,4 +27,15 @@ LICENSE = GPLv2 GNU_CONFIGURE = 1 ADDITIONAL_CFLAGS = -std=c99 +POST_INSTALL_TARGET = owntone_post_install + include ../../mk/spksrc.cross-cc.mk + +# use libssp of toolchain +TC_LIPRARY_PATH = $(WORK_DIR)/../../../toolchain/syno-$(ARCH)-$(TC_VERS)/work/$(TC_TARGET)/$(TC_LIBRARY) + +.PHONY: owntone_post_install +owntone_post_install: + @$(RUN) install $(TC_LIPRARY_PATH)/libssp.so.0.0.0 $(INSTALL_DIR)/$(INSTALL_PREFIX)/lib/ + @$(RUN) ; cd $(INSTALL_DIR)/$(INSTALL_PREFIX)/lib/ && ln -sf libssp.so.0.0.0 libssp.so.0 + @$(RUN) ; cd $(INSTALL_DIR)/$(INSTALL_PREFIX)/lib/ && ln -sf libssp.so.0.0.0 libssp.so diff --git a/cross/owntone/PLIST b/cross/owntone/PLIST index 0d277ee9bc2..543faee04f1 100644 --- a/cross/owntone/PLIST +++ b/cross/owntone/PLIST @@ -1,3 +1,6 @@ rsc:etc/owntone.conf lib:lib/owntone/owntone-sqlext.so bin:sbin/owntone +lnk:lib/libssp.so +lnk:lib/libssp.so.0 +lib:lib/libssp.so.0.0.0 diff --git a/spk/owntone/Makefile b/spk/owntone/Makefile index 22e63b0a03c..64ac94328ab 100644 --- a/spk/owntone/Makefile +++ b/spk/owntone/Makefile @@ -6,7 +6,7 @@ SPK_ICON = src/owntone.png DEPENDS = cross/owntone MAINTAINER = SynoCommunity -DESCRIPTION = OwnTone is forked-daapd\'s new name. Linux/FreeBSD DAAP (iTunes) and MPD media server with support for AirPlay devices (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio. +DESCRIPTION = OwnTone is forked-daapd\'s new name. Linux/FreeBSD DAAP \(iTunes\) and MPD media server with support for AirPlay devices \(multiroom\), Apple Remote \(and compatibles\), Chromecast, Spotify and internet radio. CHANGELOG = "Initial package release." DISPLAY_NAME = OwnTone @@ -14,8 +14,16 @@ DISPLAY_NAME = OwnTone HOMEPAGE = http://owntone.github.io/owntone-server LICENSE = GPLv2 +# owntone's ports +# 3689 (daap) +# 3688 (web UI) +# 6600 (MPD client requests) + + +SERVICE_USER = auto +SERVICE_SETUP = src/service-setup.sh STARTABLE = yes -SERIVCE_PORT = 3689 +SERVICE_PORT = 3689 ADMIN_PORT = $(SERIVCE_PORT) # Reuse FFmpeg libraries @@ -30,9 +38,16 @@ FFMPEG_LIBS += libswscale.pc libpostproc.pc FFMPEG_LIBS += libswresample.pc libavresample.pc endif +POST_STRIP_TARGET = owntone_extra_install + include ../../mk/spksrc.spk.mk .PHONY: owntone_pre_depend owntone_pre_depend: mkdir -p $(STAGING_INSTALL_PREFIX)/lib/pkgconfig/ $(foreach lib,$(FFMPEG_LIBS),ln -sf $(FFMPEG_DIR)/lib/pkgconfig/$(lib) $(STAGING_INSTALL_PREFIX)/lib/pkgconfig/ ;) + +.PHONY: owntone_extra_install +owntone_extra_install: + install -d -m 755 $(STAGING_DIR)/var + install -m 644 src/owntone.conf $(STAGING_DIR)/var diff --git a/spk/owntone/src/owntone.conf b/spk/owntone/src/owntone.conf new file mode 100644 index 00000000000..ee98b5eba12 --- /dev/null +++ b/spk/owntone/src/owntone.conf @@ -0,0 +1,442 @@ +# A quick guide to configuring OwnTone: +# +# For regular use, the most important setting to configure is "directories", +# which should be the location of your media. Whatever user you have set as +# "uid" must have read access to this location. If the location is a network +# mount, please see the README. +# +# In all likelihood, that's all you need to do! + +general { + # Username + # Make sure the user has read access to the library directories you set + # below, and full access to the databases, log and local audio + uid = "sc-owntone" + + # Database location + db_path = "/var/packages/owntone/var/songs3.db" + + # Database backup location + # Uncomment and specify a full path to enable abilty to use REST endpoint + # to initiate backup of songs3.db + db_backup_path = "/var/packages/owntone/var/songs3.bak" + + # Log file and level + # Available levels: fatal, log, warning, info, debug, spam + logfile = "/var/packages/owntone/var/owntone.log" + #loglevel = log + loglevel = info + + # Admin password for the web interface + # Note that access to the web interface from computers in + # "trusted_network" (see below) does not require password +# admin_password = "" + + # Websocket port for the web interface. +# websocket_port = 3688 + + # Websocket interface to bind listener to (e.g. "eth0"). Default is + # disabled, which means listen on all interfaces. +# websocket_interface = "" + + # Sets who is allowed to connect without authorisation. This applies to + # client types like Remotes, DAAP clients (iTunes) and to the web + # interface. Options are "any", "localhost" or the prefix to one or + # more ipv4/6 networks. The default is { "localhost", "192.168", "fd" } +# trusted_networks = { "localhost", "192.168", "fd" } + + # Enable/disable IPv6 + ipv6 = yes + + # Set this if you want the server to bind to a specific IP address. Can + # be ipv6 or ipv4. Default (commented out or "::") is to listen on all + # IP addresses. +# bind_address = "::" + + # Location of cache database + cache_path = "/var/packages/owntone/var/cache.db" + + # DAAP requests that take longer than this threshold (in msec) get their + # replies cached for next time. Set to 0 to disable caching. +# cache_daap_threshold = 1000 + + # When starting playback, autoselect speaker (if none of the previously + # selected speakers/outputs are available) +# speaker_autoselect = no + + # Most modern systems have a high-resolution clock, but if you are on an + # unusual platform and experience audio drop-outs, you can try changing + # this option +# high_resolution_clock = yes +} + +# Library configuration +library { + # Name of the library as displayed by the clients (%h: hostname). If you + # change the name after pairing with Remote you may have to re-pair. + name = "My Music on %h" + + # TCP port to listen on. Default port is 3689 (daap) + port = 3689 + + # Password for the library. Optional. +# password = "" + + # Directories to index + directories = { "/srv/music" } + + # Follow symlinks. Default: true. +# follow_symlinks = true + + # Directories containing podcasts + # For each directory that is indexed the path is matched against these + # names. If there is a match all items in the directory are marked as + # podcasts. Eg. if you index /srv/music, and your podcasts are in + # /srv/music/Podcasts, you can set this to "/Podcasts". + # (changing this setting only takes effect after rescan, see the README) + podcasts = { "/Podcasts" } + + # Directories containing audiobooks + # For each directory that is indexed the path is matched against these + # names. If there is a match all items in the directory are marked as + # audiobooks. + # (changing this setting only takes effect after rescan, see the README) + audiobooks = { "/Audiobooks" } + + # Directories containing compilations (eg soundtracks) + # For each directory that is indexed the path is matched against these + # names. If there is a match all items in the directory are marked as + # compilations. + # (changing this setting only takes effect after rescan, see the README) + compilations = { "/Compilations" } + + # Compilations usually have many artists, and sometimes no album artist. + # If you don't want every artist to be listed in artist views, you can + # set a single name which will be used for all compilation tracks + # without an album artist, and for all tracks in the compilation + # directories. + # (changing this setting only takes effect after rescan, see the README) + compilation_artist = "Various Artists" + + # If your album and artist lists are cluttered, you can choose to hide + # albums and artists with only one track. The tracks will still be + # visible in other lists, e.g. songs and playlists. This setting + # currently only works in some remotes. +# hide_singles = false + + # Internet streams in your playlists will by default be shown in the + # "Radio" library, like iTunes does. However, some clients (like + # TunesRemote+) won't show the "Radio" library. If you would also like + # to have them shown like normal playlists, you can enable this option. +# radio_playlists = false + + # These are the default playlists. If you want them to have other names, + # you can set it here. +# name_library = "Library" +# name_music = "Music" +# name_movies = "Movies" +# name_tvshows = "TV Shows" +# name_podcasts = "Podcasts" +# name_audiobooks = "Audiobooks" +# name_radio = "Radio" + + # Artwork file names (without file type extension) + # OwnTone will look for jpg and png files with these base names +# artwork_basenames = { "artwork", "cover", "Folder" } + + # Enable searching for artwork corresponding to each individual media + # file instead of only looking for album artwork. This is disabled by + # default to reduce cache size. +# artwork_individual = false + + # File types the scanner should ignore + # Non-audio files will never be added to the database, but here you + # can prevent the scanner from even probing them. This might improve + # scan time. By default .db, .ini, .db-journal, .pdf and .metadata are + # ignored. +# filetypes_ignore = { ".db", ".ini", ".db-journal", ".pdf", ".metadata" } + + # File paths the scanner should ignore + # If you want to exclude files on a more advanced basis you can enter + # one or more POSIX regular expressions, and any file with a matching + # path will be ignored. +# filepath_ignore = { "myregex" } + + # Disable startup file scanning + # When OwnTone starts it will do an initial file scan of your + # library (and then watch it for changes). If you are sure your library + # never changes while OwnTone is not running, you can disable the + # initial file scan and save some system ressources. Disabling this scan + # may lead to OwnTone's database coming out of sync with the + # library. If that happens read the instructions in the README on how + # to trigger a rescan. +# filescan_disable = false + + # Should metadata from m3u playlists, e.g. artist and title in EXTINF, + # override the metadata we get from radio streams? +# m3u_overrides = false + + # Should iTunes metadata override ours? +# itunes_overrides = false + + # Should we import the content of iTunes smart playlists? +# itunes_smartpl = false + + # Decoding options for DAAP clients + # Since iTunes has native support for mpeg, mp4a, mp4v, alac and wav, + # such files will be sent as they are. Any other formats will be decoded + # to raw wav. If OwnTone detects a non-iTunes DAAP client, it is + # assumed to only support mpeg and wav, other formats will be decoded. + # Here you can change when to decode. Note that these settings have no + # effect on AirPlay. + # Formats: mp4a, mp4v, mpeg, alac, flac, mpc, ogg, wma, wmal, wmav, aif, wav + # Formats that should never be decoded +# no_decode = { "format", "format" } + # Formats that should always be decoded +# force_decode = { "format", "format" } + + # Watch named pipes in the library for data and autostart playback when + # there is data to be read. To exclude specific pipes from watching, + # consider using the above _ignore options. +# pipe_autostart = true + + # Enable automatic rating updates + # If enabled, rating is automatically updated after a song has either been + # played or skipped (only skipping to the next song is taken into account). + # The calculation is taken from the beets plugin "mpdstats" (see + # https://beets.readthedocs.io/en/latest/plugins/mpdstats.html). + # It consist of calculating a stable rating based only on the play- and + # skipcount and a rolling rating based on the current rating and the action + # (played or skipped). Both results are combined with a mix-factor of 0.75: + # new rating = 0.75 * stable rating + 0.25 * rolling rating) +# rating_updates = false + + # Allows creating, deleting and modifying m3u playlists in the library directories. + # Only supported by the player web interface and some mpd clients + # Defaults to being disabled. +# allow_modifying_stored_playlists = false + + # A directory in one of the library directories that will be used as the default + # playlist directory. OwnTone creates new playlists in this directory if only + # a playlist name is provided (requires "allow_modify_stored_playlists" set to true). +# default_playlist_directory = "" +} + +# Local audio output +audio { + # Name - used in the speaker list in Remote + nickname = "DiskStation" + + # Type of the output (alsa, pulseaudio, dummy or disabled) +# type = "alsa" + + # For pulseaudio output, an optional server hostname or IP can be + # specified (e.g. "localhost"). If not set, connection is made via local + # socket. +# server = "" + + # Audio PCM device name for local audio output - ALSA only +# card = "default" + + # Mixer channel to use for volume control - ALSA only + # If not set, PCM will be used if available, otherwise Master. +# mixer = "" + + # Mixer device to use for volume control - ALSA only + # If not set, the value for "card" will be used. +# mixer_device = "" + + # Enable or disable audio resampling to keep local audio in sync with + # e.g. Airplay. This feature relies on accurate ALSA measurements of + # delay, and some devices don't provide that. If that is the case you + # are better off disabling the feature. +# sync_disable = false + + # Here you can adjust when local audio is started relative to other + # speakers, e.g. Airplay. Negative values correspond to moving local + # audio ahead, positive correspond to delaying it. The unit is + # milliseconds. The offset must be between -1000 and 1000 (+/- 1 sec). +# offset_ms = 0 + + # To calculate what and if resampling is required, local audio delay is + # measured each second. After a period the collected measurements are + # used to estimate drift and latency, which determines if corrections + # are required. This setting sets the length of that period in seconds. +# adjust_period_seconds = 100 +} + +# ALSA device settings +# If you have multiple ALSA devices you can configure them individually via +# sections like the below. Make sure to set the "card name" correctly. See the +# README about ALSA for details. Note that these settings will override the ALSA +# settings in the "audio" section above. +#alsa "card name" { + # Name used in the speaker list. If not set, the card name will be used. +# nickname = "DiskStation" + + # Mixer channel to use for volume control + # If not set, PCM will be used if available, otherwise Master +# mixer = "" + + # Mixer device to use for volume control + # If not set, the card name will be used +# mixer_device = "" +#} + +# Pipe output +# Allows OwnTone to output audio data to a named pipe +#fifo { +# nickname = "fifo" +# path = "/path/to/fifo" +#} + +# AirPlay settings common to all devices +#airplay_shared { + # UDP ports used when airplay devices make connections back to + # OwnTone (choosing specific ports may be helpful when running + # OwnTone behind a firewall) +# control_port = 0 +# timing_port = 0 +#} + +# AirPlay per device settings +# (make sure you get the capitalization of the device name right) +#airplay "My AirPlay device" { + # OwnTone's volume goes to 11! If that's more than you can handle + # you can set a lower value here +# max_volume = 11 + + # Enable this option to exclude a particular AirPlay device from the + # speaker list +# exclude = false + + # Enable this option to keep a particular AirPlay device in the speaker + # list and thus ignore mdns notifications about it no longer being + # present. The speaker will remain until restart of OwnTone. +# permanent = false + + # Some devices spuriously disconnect during playback, and based on the + # device type OwnTone may attempt to reconnect. Setting this option + # overrides this so reconnecting is either always enabled or disabled. +# reconnect = false + + # AirPlay password +# password = "s1kr3t" + + # Disable AirPlay 1 (RAOP) +# raop_disable = false + + # Name used in the speaker list, overrides name from the device +# nickname = "My speaker name" +#} + +# Chromecast settings +# (make sure you get the capitalization of the device name right) +#chromecast "My Chromecast device" { + # OwnTone's volume goes to 11! If that's more than you can handle + # you can set a lower value here +# max_volume = 11 + + # Enable this option to exclude a particular device from the speaker + # list +# exclude = false + + # Name used in the speaker list, overrides name from the device +# nickname = "My speaker name" +#} + +# Spotify settings (only have effect if Spotify enabled - see README/INSTALL) +spotify { + # Directory where user settings should be stored (credentials) +# settings_dir = "/var/packages/owntone/var/libspotify" + + # Cache directory +# cache_dir = "/tmp" + + # Set preferred bitrate for music streaming + # 0: No preference (default), 1: 96kbps, 2: 160kbps, 3: 320kbps +# bitrate = 0 + + # Your Spotify playlists will by default be put in a "Spotify" playlist + # folder. If you would rather have them together with your other + # playlists you can set this option to true. +# base_playlist_disable = false + + # Spotify playlists usually have many artist, and if you don't want + # every artist to be listed when artist browsing in Remote, you can set + # the artist_override flag to true. This will use the compilation_artist + # as album artist for Spotify items. +# artist_override = false + + # Similar to the different artists in Spotify playlists, the playlist + # items belong to different albums, and if you do not want every album + # to be listed when browsing in Remote, you can set the album_override + # flag to true. This will use the playlist name as album name for + # Spotify items. Notice that if an item is in more than one playlist, + # it will only appear in one album when browsing (in which album is + # random). +# album_override = false +} + +# MPD configuration (only have effect if MPD enabled - see README/INSTALL) +mpd { + # TCP port to listen on for MPD client requests. + # Default port is 6600, set to 0 to disable MPD support. +# port = 6600 + + # HTTP port to listen for artwork requests (only supported by some MPD + # clients and will need additional configuration in the MPD client to + # work). Set to 0 to disable serving artwork over http. +# http_port = 0 + + # By default OwnTone will - like iTunes - clear the playqueue if + # playback stops. Setting clear_queue_on_stop_disable to true will keep + # the playlist like MPD does. Note that some dacp clients do not show + # the playqueue if playback is stopped. +# clear_queue_on_stop_disable = false +} + +# SQLite configuration (allows to modify the operation of the SQLite databases) +# Make sure to read the SQLite documentation for the corresponding PRAGMA +# statements as changing them from the defaults may increase the possibility of +# database corruptions! By default the SQLite default values are used. +sqlite { + # Cache size in number of db pages for the library database + # (SQLite default page size is 1024 bytes and cache size is 2000 pages) +# pragma_cache_size_library = 2000 + + # Cache size in number of db pages for the daap cache database + # (SQLite default page size is 1024 bytes and cache size is 2000 pages) +# pragma_cache_size_cache = 2000 + + # Sets the journal mode for the database + # DELETE (default), TRUNCATE, PERSIST, MEMORY, WAL, OFF +# pragma_journal_mode = DELETE + + # Change the setting of the "synchronous" flag + # 0: OFF, 1: NORMAL, 2: FULL (default) +# pragma_synchronous = 2 + + # Number of bytes set aside for memory-mapped I/O for the library database + # (requires sqlite 3.7.17 or later) + # 0: disables mmap (default), any other value > 0: number of bytes for mmap +# pragma_mmap_size_library = 0 + + # Number of bytes set aside for memory-mapped I/O for the cache database + # (requires sqlite 3.7.17 or later) + # 0: disables mmap (default), any other value > 0: number of bytes for mmap +# pragma_mmap_size_cache = 0 + + # Should the database be vacuumed on startup? (increases startup time, + # but may reduce database size). Default is yes. +# vacuum = yes +} + +# Streaming audio settings for remote connections (ie stream.mp3) +streaming { + # Sample rate, typically 44100 or 48000 +# sample_rate = 44100 + + # Set the MP3 streaming bit rate (in kbps), valid options: 64 / 96 / 128 / 192 / 320 +# bit_rate = 192 +} From df2ea6ca88bd6588cfd1e9c348812ad962f9ed2f Mon Sep 17 00:00:00 2001 From: hgy59 Date: Sun, 22 May 2022 03:18:09 +0200 Subject: [PATCH 05/14] rename cross/expat to cross/libexpat to match upstream --- cross/avahi/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cross/avahi/Makefile b/cross/avahi/Makefile index 50981f8eb21..5bbd8262499 100644 --- a/cross/avahi/Makefile +++ b/cross/avahi/Makefile @@ -6,7 +6,7 @@ PKG_DIST_SITE = https://github.com/lathiat/avahi/releases/download/v$(PKG_VERS) PKG_DIR = $(PKG_NAME)-$(PKG_VERS) BUILD_DEPENDS = native/glib -DEPENDS = cross/glib cross/libevent cross/expat cross/libdaemon cross/dbus +DEPENDS = cross/glib cross/libevent cross/libexpat cross/libdaemon cross/dbus HOMEPAGE = https://www.avahi.org/ COMMENT = Avahi - Service Discovery for Linux using mDNS/DNS-SD -- compatible with Bonjour From a6856a2755b85aef07d4c246dd6f26ff99398013 Mon Sep 17 00:00:00 2001 From: hgy59 Date: Sun, 22 May 2022 03:20:06 +0200 Subject: [PATCH 06/14] owntone: update dependencies - update alsa-lib - update libplist - update libwebsockets - update mxml --- cross/libplist/Makefile | 26 +++++++------------------- cross/libplist/PLIST | 12 ++++++------ cross/libplist/digests | 6 +++--- cross/libwebsockets/Makefile | 2 ++ cross/mxml/Makefile | 6 ++++-- cross/mxml/digests | 6 +++--- cross/owntone/Makefile | 9 +++++---- native/glib/Makefile | 2 -- spk/owntone/Makefile | 3 +-- 9 files changed, 31 insertions(+), 41 deletions(-) diff --git a/cross/libplist/Makefile b/cross/libplist/Makefile index 40c803f83fb..53a2775e9ef 100644 --- a/cross/libplist/Makefile +++ b/cross/libplist/Makefile @@ -1,31 +1,19 @@ PKG_NAME = libplist -PKG_VERS = 2.1.0 -PKG_EXT = tar.gz -PKG_DIST_NAME = $(PKG_VERS).$(PKG_EXT) -PKG_DIST_SITE = https://github.com/libimobiledevice/$(PKG_NAME)/archive -PKG_DIST_FILE = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_VERS = 2.2.0 +PKG_EXT = tar.bz2 +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://github.com/libimobiledevice/libplist/releases/download/$(PKG_VERS) PKG_DIR = $(PKG_NAME)-$(PKG_VERS) DEPENDS = -HOMEPAGE = https://github.com/libimobiledevice/libplist/ +HOMEPAGE = https://github.com/libimobiledevice/libplist COMMENT = A small portable C library to handle Apple Property List files in binary or XML. LICENSE = LGPL-2.1 GNU_CONFIGURE = 1 -PRE_CONFIGURE_TARGET = libplist_pre_configure CONFIGURE_ARGS = --without-cython -LIBPLIST_AUTOGEN_ARGS = $(CONFIGURE_ARGS) -include ../../mk/spksrc.cross-cc.mk - -ifeq ($(findstring $(ARCH),$(ARM_ARCHS)),$(ARCH)) -LIBPLIST_AUTOGEN_ARGS += --host=arm-linux -endif -ifeq ($(findstring $(ARCH),$(PPC_ARCHS)),$(ARCH)) -LIBPLIST_AUTOGEN_ARGS += --host=ppc-linux -endif +#ADDITIONAL_CPPFLAGS = -O -.PHONY: libplist_pre_configure -libplist_pre_configure: - $(RUN) ; NOCONFIGURE=1 ./autogen.sh $(LIBPLIST_AUTOGEN_ARGS) +include ../../mk/spksrc.cross-cc.mk diff --git a/cross/libplist/PLIST b/cross/libplist/PLIST index 5414ec81a31..ccbecb03833 100644 --- a/cross/libplist/PLIST +++ b/cross/libplist/PLIST @@ -1,7 +1,7 @@ bin:bin/plistutil -lnk:lib/libplist.so -lnk:lib/libplist.so.3 -lib:lib/libplist.so.3.2.0 -lnk:lib/libplist++.so -lnk:lib/libplist++.so.3 -lib:lib/libplist++.so.3.2.0 +lnk:lib/libplist++-2.0.so +lnk:lib/libplist++-2.0.so.3 +lib:lib/libplist++-2.0.so.3.3.0 +lnk:lib/libplist-2.0.so +lnk:lib/libplist-2.0.so.3 +lib:lib/libplist-2.0.so.3.3.0 diff --git a/cross/libplist/digests b/cross/libplist/digests index ceb4cee62dd..80c5dc8eca4 100644 --- a/cross/libplist/digests +++ b/cross/libplist/digests @@ -1,3 +1,3 @@ -libplist-2.1.0.tar.gz SHA1 4ced7eae4b3e0d8f132f094435089a4bf61f4ff2 -libplist-2.1.0.tar.gz SHA256 4b33f9af3f9208d54a3c3e1a8c149932513f451c98d1dd696fe42c06e30b7f03 -libplist-2.1.0.tar.gz MD5 051a93535f3b825eea5cdf284257e16d +libplist-2.2.0.tar.bz2 SHA1 a92830a3286442f9ea2eac02db81fcfb149a0812 +libplist-2.2.0.tar.bz2 SHA256 4a5517e5377ec421df84c586ba85bb4e1d26f11ad203d7d450a907c0156fbd9a +libplist-2.2.0.tar.bz2 MD5 63cc49401521662c94cd4107898c744c diff --git a/cross/libwebsockets/Makefile b/cross/libwebsockets/Makefile index d1d76c2adbf..f94b160364b 100644 --- a/cross/libwebsockets/Makefile +++ b/cross/libwebsockets/Makefile @@ -11,6 +11,8 @@ DEPENDS = cross/openssl # ppc except qoriq UNSUPPORTED_ARCHS = $(OLD_PPC_ARCHS) +ADDITIONAL_CPPFLAGS = -O + HOMEPAGE = https://libwebsockets.org/ COMMENT = Libwebsockets (LWS) is a flexible, lightweight pure C library for implementing modern network protocols easily with a tiny footprint, using a nonblocking event loop. LICENSE = MIT diff --git a/cross/mxml/Makefile b/cross/mxml/Makefile index 016593a54b6..6d4ce4b08a2 100644 --- a/cross/mxml/Makefile +++ b/cross/mxml/Makefile @@ -1,5 +1,5 @@ PKG_NAME = mxml -PKG_VERS = 3.2 +PKG_VERS = 3.3 PKG_EXT = tar.gz PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://github.com/michaelrsweet/mxml/releases/download/v$(PKG_VERS) @@ -8,12 +8,14 @@ PKG_DIR = $(PKG_NAME)-$(PKG_VERS) DEPENDS = HOMEPAGE = https://www.msweet.org/mxml -COMMENT = Tiny XML library. +COMMENT = Mini-XML is a tiny XML library that you can use to read and write XML and XML-like data files in your application without requiring large non-standard libraries. LICENSE = Apache 2.0 GNU_CONFIGURE = 1 INSTALL_TARGET = mxml_install +ADDITIONAL_CPPFLAGS = -O + include ../../mk/spksrc.cross-cc.mk .PHONY: mxml_install diff --git a/cross/mxml/digests b/cross/mxml/digests index 46282fc2f5f..d8e5ce9e08b 100644 --- a/cross/mxml/digests +++ b/cross/mxml/digests @@ -1,3 +1,3 @@ -mxml-3.2.tar.gz SHA1 0f13a4a29278c37a59c621dcbe79af0db7f71e97 -mxml-3.2.tar.gz SHA256 b894f6c64964f2e77902564c17ba00f5d077a7a24054e7c1937903b0bd42c974 -mxml-3.2.tar.gz MD5 1befcac3c4b46c48acd9649e4d741fb4 +mxml-3.3.tar.gz SHA1 66dd54a74cd0eea5663f75ec21a5e80b2e2de387 +mxml-3.3.tar.gz SHA256 7cf976366f9e8e4f8cff7d35a59bcf6201c769fce9e58015d64f4b6de1fe3dd8 +mxml-3.3.tar.gz MD5 2172386b2f5073ec14ab44e664961b8b diff --git a/cross/owntone/Makefile b/cross/owntone/Makefile index 4f3de2a28a1..2c706ac52af 100644 --- a/cross/owntone/Makefile +++ b/cross/owntone/Makefile @@ -32,10 +32,11 @@ POST_INSTALL_TARGET = owntone_post_install include ../../mk/spksrc.cross-cc.mk # use libssp of toolchain -TC_LIPRARY_PATH = $(WORK_DIR)/../../../toolchain/syno-$(ARCH)-$(TC_VERS)/work/$(TC_TARGET)/$(TC_LIBRARY) +TC_LIBSSP_FILE = libssp.so.0.0.0 .PHONY: owntone_post_install owntone_post_install: - @$(RUN) install $(TC_LIPRARY_PATH)/libssp.so.0.0.0 $(INSTALL_DIR)/$(INSTALL_PREFIX)/lib/ - @$(RUN) ; cd $(INSTALL_DIR)/$(INSTALL_PREFIX)/lib/ && ln -sf libssp.so.0.0.0 libssp.so.0 - @$(RUN) ; cd $(INSTALL_DIR)/$(INSTALL_PREFIX)/lib/ && ln -sf libssp.so.0.0.0 libssp.so + @$(MSG) Install libssp from toolchain + @$(RUN) ; install $(TC_PATH)../$(TC_LIBRARY)/$(TC_LIBSSP_FILE) $(STAGING_INSTALL_PREFIX)/lib/ + @$(RUN) ; cd $(STAGING_INSTALL_PREFIX)/lib/ && ln -sf $(TC_LIBSSP_FILE) libssp.so.0 + @$(RUN) ; cd $(STAGING_INSTALL_PREFIX)/lib/ && ln -sf $(TC_LIBSSP_FILE) libssp.so diff --git a/native/glib/Makefile b/native/glib/Makefile index 5743b27d5f1..09d6c97d501 100644 --- a/native/glib/Makefile +++ b/native/glib/Makefile @@ -12,8 +12,6 @@ HOMEPAGE = https://developer.gnome.org/glib/ COMMENT = General-purpose utility library LICENSE = GPLv2 -UNSUPPORTED_ARCHS = powerpc ppc824x ppc853x ppc854x - CONFIGURE_ARGS += -Dman=false -Dlibmount=disabled -Ddefault_library=shared -Dselinux=disabled include ../../mk/spksrc.native-meson.mk diff --git a/spk/owntone/Makefile b/spk/owntone/Makefile index 64ac94328ab..edc6b68d733 100644 --- a/spk/owntone/Makefile +++ b/spk/owntone/Makefile @@ -19,7 +19,6 @@ LICENSE = GPLv2 # 3688 (web UI) # 6600 (MPD client requests) - SERVICE_USER = auto SERVICE_SETUP = src/service-setup.sh STARTABLE = yes @@ -32,7 +31,7 @@ export FFMPEG_DIR = $(shell pwd)/../ffmpeg/work-$(ARCH)-$(TCVERSION)/install/var ifneq ($(wildcard $(FFMPEG_DIR)),) PRE_DEPEND_TARGET = owntone_pre_depend SPK_DEPENDS = "ffmpeg>4.2" -# Use some of the FFMPEG package shared libraries +# Use some shared libraries of the FFMPEG package FFMPEG_LIBS = libavformat.pc libavcodec.pc libavutil.pc libavfilter.pc FFMPEG_LIBS += libswscale.pc libpostproc.pc FFMPEG_LIBS += libswresample.pc libavresample.pc From 49c0609497c33fd2665451a65c42bb30f9b59737 Mon Sep 17 00:00:00 2001 From: hgy59 Date: Sun, 22 May 2022 17:39:58 +0200 Subject: [PATCH 07/14] revert update of cross/libplist - libplist 2.2 is not compatible with libusbmuxd --- cross/libplist/Makefile | 26 +++++++++++++++++++------- cross/libplist/PLIST | 12 ++++++------ cross/libplist/digests | 6 +++--- 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/cross/libplist/Makefile b/cross/libplist/Makefile index 53a2775e9ef..0eb1ff9fd37 100644 --- a/cross/libplist/Makefile +++ b/cross/libplist/Makefile @@ -1,19 +1,31 @@ PKG_NAME = libplist -PKG_VERS = 2.2.0 -PKG_EXT = tar.bz2 -PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) -PKG_DIST_SITE = https://github.com/libimobiledevice/libplist/releases/download/$(PKG_VERS) +PKG_VERS = 2.1.0 +PKG_EXT = tar.gz +PKG_DIST_NAME = $(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://github.com/libimobiledevice/libplist/archive +PKG_DIST_FILE = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIR = $(PKG_NAME)-$(PKG_VERS) DEPENDS = -HOMEPAGE = https://github.com/libimobiledevice/libplist +HOMEPAGE = https://github.com/libimobiledevice/libplist/ COMMENT = A small portable C library to handle Apple Property List files in binary or XML. LICENSE = LGPL-2.1 GNU_CONFIGURE = 1 +PRE_CONFIGURE_TARGET = libplist_pre_configure CONFIGURE_ARGS = --without-cython - -#ADDITIONAL_CPPFLAGS = -O +LIBPLIST_AUTOGEN_ARGS = $(CONFIGURE_ARGS) include ../../mk/spksrc.cross-cc.mk + +ifeq ($(findstring $(ARCH),$(ARM_ARCHS)),$(ARCH)) +LIBPLIST_AUTOGEN_ARGS += --host=arm-linux +endif +ifeq ($(findstring $(ARCH),$(PPC_ARCHS)),$(ARCH)) +LIBPLIST_AUTOGEN_ARGS += --host=ppc-linux +endif + +.PHONY: libplist_pre_configure +libplist_pre_configure: + $(RUN) ; NOCONFIGURE=1 ./autogen.sh $(LIBPLIST_AUTOGEN_ARGS) diff --git a/cross/libplist/PLIST b/cross/libplist/PLIST index ccbecb03833..5414ec81a31 100644 --- a/cross/libplist/PLIST +++ b/cross/libplist/PLIST @@ -1,7 +1,7 @@ bin:bin/plistutil -lnk:lib/libplist++-2.0.so -lnk:lib/libplist++-2.0.so.3 -lib:lib/libplist++-2.0.so.3.3.0 -lnk:lib/libplist-2.0.so -lnk:lib/libplist-2.0.so.3 -lib:lib/libplist-2.0.so.3.3.0 +lnk:lib/libplist.so +lnk:lib/libplist.so.3 +lib:lib/libplist.so.3.2.0 +lnk:lib/libplist++.so +lnk:lib/libplist++.so.3 +lib:lib/libplist++.so.3.2.0 diff --git a/cross/libplist/digests b/cross/libplist/digests index 80c5dc8eca4..ceb4cee62dd 100644 --- a/cross/libplist/digests +++ b/cross/libplist/digests @@ -1,3 +1,3 @@ -libplist-2.2.0.tar.bz2 SHA1 a92830a3286442f9ea2eac02db81fcfb149a0812 -libplist-2.2.0.tar.bz2 SHA256 4a5517e5377ec421df84c586ba85bb4e1d26f11ad203d7d450a907c0156fbd9a -libplist-2.2.0.tar.bz2 MD5 63cc49401521662c94cd4107898c744c +libplist-2.1.0.tar.gz SHA1 4ced7eae4b3e0d8f132f094435089a4bf61f4ff2 +libplist-2.1.0.tar.gz SHA256 4b33f9af3f9208d54a3c3e1a8c149932513f451c98d1dd696fe42c06e30b7f03 +libplist-2.1.0.tar.gz MD5 051a93535f3b825eea5cdf284257e16d From aad2c014a386863b066f20efb665880665b0b810 Mon Sep 17 00:00:00 2001 From: hgy59 Date: Sun, 22 May 2022 22:16:34 +0200 Subject: [PATCH 08/14] add initial service-setup.sh --- spk/owntone/src/service-setup.sh | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 spk/owntone/src/service-setup.sh diff --git a/spk/owntone/src/service-setup.sh b/spk/owntone/src/service-setup.sh new file mode 100644 index 00000000000..1aa02e2f3e4 --- /dev/null +++ b/spk/owntone/src/service-setup.sh @@ -0,0 +1,9 @@ + +CFG_FILE="${SYNOPKG_PKGVAR}/owntone.conf" +OWNTONE="${SYNOPKG_PKGDEST}/sbin/owntone" +SERVICE_COMMAND="${OWNTONE} -c ${CFG_FILE} -P ${PID_FILE}" + +service_postinst () +{ + echo "TODO: implement service post installation." +} From ab55511d98821c93244770e2d74f8248925b402a Mon Sep 17 00:00:00 2001 From: hgy59 Date: Tue, 31 May 2022 12:30:49 +0200 Subject: [PATCH 09/14] owntone: fix build for ARMv5 and PPC_ARCHS --- cross/owntone/Makefile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cross/owntone/Makefile b/cross/owntone/Makefile index 2c706ac52af..78856055565 100644 --- a/cross/owntone/Makefile +++ b/cross/owntone/Makefile @@ -27,11 +27,16 @@ LICENSE = GPLv2 GNU_CONFIGURE = 1 ADDITIONAL_CFLAGS = -std=c99 +include ../../mk/spksrc.archs.mk +ifneq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(PPC_ARCHS)),$(ARCH)) POST_INSTALL_TARGET = owntone_post_install +else +PLIST_TRANSFORM = sed -e '/\/libssp\.so/d' +endif include ../../mk/spksrc.cross-cc.mk -# use libssp of toolchain +# install libssp of toolchain TC_LIBSSP_FILE = libssp.so.0.0.0 .PHONY: owntone_post_install From 735757db3af5e66c5f240de05705088e11cd6995 Mon Sep 17 00:00:00 2001 From: hgy59 Date: Wed, 8 Jun 2022 22:48:29 +0200 Subject: [PATCH 10/14] remove native/glib again - native/glib is not required, since glib-mkenums is a python script and must not be built for the build system - adapted from #5298 --- cross/avahi/Makefile | 6 +++--- native/glib/Makefile | 17 ----------------- native/glib/digests | 3 --- 3 files changed, 3 insertions(+), 23 deletions(-) delete mode 100644 native/glib/Makefile delete mode 100644 native/glib/digests diff --git a/cross/avahi/Makefile b/cross/avahi/Makefile index 5bbd8262499..74634c9f528 100644 --- a/cross/avahi/Makefile +++ b/cross/avahi/Makefile @@ -5,7 +5,6 @@ PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://github.com/lathiat/avahi/releases/download/v$(PKG_VERS) PKG_DIR = $(PKG_NAME)-$(PKG_VERS) -BUILD_DEPENDS = native/glib DEPENDS = cross/glib cross/libevent cross/libexpat cross/libdaemon cross/dbus HOMEPAGE = https://www.avahi.org/ @@ -14,13 +13,14 @@ LICENSE = LGPLv2.1 GNU_CONFIGURE = 1 CONFIGURE_ARGS = --with-distro=none +CONFIGURE_ARGS += --disable-static CONFIGURE_ARGS += --disable-qt5 --disable-qt4 CONFIGURE_ARGS += --disable-gtk --disable-gtk3 CONFIGURE_ARGS += --disable-gdbm CONFIGURE_ARGS += --disable-python CONFIGURE_ARGS += --disable-mono --disable-monodoc -NATIVE_GLIB_GOBJECT_DIR = $(realpath $(WORK_DIR)/../../../native/glib/work-native/install/usr/local/bin) -ENV = PATH=$$PATH:$(NATIVE_GLIB_GOBJECT_DIR) +# Build requires access to glib-mkenums Python script from cross/glib +ENV += PATH=$$PATH:$(STAGING_INSTALL_PREFIX)/bin include ../../mk/spksrc.cross-cc.mk diff --git a/native/glib/Makefile b/native/glib/Makefile deleted file mode 100644 index 09d6c97d501..00000000000 --- a/native/glib/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -PKG_NAME = glib -PKG_VERS = 2.66.4 -PKG_SHORT_VERS = $(word 1,$(subst ., ,$(PKG_VERS))).$(word 2,$(subst ., ,$(PKG_VERS))) -PKG_EXT = tar.xz -PKG_DIR = $(PKG_NAME)-$(PKG_VERS) -PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) -PKG_DIST_SITE = https://ftp.gnome.org/pub/GNOME/sources/$(PKG_NAME)/$(PKG_SHORT_VERS) - -DEPENDS = - -HOMEPAGE = https://developer.gnome.org/glib/ -COMMENT = General-purpose utility library -LICENSE = GPLv2 - -CONFIGURE_ARGS += -Dman=false -Dlibmount=disabled -Ddefault_library=shared -Dselinux=disabled - -include ../../mk/spksrc.native-meson.mk diff --git a/native/glib/digests b/native/glib/digests deleted file mode 100644 index 162edd168c0..00000000000 --- a/native/glib/digests +++ /dev/null @@ -1,3 +0,0 @@ -glib-2.66.4.tar.xz SHA1 a45268bb9adeb49563c16978c52b3bd5ac93ae0d -glib-2.66.4.tar.xz SHA256 97df8670e32f9fd4f7392b0980e661dd625012015d58350da1e58e343f4af984 -glib-2.66.4.tar.xz MD5 2df4576b1e4acfd118867eebb41d9956 From e370d1eabd5744629ef051c7aab87c04ba2ca745 Mon Sep 17 00:00:00 2001 From: hgy59 Date: Sat, 23 Jul 2022 22:15:39 +0200 Subject: [PATCH 11/14] owntone: fix error handling when avahi is not available --- .../owntone/patches/001-fix_mdns_avahi_init.patch | 15 +++++++++++++++ spk/owntone/PLIST | 0 2 files changed, 15 insertions(+) create mode 100644 cross/owntone/patches/001-fix_mdns_avahi_init.patch delete mode 100644 spk/owntone/PLIST diff --git a/cross/owntone/patches/001-fix_mdns_avahi_init.patch b/cross/owntone/patches/001-fix_mdns_avahi_init.patch new file mode 100644 index 00000000000..d1f3298721d --- /dev/null +++ b/cross/owntone/patches/001-fix_mdns_avahi_init.patch @@ -0,0 +1,15 @@ +# fix mdns_init: +# - fix error handling when avahi is not available. +# this is fixed for owntone >= 28.4 (https://github.com/owntone/owntone-server/pull/1479) +# +--- src/mdns_avahi.c.orig 2021-05-21 21:42:05.000000000 +0000 ++++ src/mdns_avahi.c 2022-05-22 18:05:20.678625353 +0000 +@@ -1044,7 +1044,7 @@ + client_callback, NULL, &error); + if (!mdns_client) + { +- DPRINTF(E_WARN, L_MDNS, "mdns_init: Could not create Avahi client: %s\n", MDNSERR); ++ DPRINTF(E_WARN, L_MDNS, "mdns_init: Could not create Avahi client: %s\n", avahi_strerror(error)); + + return -1; + } diff --git a/spk/owntone/PLIST b/spk/owntone/PLIST deleted file mode 100644 index e69de29bb2d..00000000000 From e05564028976db2ef80adb0100ab65d7b4f0cc32 Mon Sep 17 00:00:00 2001 From: hgy59 Date: Tue, 7 Mar 2023 06:33:25 +0100 Subject: [PATCH 12/14] revert unrelated changes --- cross/libplist/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cross/libplist/Makefile b/cross/libplist/Makefile index 0eb1ff9fd37..40c803f83fb 100644 --- a/cross/libplist/Makefile +++ b/cross/libplist/Makefile @@ -2,7 +2,7 @@ PKG_NAME = libplist PKG_VERS = 2.1.0 PKG_EXT = tar.gz PKG_DIST_NAME = $(PKG_VERS).$(PKG_EXT) -PKG_DIST_SITE = https://github.com/libimobiledevice/libplist/archive +PKG_DIST_SITE = https://github.com/libimobiledevice/$(PKG_NAME)/archive PKG_DIST_FILE = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIR = $(PKG_NAME)-$(PKG_VERS) From 9631f2b38d8e56211e454a2ffa24a1ea5e364b96 Mon Sep 17 00:00:00 2001 From: hgy59 Date: Sun, 21 May 2023 02:45:21 +0200 Subject: [PATCH 13/14] owntone: adjust ffmpeg dependency folder (was renamed from ffmpeg to ffmpeg4) --- cross/owntone/Makefile | 4 ++-- spk/owntone/Makefile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cross/owntone/Makefile b/cross/owntone/Makefile index 78856055565..204aec9a234 100644 --- a/cross/owntone/Makefile +++ b/cross/owntone/Makefile @@ -5,7 +5,7 @@ PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://github.com/owntone/owntone-server/releases/download/$(PKG_VERS) PKG_DIR = $(PKG_NAME)-$(PKG_VERS) -OPTIONAL_DEPENDS = cross/ffmpeg +OPTIONAL_DEPENDS = cross/ffmpeg4 DEPENDS = cross/libunistring cross/zlib cross/libconfuse cross/curl DEPENDS += cross/mxml cross/sqlite cross/libevent cross/json-c @@ -17,7 +17,7 @@ DEPENDS += cross/libsodium DEPENDS += cross/alsa-lib ifeq ($(wildcard $(FFMPEG_DIR)),) -DEPENDS += cross/ffmpeg +DEPENDS += cross/ffmpeg4 endif HOMEPAGE = http://owntone.github.io/owntone-server diff --git a/spk/owntone/Makefile b/spk/owntone/Makefile index edc6b68d733..c6405942e4a 100644 --- a/spk/owntone/Makefile +++ b/spk/owntone/Makefile @@ -26,7 +26,7 @@ SERVICE_PORT = 3689 ADMIN_PORT = $(SERIVCE_PORT) # Reuse FFmpeg libraries -export FFMPEG_DIR = $(shell pwd)/../ffmpeg/work-$(ARCH)-$(TCVERSION)/install/var/packages/ffmpeg/target +export FFMPEG_DIR = $(shell pwd)/../ffmpeg4/work-$(ARCH)-$(TCVERSION)/install/var/packages/ffmpeg/target ifneq ($(wildcard $(FFMPEG_DIR)),) PRE_DEPEND_TARGET = owntone_pre_depend From 943f6109d494e5c9665e701787a25d0b7c4676fa Mon Sep 17 00:00:00 2001 From: hgy59 Date: Sun, 21 May 2023 04:51:38 +0200 Subject: [PATCH 14/14] revert unrelated changes --- cross/dbus/PLIST | 12 ------------ cross/libwebsockets/Makefile | 2 -- cross/opus/Makefile | 3 --- 3 files changed, 17 deletions(-) diff --git a/cross/dbus/PLIST b/cross/dbus/PLIST index 4d078f73695..dcd1cfcbe45 100644 --- a/cross/dbus/PLIST +++ b/cross/dbus/PLIST @@ -1,15 +1,3 @@ -bin:bin/dbus-cleanup-sockets -bin:bin/dbus-daemon -bin:bin/dbus-launch -bin:bin/dbus-monitor -bin:bin/dbus-run-session -bin:bin/dbus-send -bin:bin/dbus-test-tool -bin:bin/dbus-update-activation-environment -bin:bin/dbus-uuidgen -lnk:lib/libdbus-1.so -lnk:lib/libdbus-1.so.3 -lib:lib/libdbus-1.so.3.29.0 lnk:lib/libdbus-1.so lnk:lib/libdbus-1.so.3 lib:lib/libdbus-1.so.3.31.0 diff --git a/cross/libwebsockets/Makefile b/cross/libwebsockets/Makefile index f94b160364b..d1d76c2adbf 100644 --- a/cross/libwebsockets/Makefile +++ b/cross/libwebsockets/Makefile @@ -11,8 +11,6 @@ DEPENDS = cross/openssl # ppc except qoriq UNSUPPORTED_ARCHS = $(OLD_PPC_ARCHS) -ADDITIONAL_CPPFLAGS = -O - HOMEPAGE = https://libwebsockets.org/ COMMENT = Libwebsockets (LWS) is a flexible, lightweight pure C library for implementing modern network protocols easily with a tiny footprint, using a nonblocking event loop. LICENSE = MIT diff --git a/cross/opus/Makefile b/cross/opus/Makefile index db745f3c5aa..c924e2af761 100644 --- a/cross/opus/Makefile +++ b/cross/opus/Makefile @@ -13,9 +13,6 @@ LICENSE = BSD GNU_CONFIGURE = 1 -# avoid warning _FORTIFY_SOURCE requires compiling with optimization (-O) -ADDITIONAL_CPPFLAGS = -O2 - CONFIGURE_ARGS = --disable-doc --disable-extra-programs ADDITIONAL_CPPFLAGS = -O2