diff --git a/.github/actions/prepare.sh b/.github/actions/prepare.sh
index 8e940a041f8..141b8bce861 100755
--- a/.github/actions/prepare.sh
+++ b/.github/actions/prepare.sh
@@ -28,13 +28,7 @@ DEPENDENT_PACKAGES=$(echo "${GH_FILES}" | tr ' ' '\n' | grep -oP "(cross|native)
# get dependency list
# dependencies in this list include the cross or native folder (i.e. native/python cross/glib)
echo "Building dependency list..."
-DEPENDENCY_LIST=
-for package in $(find spk/ -maxdepth 1 -type d | cut -c 5- | sort)
-do
- if [ ! -f "./spk/${package}/BROKEN" ]; then
- DEPENDENCY_LIST+=$(DEPENDENCY_WALK=1 make -s -C spk/${package} dependency-list 2> /dev/null)$'\n'
- fi
-done
+DEPENDENCY_LIST=$(make dependency-list 2> /dev/null)
# search for dependent spk packages
for package in ${DEPENDENT_PACKAGES}
diff --git a/Makefile b/Makefile
index e133440960b..327562b2e7e 100644
--- a/Makefile
+++ b/Makefile
@@ -79,12 +79,9 @@ dependency-tree:
done
# build dependency list for all packages
-# - exclude broken packages
+# - broken packages are excluded
dependency-list:
- @for spk in $(filter-out $(dir $(wildcard spk/*/BROKEN)),$(dir $(wildcard spk/*/Makefile))) ; \
- do \
- $(MAKE) -s -C $${spk} dependency-list ; \
- done
+ @mk/dependency-list.sh
# define a template that instantiates a 'python3-avoton-6.1' -style target for
# every ($2) arch, every ($1) spk
diff --git a/cross/libicu/Makefile b/cross/libicu/Makefile
index c7c1f11a2ea..fdf3b823939 100644
--- a/cross/libicu/Makefile
+++ b/cross/libicu/Makefile
@@ -5,7 +5,7 @@ PKG_DIST_NAME = icu4c-$(subst .,_,$(PKG_VERS))-src.$(PKG_EXT)
PKG_DIST_SITE = https://github.com/unicode-org/icu/releases/download/release-$(subst .,-,$(PKG_VERS))
PKG_DIR = icu/source
-BUILD_DEPENDS = native/$(PKG_NAME)
+BUILD_DEPENDS = native/libicu
HOMEPAGE = http://site.icu-project.org/home
COMMENT = International Components for Unicode.
diff --git a/cross/python2/Makefile b/cross/python2/Makefile
index 49793ec2b79..9ed60905d3a 100644
--- a/cross/python2/Makefile
+++ b/cross/python2/Makefile
@@ -7,7 +7,7 @@ PKG_DIST_SITE = https://www.python.org/ftp/python/$(PKG_VERS)
PKG_DIR = Python-$(PKG_VERS)
DEPENDS = cross/zlib cross/openssl cross/sqlite cross/readline cross/ncursesw cross/bzip2
-DEPENDS += cross/berkeleydb-5.3 native/$(PKG_NAME)
+DEPENDS += cross/berkeleydb-5.3 native/python2
HOMEPAGE = http://www.python.org
COMMENT = Python Programming Language
diff --git a/cross/python310/Makefile b/cross/python310/Makefile
index ed197df55b5..fdfebe6207b 100644
--- a/cross/python310/Makefile
+++ b/cross/python310/Makefile
@@ -6,7 +6,7 @@ PKG_DIST_NAME = Python-$(PKG_VERS).$(PKG_EXT)
PKG_DIST_SITE = https://www.python.org/ftp/python/$(PKG_VERS)
PKG_DIR = Python-$(PKG_VERS)
-BUILD_DEPENDS = native/$(PKG_NAME)
+BUILD_DEPENDS = native/python310
DEPENDS = cross/zlib cross/sqlite cross/readline cross/ncursesw cross/bzip2 cross/xz
# required for Sleepycat^WOracle Berkeley DB interface
diff --git a/cross/python311/Makefile b/cross/python311/Makefile
index 540bae4a5b2..629d92ff7ba 100644
--- a/cross/python311/Makefile
+++ b/cross/python311/Makefile
@@ -11,7 +11,7 @@ PKG_DIR = Python-$(PKG_VERS)
# And compiler must support std=c++11 (OlD_PPC_ARCHS fail, but ARMv5_ARCHS have no issue).
UNSUPPORTED_ARCHS = $(OLD_PPC_ARCHS)
-BUILD_DEPENDS = native/$(PKG_NAME)
+BUILD_DEPENDS = native/python311
DEPENDS = cross/zlib cross/sqlite cross/readline cross/ncursesw cross/bzip2 cross/xz
# required for Sleepycat^WOracle Berkeley DB interface
diff --git a/cross/python38/Makefile b/cross/python38/Makefile
index 9d3c47bfc3e..10017345787 100644
--- a/cross/python38/Makefile
+++ b/cross/python38/Makefile
@@ -6,7 +6,7 @@ PKG_DIST_NAME = Python-$(PKG_VERS).$(PKG_EXT)
PKG_DIST_SITE = https://www.python.org/ftp/python/$(PKG_VERS)
PKG_DIR = Python-$(PKG_VERS)
-BUILD_DEPENDS = native/$(PKG_NAME)
+BUILD_DEPENDS = native/python38
DEPENDS = cross/zlib cross/sqlite cross/readline cross/ncursesw cross/bzip2 cross/xz
# required for uuid module
diff --git a/cross/vim/Makefile b/cross/vim/Makefile
index 7ead7ee477b..eb65266a92d 100644
--- a/cross/vim/Makefile
+++ b/cross/vim/Makefile
@@ -10,7 +10,7 @@ ifeq ($(strip $(PYTHON_PACKAGE)),)
PYTHON_PACKAGE = python311
endif
-OPTIONAL_DEPENDS = cross/$(PYTHON_PACKAGE)
+OPTIONAL_DEPENDS = cross/python311
DEPENDS = cross/ncursesw
HOMEPAGE = https://www.vim.org/
@@ -26,7 +26,7 @@ CONFIGURE_ARGS += vim_cv_getcwd_broken=yes vim_cv_stat_ignores_slash=yes vim_cv_
include ../../mk/spksrc.archs.mk
ifneq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(OLD_PPC_ARCHS)),$(ARCH))
-BUILD_DEPENDS = cross/$(PYTHON_PACKAGE)
+BUILD_DEPENDS = cross/python311
CONFIGURE_ARGS += --enable-python3interp=dynamic --with-python3-command=$(HOSTPYTHON)
CONFIGURE_ARGS += vi_cv_path_python3_conf=$(PYTHON_CFG_PATH)
CONFIGURE_ARGS += vi_cv_path_python3_pfx=$(PYTHON_PREFIX)
diff --git a/cross/znc/Makefile b/cross/znc/Makefile
index 99da7b40537..e63cadf6aaf 100644
--- a/cross/znc/Makefile
+++ b/cross/znc/Makefile
@@ -9,7 +9,7 @@ ifeq ($(strip $(PYTHON_PACKAGE)),)
PYTHON_PACKAGE = python311
endif
-BUILD_DEPENDS = cross/$(PYTHON_PACKAGE)
+BUILD_DEPENDS = cross/python311
DEPENDS = cross/openssl3 cross/libicu cross/zlib
# configure: No compiler with C++11 support was found
diff --git a/diyspk/bandwhich/Makefile b/diyspk/bandwhich/Makefile
index 95ac4f855d4..dd924ffb71f 100644
--- a/diyspk/bandwhich/Makefile
+++ b/diyspk/bandwhich/Makefile
@@ -2,7 +2,7 @@ SPK_NAME = bandwhich
SPK_VERS = 0.20.0
SPK_REV = 1
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/bandwhich
# unknown relocation type 95 ...
UNSUPPORTED_ARCHS = $(OLD_PPC_ARCHS)
diff --git a/diyspk/bottom/Makefile b/diyspk/bottom/Makefile
index 292fde5e914..8a0d955b309 100644
--- a/diyspk/bottom/Makefile
+++ b/diyspk/bottom/Makefile
@@ -2,7 +2,7 @@ SPK_NAME = bottom
SPK_VERS = 0.6.8
SPK_REV = 1
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/bottom
UNSUPPORTED_ARCHS = $(OLD_PPC_ARCHS)
diff --git a/diyspk/cpulimit/Makefile b/diyspk/cpulimit/Makefile
index d8a268ad776..65aeca7a7b1 100644
--- a/diyspk/cpulimit/Makefile
+++ b/diyspk/cpulimit/Makefile
@@ -2,7 +2,7 @@ SPK_NAME = cpulimit
SPK_VERS = 0.2
SPK_REV = 1
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/cpulimit
MAINTAINER = SynoCommunity
DESCRIPTION = CPU usage limiter for Linux.
diff --git a/diyspk/duf/Makefile b/diyspk/duf/Makefile
index 79a331cc66d..982470f042d 100644
--- a/diyspk/duf/Makefile
+++ b/diyspk/duf/Makefile
@@ -2,7 +2,7 @@ SPK_NAME = duf
SPK_VERS = 0.8.1
SPK_REV = 1
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/duf
UNSUPPORTED_ARCHS = $(PPC_ARCHS)
diff --git a/diyspk/dutree/Makefile b/diyspk/dutree/Makefile
index a7c526a0e78..61d16479811 100644
--- a/diyspk/dutree/Makefile
+++ b/diyspk/dutree/Makefile
@@ -2,7 +2,7 @@ SPK_NAME = dutree
SPK_VERS = 0.2.18
SPK_REV = 1
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/dutree
UNSUPPORTED_ARCHS = $(OLD_PPC_ARCHS)
diff --git a/diyspk/etherwake/Makefile b/diyspk/etherwake/Makefile
index 9a7087fe97e..ffcc2115f75 100644
--- a/diyspk/etherwake/Makefile
+++ b/diyspk/etherwake/Makefile
@@ -2,7 +2,7 @@ SPK_NAME = etherwake
SPK_VERS = 1.09
SPK_REV = 1
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/etherwake
MAINTAINER = SynoCommunity
DESCRIPTION = Generate and transmit a Wake-On-LAN (WOL) Magic Packet
diff --git a/diyspk/fritzctl/Makefile b/diyspk/fritzctl/Makefile
index 88860e6adea..c480ce4f37b 100644
--- a/diyspk/fritzctl/Makefile
+++ b/diyspk/fritzctl/Makefile
@@ -1,9 +1,9 @@
SPK_NAME = fritzctl
SPK_VERS = 1.4.23
SPK_REV = 1
-SPK_ICON = src/$(SPK_NAME).png
+SPK_ICON = src/fritzctl.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/fritzctl
MAINTAINER = bpicode
DESCRIPTION = A lightweight, easy to use console client for the AVM FRITZ!Box Home Automation.
diff --git a/diyspk/jupp/Makefile b/diyspk/jupp/Makefile
index c731ae7e39b..974c8129f91 100755
--- a/diyspk/jupp/Makefile
+++ b/diyspk/jupp/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 40
SPK_REV = 2
SPK_ICON = src/jupp.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/jupp
MAINTAINER = SynoCommunity
DESCRIPTION = text editor jupp comes with the editor flavours known from joe, specifically, jmacs, joe, jpico, jstar, and rjoe.
diff --git a/diyspk/mtr/Makefile b/diyspk/mtr/Makefile
index c7af408c198..4eb6ef64aa9 100644
--- a/diyspk/mtr/Makefile
+++ b/diyspk/mtr/Makefile
@@ -2,7 +2,7 @@ SPK_NAME = mtr
SPK_VERS = 0.95
SPK_REV = 1
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/mtr
MAINTAINER = SynoCommunity
DESCRIPTION = mtr \(My traceroute\) combines the functionality of the 'traceroute' and 'ping' programs in a single network diagnostic tool.
diff --git a/diyspk/procs/Makefile b/diyspk/procs/Makefile
index 2324ffa8a66..344d514edbf 100644
--- a/diyspk/procs/Makefile
+++ b/diyspk/procs/Makefile
@@ -2,7 +2,7 @@ SPK_NAME = procs
SPK_VERS = 0.12.3
SPK_REV = 1
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/procs
UNSUPPORTED_ARCHS = $(OLD_PPC_ARCHS)
diff --git a/diyspk/tdu/Makefile b/diyspk/tdu/Makefile
index d13f30646f3..bc9802a8c44 100644
--- a/diyspk/tdu/Makefile
+++ b/diyspk/tdu/Makefile
@@ -2,7 +2,7 @@ SPK_NAME = tdu
SPK_VERS = 1.36
SPK_REV = 1
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/tdu
UNSUPPORTED_ARCHS = $(PPC_ARCHS)
diff --git a/diyspk/testdisk/Makefile b/diyspk/testdisk/Makefile
index cd44a363103..13f2f997b25 100644
--- a/diyspk/testdisk/Makefile
+++ b/diyspk/testdisk/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 7.1
SPK_REV = 4
SPK_ICON = src/testdisk.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/testdisk
MAINTAINER = hgy59
DESCRIPTION = "TestDisk is powerful free data recovery software."
diff --git a/mk/dependency-list.sh b/mk/dependency-list.sh
new file mode 100755
index 00000000000..6f7bf09b2cf
--- /dev/null
+++ b/mk/dependency-list.sh
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+# Build dependency list
+#
+# list dependencies for all spk packages
+# - used by github prepare action to evaluate packages to build, regarding the modified files
+# - broken packages are excluded
+# This script must be called in the top folder (spksrc) of the repository
+# It is called by the dependency-list target of the toplevel Makefile
+#
+# This script has benefits over iterating all spk folders and call "make dependency-list"
+# - it is much faster (typ. 15 s instead of 180 s)
+# - it does not require "OPTIONAL_DEPENDS" defitions anymore
+# caveats
+# - makefile variables like $(SPK_NAME) are not allowed in dependency definitions anymore
+# - definition of dependencies in included make files are not evaluated.
+# Those are
+# - native/cmake, native/cmake-legacy, native/nasm for cmake/rust packages (^1)
+# - cross/$(PYTHON_PACKAGE) for packages reusing prebuilt python (^2)
+# - cross/$(FFMPEG_PACKAGE) for packages reusing prebuilt ffmpeg (^2)
+# ^1: We could introduce a new OPTIONAL_DEPENDS (ADDITIONAL_DEPENDS) variable to fix this
+# But it will hardly happen, that nasm or cmake changes (and are deprecated since those are installed to dev environment)
+# ^2: The missing dependencies with packages using prebuilt ffmpeg/python where not
+# evaluated in the former solution too.
+# So far we did not want to trigger the build of all related packages when only the prebuilt package had changes
+# Otherwise we could introduce a new OPTIONAL_DEPENDS (ADDITIONAL_DEPENDS) variable for this
+
+# get SPK_NAME of a package
+# since the spk name might be different to the (spk/){package} folder
+# we need to parse the variable in the Makefile
+# param1: package folder
+function get_spk_name ()
+{
+ if [ -f ${1}/Makefile ]; then
+ grep "^SPK_NAME" ${1}/Makefile | cut -d= -f2 | xargs
+ fi
+}
+
+# evaluates all dependencies in a single Makefile
+# param1: folder (like spk/{name}, cross/{name}, native/{name})
+function get_file_dependencies ()
+{
+ if [ -f ${1}/Makefile ]; then
+ grep "^DEPENDS\|^NATIVE_DEPENDS\|^BUILD_DEPENDS" ${1}/Makefile | cut -d= -f2 | sort -u | tr '\n' ' '
+ fi
+}
+
+# search for substring in a list of strings
+# param1 list of space separated strings
+# param2 substring
+function contains ()
+{
+ if [ -z "${1}" -o -z "${2}" ]; then
+ echo "false";
+ else
+ if [ "$(echo ${1} | tr ' ' '\n' | grep -w ${2})" = "${2}" ]; then
+ echo "true"
+ else
+ echo "false"
+ fi
+ fi
+}
+
+# get direct package dependencies
+# param1: list of folders containing Makefile to parse
+function get_dependencies ()
+{
+ local dependencies=
+ for dep in "${1}"; do
+ dependencies+="${dep} "
+ dependencies+="$(get_file_dependencies ${dep}) "
+ done
+ echo ${dependencies} | tr ' ' '\n' | sort -u | tr '\n' ' '
+}
+
+# get all dependencies of a package
+# param1: list of toplevel dependencies
+function get_spk_dependencies ()
+{
+ local dependencies=$(get_dependencies "${1}")
+ local cumulated_dependencies=$(get_dependencies "${dependencies}")
+ while [ "${cumulated_dependencies}" != "${dependencies}" ]; do
+ dependencies=${cumulated_dependencies}
+ cumulated_dependencies=$(get_dependencies "${dependencies}")
+ done
+ echo ${cumulated_dependencies} | tr ' ' '\n' | sort -u | tr '\n' ' '
+}
+
+# get the dependency list for a package
+# param1: package name
+function get_dependency_list ()
+{
+ local spk_name=$(get_spk_name spk/${package})
+ local toplevel_dependencies=$(get_file_dependencies spk/${package})
+ local spk_dependencies=$(get_spk_dependencies "${toplevel_dependencies}")
+ echo "${spk_name}: ${spk_dependencies}"
+}
+
+# iterate all packages
+for package in $(find spk/ -maxdepth 1 -type d | cut -c 5- | sort); do
+ if [ ! -f spk/${package}/BROKEN ]; then
+ get_dependency_list spk/${package}
+ fi
+done
diff --git a/spk/adminer/Makefile b/spk/adminer/Makefile
index 0a7a47626df..c9ea8f0ef65 100644
--- a/spk/adminer/Makefile
+++ b/spk/adminer/Makefile
@@ -4,7 +4,7 @@ SPK_REV = 5
SPK_ICON = src/adminer.png
DSM_UI_DIR = app
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/adminer
MAINTAINER = piwi82
DESCRIPTION = Adminer is a full-featured database management tool available for MySQL, PostgreSQL, SQLite, MS SQL, Oracle, Firebird, SimpleDB, Elasticsearch and MongoDB.
diff --git a/spk/chromaprint/Makefile b/spk/chromaprint/Makefile
index 59a494e570b..66d3b7cbc8f 100644
--- a/spk/chromaprint/Makefile
+++ b/spk/chromaprint/Makefile
@@ -4,7 +4,7 @@ SPK_REV = 22
SPK_ICON = src/chromaprint.png
FFMPEG_PACKAGE = ffmpeg7
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/chromaprint
SPK_DEPENDS = $(FFMPEG_PACKAGE)
# ffmpeg7 requires c11 support
diff --git a/spk/comskip/Makefile b/spk/comskip/Makefile
index 3029cf522cd..8c2cac4b2a8 100644
--- a/spk/comskip/Makefile
+++ b/spk/comskip/Makefile
@@ -4,7 +4,7 @@ SPK_REV = 12
SPK_ICON = src/comskip.png
FFMPEG_PACKAGE = ffmpeg5
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/comskip
SPK_DEPENDS = $(FFMPEG_PACKAGE)
STARTABLE = no
diff --git a/spk/curaengine/Makefile b/spk/curaengine/Makefile
index 3da365e3c20..1a3399ee8a5 100644
--- a/spk/curaengine/Makefile
+++ b/spk/curaengine/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 2.1.3
SPK_REV = 2
SPK_ICON = src/curaengine.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/curaengine
# c++11 compiler required
UNSUPPORTED_ARCHS = $(OLD_PPC_ARCHS) $(ARMv5_ARCHS)
diff --git a/spk/dante-sockd/Makefile b/spk/dante-sockd/Makefile
index 2c01d00a551..edb622a145d 100644
--- a/spk/dante-sockd/Makefile
+++ b/spk/dante-sockd/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 1.4.3
SPK_REV = 1
SPK_ICON = src/dante.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/dante-sockd
MAINTAINER = Anonym-tsk
# From Inferno Nettverk A/S
diff --git a/spk/darkstat/Makefile b/spk/darkstat/Makefile
index bd18201abb2..eee648ade73 100644
--- a/spk/darkstat/Makefile
+++ b/spk/darkstat/Makefile
@@ -4,7 +4,7 @@ SPK_REV = 5
SPK_ICON = src/darkstat.png
DSM_UI_DIR = app
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/darkstat
# DSM 7 does not allow to run package as root
# error: pcap_open_live(): ovs_eth0: You don't have permission to capture on that device (socket: Operation not permitted)
diff --git a/spk/dnscrypt-proxy/Makefile b/spk/dnscrypt-proxy/Makefile
index 3de9b70a7ed..35e95694e2c 100644
--- a/spk/dnscrypt-proxy/Makefile
+++ b/spk/dnscrypt-proxy/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 2.0.44
SPK_REV = 5
SPK_ICON = src/dnscrypt-proxy.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/dnscrypt-proxy
SPK_CONFLICT = DNSServer
UNSUPPORTED_ARCHS = $(PPC_ARCHS)
diff --git a/spk/fengoffice/Makefile b/spk/fengoffice/Makefile
index ff342b3cb63..db6019a17bc 100644
--- a/spk/fengoffice/Makefile
+++ b/spk/fengoffice/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 3.11.2.8
SPK_REV = 4
SPK_ICON = src/fengoffice.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/fengoffice
# Pure PHP package, make sure ARCH is noarch
override ARCH=noarch
diff --git a/spk/ffmpeg5/Makefile b/spk/ffmpeg5/Makefile
index b4bf92f0e25..ad688456c13 100644
--- a/spk/ffmpeg5/Makefile
+++ b/spk/ffmpeg5/Makefile
@@ -4,7 +4,7 @@ SPK_REV = 6
SPK_ICON = src/ffmpeg.png
CHANGELOG = "1. Update to version 5.1.6"
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/ffmpeg5
MAINTAINER = th0ma7
DESCRIPTION = FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video. It includes libavcodec - the leading audio/video codec library. More information from SynoCommunity FFmpeg package available at https://github.com/SynoCommunity/spksrc/wiki/FAQ-FFmpeg
diff --git a/spk/ffmpeg6/Makefile b/spk/ffmpeg6/Makefile
index 23e7b391801..b953d1cf4ec 100644
--- a/spk/ffmpeg6/Makefile
+++ b/spk/ffmpeg6/Makefile
@@ -4,7 +4,7 @@ SPK_REV = 5
SPK_ICON = src/ffmpeg.png
CHANGELOG = "1. Update to version 6.0.1
2. Update Jellyfin upstream patches
3. Update Intel Media Driver 2024Q2 Release (DSM7 only)
4. Revert DSM7 to MFX intead of Intel Video Processing Library (Intel-VPL) as unsupported by Jellyfin
5. Enable OpenCL on Intel platforms (DSM7 only)
6. Update to latest version of x264 (fix for \#6176)
6. Now using new synocli-videodriver package"
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/ffmpeg6
MAINTAINER = th0ma7
DESCRIPTION = FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video. It includes libavcodec - the leading audio/video codec library. More information from SynoCommunity FFmpeg package available at https://github.com/SynoCommunity/spksrc/wiki/FAQ-FFmpeg
diff --git a/spk/ffmpeg7/Makefile b/spk/ffmpeg7/Makefile
index 8db2dfa9b69..7a13d1be9a7 100644
--- a/spk/ffmpeg7/Makefile
+++ b/spk/ffmpeg7/Makefile
@@ -4,7 +4,7 @@ SPK_REV = 1
SPK_ICON = src/ffmpeg.png
CHANGELOG = "1. Initial release of version 7 release"
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/ffmpeg7
# requires c11 support
UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) $(OLD_PPC_ARCHS)
diff --git a/spk/gateone/Makefile b/spk/gateone/Makefile
index a93c412aade..49ba5292d4d 100644
--- a/spk/gateone/Makefile
+++ b/spk/gateone/Makefile
@@ -4,7 +4,7 @@ SPK_REV = 9
SPK_ICON = src/gateone.png
DSM_UI_DIR = app
-DEPENDS = cross/busybox cross/dtach cross/$(SPK_NAME)
+DEPENDS = cross/busybox cross/dtach cross/gateone
WHEELS = src/requirements.txt
SPK_DEPENDS = "python>=2.7.11-15"
diff --git a/spk/gpac/Makefile b/spk/gpac/Makefile
index e81a8bc62a2..86f35f3bb68 100644
--- a/spk/gpac/Makefile
+++ b/spk/gpac/Makefile
@@ -4,7 +4,7 @@ SPK_REV = 1
SPK_ICON = src/gpac.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/gpac
MAINTAINER = wmanth
DISPLAY_NAME = GPAC
diff --git a/spk/haproxy/Makefile b/spk/haproxy/Makefile
index 69d31f8448b..da4d8105c48 100644
--- a/spk/haproxy/Makefile
+++ b/spk/haproxy/Makefile
@@ -5,7 +5,7 @@ SPK_ICON = src/haproxy.png
DSM_UI_DIR = app
DSM_APP_NAME = SYNOCOMMUNITY.HAProxy.AppInstance
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/haproxy
WHEELS = src/requirements.txt
SPK_DEPENDS = "python>2.7.18-25"
diff --git a/spk/he853/Makefile b/spk/he853/Makefile
index ca67c390653..d36dc121ae7 100755
--- a/spk/he853/Makefile
+++ b/spk/he853/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 1.0.3
SPK_REV = 2
SPK_ICON = src/HE853.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/he853
REQUIRED_MIN_DSM = 5.0
MAINTAINER = ymartin59
diff --git a/spk/icecast/Makefile b/spk/icecast/Makefile
index 80e6e1b5421..70965fadeb4 100644
--- a/spk/icecast/Makefile
+++ b/spk/icecast/Makefile
@@ -4,7 +4,7 @@ SPK_REV = 7
SPK_ICON = src/icecast.png
DSM_UI_DIR = app
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/icecast
MAINTAINER = SynoCommunity
DESCRIPTION = Icecast is a streaming media server which currently supports Ogg \(Vorbis and Theora\), Opus, WebM and MP3 audio streams. It can be used to create an Internet radio station or a privately running jukebox and many things in between. It is very versatile in that new formats can be added relatively easily and supports open standards for communication and interaction. This package includes Ezstream, a command line source client for Icecast media streaming servers.
diff --git a/spk/jappix/Makefile b/spk/jappix/Makefile
index a69916c0697..1738321b7c9 100644
--- a/spk/jappix/Makefile
+++ b/spk/jappix/Makefile
@@ -4,7 +4,7 @@ SPK_REV = 2
SPK_ICON = src/jappix.png
DSM_UI_DIR = app
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/jappix
MAINTAINER = SynoCommunity
DESCRIPTION = Jappix, a full-featured XMPP web-client \(Jappix Desktop, Jappix Mobile \& Jappix Mini\). Jappix is a fresh new open social platform which enables you to create your own cloud, wherever you want to. People must be able to get in touch with all their friends on a free decentralized network!
diff --git a/spk/java-11-openjdk/Makefile b/spk/java-11-openjdk/Makefile
index 581a343acc7..3ddd8449964 100644
--- a/spk/java-11-openjdk/Makefile
+++ b/spk/java-11-openjdk/Makefile
@@ -5,9 +5,9 @@ JAVA_RELEASE = 7
JAVA_VERSION = 11.0.12
SPK_VERS = $(JAVA_VERSION).$(JAVA_RELEASE)
SPK_REV = 1
-SPK_ICON = src/$(SPK_NAME).png
+SPK_ICON = src/java-11-openjdk.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/java-11-openjdk
MAINTAINER = SynoCommunity
DESCRIPTION = OpenJDK version $(JAVA_VERSION)+$(JAVA_RELEASE). OpenJDK 11 is the open-source reference implementation of version 11 of the Java SE Platform as specified by by JSR 384 in the Java Community Process.
diff --git a/spk/lirc/Makefile b/spk/lirc/Makefile
index 8d808b399b2..c1aa2a84ce8 100644
--- a/spk/lirc/Makefile
+++ b/spk/lirc/Makefile
@@ -13,14 +13,14 @@ UNSUPPORTED_ARCHS = $(PPC_ARCHS)
include ../../mk/spksrc.archs.mk
# Use older LIRC build for ARCHs with kernel < 2.6.36
-ifneq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(PPC_ARCHS)),)
+ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(PPC_ARCHS)),$(ARCH))
SPK_VERS = 0.8.7
+DEPENDS = cross/lirc-0.8.7
LIRC_SUPPORTED_DRIVERS = mceusb uirt uirt2
+else
+DEPENDS = cross/lirc-0.9.0
endif
-DEPENDS = cross/$(SPK_NAME)-$(SPK_VERS)
-OPTIONAL_DEPENDS = cross/lirc-0.8.7
-
MAINTAINER = bru7us
DESCRIPTION = LIRC daemon decodes infrared signals and provides them on a Unix domain socket
DISPLAY_NAME = LIRC
diff --git a/spk/lua/Makefile b/spk/lua/Makefile
index edcf186169a..6099e91c98b 100644
--- a/spk/lua/Makefile
+++ b/spk/lua/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 5.4.4
SPK_REV = 4
SPK_ICON = src/lua.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/lua
MAINTAINER = eelcohn
MAINTAINER_URL = https://www.lua.org/
diff --git a/spk/mantisbt/Makefile b/spk/mantisbt/Makefile
index 86eac62a69e..625c7d22c7c 100644
--- a/spk/mantisbt/Makefile
+++ b/spk/mantisbt/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 2.26.3
SPK_REV = 6
SPK_ICON = src/mantisbt.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/mantisbt
# Pure PHP package, make sure ARCH is noarch
override ARCH=noarch
diff --git a/spk/mediainfo/Makefile b/spk/mediainfo/Makefile
index 0a5174bafd1..3784180a5f8 100644
--- a/spk/mediainfo/Makefile
+++ b/spk/mediainfo/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 21.09
SPK_REV = 13
SPK_ICON = src/mediainfo.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/mediainfo
MAINTAINER = ymartin59
DESCRIPTION = "MediaInfo is a convenient unified display of the most relevant technical and tag data for video and audio files."
diff --git a/spk/monit/Makefile b/spk/monit/Makefile
index 84e21177629..ed45d72e162 100644
--- a/spk/monit/Makefile
+++ b/spk/monit/Makefile
@@ -4,7 +4,7 @@ SPK_REV = 10
SPK_ICON = src/monit.png
DSM_UI_DIR = app
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/monit
UNSUPPORTED_ARCHS = PPC_ARCHS
diff --git a/spk/monitoring-plugins/Makefile b/spk/monitoring-plugins/Makefile
index e5e423b6002..3d14a6c58d3 100644
--- a/spk/monitoring-plugins/Makefile
+++ b/spk/monitoring-plugins/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 2.3.1
SPK_REV = 2
SPK_ICON = src/monitoring-plugins.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/monitoring-plugins
SPK_DEPENDS = Perl
diff --git a/spk/mtproxy/Makefile b/spk/mtproxy/Makefile
index d4991954744..900d8a6c36e 100644
--- a/spk/mtproxy/Makefile
+++ b/spk/mtproxy/Makefile
@@ -6,7 +6,7 @@ SPK_ICON = src/${SPK_NAME}.jpg
REQUIRED_MIN_DSM = 5.2
BETA = 1
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/mtproxy
MAINTAINER = Anonym-tsk
# From TelegramMessenger/MTProxy
diff --git a/spk/node-exporter/Makefile b/spk/node-exporter/Makefile
index 0c741d07721..1cde18fe6ab 100644
--- a/spk/node-exporter/Makefile
+++ b/spk/node-exporter/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 1.8.2
SPK_REV = 5
SPK_ICON = src/node-exporter.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/node-exporter
UNSUPPORTED_ARCHS = $(PPC_ARCHS)
diff --git a/spk/pyload/Makefile b/spk/pyload/Makefile
index 6547c1f8a5e..672c3bb241c 100644
--- a/spk/pyload/Makefile
+++ b/spk/pyload/Makefile
@@ -4,7 +4,7 @@ SPK_REV = 4
SPK_ICON = src/pyload.png
DSM_UI_DIR = app
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/pyload
SPK_DEPENDS = "python>2.7.3-3"
MAINTAINER = SynoCommunity
diff --git a/spk/python311/Makefile b/spk/python311/Makefile
index 87eba19e7ee..36718b045a9 100644
--- a/spk/python311/Makefile
+++ b/spk/python311/Makefile
@@ -9,7 +9,7 @@ SPK_ICON = src/python3.png
# And compiler must support std=c++11 (OlD_PPC_ARCHS fail, but ARMv5_ARCHS have no issue).
UNSUPPORTED_ARCHS = $(OLD_PPC_ARCHS)
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/python311
DEPENDS += cross/pip
MAINTAINER = SynoCommunity
diff --git a/spk/roundcube/Makefile b/spk/roundcube/Makefile
index e51b741814b..187aeab67df 100644
--- a/spk/roundcube/Makefile
+++ b/spk/roundcube/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 1.6.9
SPK_REV = 5
SPK_ICON = src/roundcube.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/roundcube
# Pure PHP package, make sure ARCH is noarch
override ARCH=noarch
diff --git a/spk/sabnzbd/Makefile b/spk/sabnzbd/Makefile
index 8e8784801a4..00dd1cb35d4 100644
--- a/spk/sabnzbd/Makefile
+++ b/spk/sabnzbd/Makefile
@@ -4,7 +4,7 @@ SPK_REV = 71
SPK_ICON = src/sabnzbd.png
PYTHON_PACKAGE = python311
-DEPENDS = cross/busybox cross/par2cmdline-turbo cross/unrar cross/p7zip cross/$(SPK_NAME)
+DEPENDS = cross/busybox cross/par2cmdline-turbo cross/unrar cross/p7zip cross/sabnzbd
SPK_DEPENDS = "python311>=3.11.5-8"
WHEELS = src/requirements-crossenv.txt src/requirements-pure.txt
diff --git a/spk/shairport-sync/Makefile b/spk/shairport-sync/Makefile
index 8c1c8b56460..ce599f89f74 100644
--- a/spk/shairport-sync/Makefile
+++ b/spk/shairport-sync/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 2.3.11
SPK_REV = 2
SPK_ICON = src/shairport-sync.png
-DEPENDS = cross/busybox cross/$(SPK_NAME)
+DEPENDS = cross/busybox cross/shairport-sync
MAINTAINER = SynoCommunity
DESCRIPTION = Use Synology NAS as an AirPlay receiver. Requires USB soundcard or speakers.
diff --git a/spk/stockfish/Makefile b/spk/stockfish/Makefile
index 06b6027e0a6..c45fdd6a10f 100644
--- a/spk/stockfish/Makefile
+++ b/spk/stockfish/Makefile
@@ -4,7 +4,7 @@ SPK_REV = 3
SPK_ICON= src/stockfish.png
DSM_UI_DIR = app
-DEPENDS = cross/$(SPK_NAME) cross/stockfish-webgui
+DEPENDS = cross/stockfish cross/stockfish-webgui
MAINTAINER = mayweed
DESCRIPTION = Strong open source chess engine. Stockfish is one of the strongest chess engines in the world. It is also much stronger than the best human chess grandmasters.
diff --git a/spk/stunnel/Makefile b/spk/stunnel/Makefile
index c328d5f95c9..ad02688b830 100644
--- a/spk/stunnel/Makefile
+++ b/spk/stunnel/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 5.60
SPK_REV = 2
SPK_ICON = src/stunnel.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/stunnel
BETA = 1
diff --git a/spk/tt-rss/Makefile b/spk/tt-rss/Makefile
index be31d81ce2d..dacfa8cbba5 100644
--- a/spk/tt-rss/Makefile
+++ b/spk/tt-rss/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 20230828
SPK_REV = 18
SPK_ICON = src/tt-rss.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/tt-rss
# Pure PHP package, make sure ARCH is noarch
override ARCH=noarch
diff --git a/spk/tvheadend/Makefile b/spk/tvheadend/Makefile
index 5c8f35a0478..10bedec84a2 100644
--- a/spk/tvheadend/Makefile
+++ b/spk/tvheadend/Makefile
@@ -25,7 +25,7 @@ UNSUPPORTED_ARCHS += $(ARMv5_ARCHS)
WHEELS = src/requirements-pure.txt
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/tvheadend
DEPENDS += cross/dtv-scan-tables
DEPENDS += cross/zap2epg cross/docker-tvheadend
diff --git a/spk/umurmur/Makefile b/spk/umurmur/Makefile
index 5ca2cfb77fe..93f699a7309 100644
--- a/spk/umurmur/Makefile
+++ b/spk/umurmur/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 0.2.20
SPK_REV = 8
SPK_ICON = src/umurmur.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/umurmur
MAINTAINER = Diaoul
DESCRIPTION = uMurmur is a minimalistic VoIP server based on the open source software Mumble. It allows simultaneous communications between multiple users. Its low latency makes it especially suitable for communications during online gaming. The Mumble client is available at https://dl.mumble.info/stable/ \(Windows, Mac, Linux and iOS\).
diff --git a/spk/vim/Makefile b/spk/vim/Makefile
index a27fddeb49d..217496388d6 100644
--- a/spk/vim/Makefile
+++ b/spk/vim/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 9.0
SPK_REV = 6
SPK_ICON = src/vim.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/vim
PYTHON_PACKAGE = python311
MAINTAINER = SynoCommunity
diff --git a/spk/wallabag/Makefile b/spk/wallabag/Makefile
index 426ce48ccd8..ba944bbc477 100644
--- a/spk/wallabag/Makefile
+++ b/spk/wallabag/Makefile
@@ -3,7 +3,7 @@ SPK_VERS = 2.6.9
SPK_REV = 5
SPK_ICON = src/wallabag.png
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/wallabag
# Pure PHP package, make sure ARCH is noarch
override ARCH=noarch
diff --git a/spk/znc/Makefile b/spk/znc/Makefile
index f5f578316ef..92ba693dbf9 100644
--- a/spk/znc/Makefile
+++ b/spk/znc/Makefile
@@ -4,7 +4,7 @@ SPK_REV = 23
SPK_ICON = src/znc.png
DSM_UI_DIR = app
-DEPENDS = cross/$(SPK_NAME)
+DEPENDS = cross/znc
PYTHON_PACKAGE = python311
SPK_DEPENDS = "python311>=3.11.5-8"
diff --git a/spk/zsh-static/Makefile b/spk/zsh-static/Makefile
index f263fc8ed10..39aca77a8a0 100644
--- a/spk/zsh-static/Makefile
+++ b/spk/zsh-static/Makefile
@@ -4,6 +4,9 @@ SPK_REV = 10
export ZSH_STATIC_MODULES=true
+# need to define dependencies for dependency-list creation by script
+DEPENDS = cross/zsh
+
# Reuse targets from zsh.
include ../zsh/Makefile