diff --git a/cross/libhdhomerun/Makefile b/cross/libhdhomerun/Makefile
index fe2f65bce57..53657ec0f4e 100644
--- a/cross/libhdhomerun/Makefile
+++ b/cross/libhdhomerun/Makefile
@@ -1,5 +1,5 @@
PKG_NAME = libhdhomerun
-PKG_VERS = 20210224
+PKG_VERS = 20210624
PKG_EXT = tgz
PKG_DIST_NAME = $(PKG_NAME)_$(PKG_VERS).$(PKG_EXT)
PKG_DIST_SITE = https://download.silicondust.com/hdhomerun
diff --git a/cross/libhdhomerun/digests b/cross/libhdhomerun/digests
index cdf359a7e2f..f4cd3cfa35b 100644
--- a/cross/libhdhomerun/digests
+++ b/cross/libhdhomerun/digests
@@ -1,3 +1,3 @@
-libhdhomerun_20210224.tgz SHA1 053d1aed34d9ed22738de9064e030b4f1702178f
-libhdhomerun_20210224.tgz SHA256 b996389aa6f124a6d9dc1e75ec749e86d06102e2b3e7359d57163d4cc6e633f8
-libhdhomerun_20210224.tgz MD5 0918453d0517bcda26c088a7e0e8f3fb
+libhdhomerun_20210624.tgz SHA1 9db6089b956de4e58084b623937f5fc3231fff0b
+libhdhomerun_20210624.tgz SHA256 deaf463bbcc3eefa72f97199efb6213f7b0e2c8e91f1b3d2cbf52056a8715d15
+libhdhomerun_20210624.tgz MD5 233844b9238bd42cfdfbbd126a088fd2
diff --git a/cross/pip/Makefile b/cross/pip/Makefile
index 3d64ace82ae..a256f8b5c71 100644
--- a/cross/pip/Makefile
+++ b/cross/pip/Makefile
@@ -1,6 +1,6 @@
PKG_NAME = pip
# use the same version in native/python3/Makefile (python3_native_post_install)
-PKG_VERS = 21.2.4
+PKG_VERS = 21.3
PKG_EXT = tar.gz
PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT)
PKG_DIST_SITE = https://files.pythonhosted.org/packages/source/p/$(PKG_NAME)
diff --git a/cross/pip/digests b/cross/pip/digests
index dd85165be2b..a04b0e2785f 100644
--- a/cross/pip/digests
+++ b/cross/pip/digests
@@ -1,3 +1,3 @@
-pip-21.2.4.tar.gz SHA1 c6c9348c79a7f8448cd14b9e53baf141ea185dee
-pip-21.2.4.tar.gz SHA256 0eb8a1516c3d138ae8689c0c1a60fde7143310832f9dc77e11d8a4bc62de193b
-pip-21.2.4.tar.gz MD5 efbdb4201a5e6383fb4d12e26f78f355
+pip-21.3.tar.gz SHA1 e6c8b84c60a290818079ce7ebc71ccbf9cd7d294
+pip-21.3.tar.gz SHA256 741a61baab1dbce2d8ca415effa48a2b6a964564f81a9f4f1fce4c433346c034
+pip-21.3.tar.gz MD5 fc20feba27bd36f046c2fbd59bc8f9ea
diff --git a/cross/python3/Makefile b/cross/python3/Makefile
index 3e45d3cc958..ef9ff47c911 100644
--- a/cross/python3/Makefile
+++ b/cross/python3/Makefile
@@ -89,8 +89,8 @@ python3_post_install: $(WORK_DIR)/python-cc.mk
cp -R $(HOSTPYTHON_LIB_NATIVE) $(PYTHON_LIB_CROSS)/../
@$(RUN) $(PYTHON_NATIVE) -m crossenv $(STAGING_INSTALL_PREFIX)/bin/python$(PKG_VERS_MAJOR_MINOR) $(WORK_DIR)/crossenv/
. $(WORK_DIR)/crossenv/bin/activate && $(RUN) wget https://bootstrap.pypa.io/get-pip.py
- . $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-python get-pip.py "pip==21.2.4"
- . $(WORK_DIR)/crossenv/bin/activate && $(RUN) python get-pip.py "pip==21.2.4"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-python get-pip.py "pip==21.3"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) python get-pip.py "pip==21.3"
. $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "setuptools==58.2.0"
. $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "setuptools==58.2.0"
. $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "wheel==0.37.0"
diff --git a/cross/python38/Makefile b/cross/python38/Makefile
index daee4cb94b8..5a6f04eb1bd 100644
--- a/cross/python38/Makefile
+++ b/cross/python38/Makefile
@@ -114,8 +114,8 @@ python38_post_install: $(WORK_DIR)/python-cc.mk
cp -R $(HOSTPYTHON_LIB_NATIVE) $(PYTHON_LIB_CROSS)/../
@$(RUN) $(PYTHON_NATIVE) -m crossenv $(STAGING_INSTALL_PREFIX)/bin/python$(PKG_VERS_MAJOR_MINOR) $(WORK_DIR)/crossenv/
. $(WORK_DIR)/crossenv/bin/activate && $(RUN) wget https://bootstrap.pypa.io/get-pip.py
- . $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-python get-pip.py "pip==21.2.4"
- . $(WORK_DIR)/crossenv/bin/activate && $(RUN) python get-pip.py "pip==21.2.4"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-python get-pip.py "pip==21.3"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) python get-pip.py "pip==21.3"
. $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "setuptools==58.2.0"
. $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "setuptools==58.2.0"
. $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "wheel==0.37.0"
diff --git a/cross/tvheadend/Makefile b/cross/tvheadend/Makefile
index 2145dd61cfb..9c6551c8cb0 100644
--- a/cross/tvheadend/Makefile
+++ b/cross/tvheadend/Makefile
@@ -1,8 +1,8 @@
PKG_NAME = tvheadend
PKG_VERS = 4.3
PKG_EXT = tar.gz
-# git hash from June 12th 2021
-PKG_GIT_HASH = eb59284b8527e3c51eadfeca94ec1e9174cdbdb0
+# git hash from October 20th 2021
+PKG_GIT_HASH = c6bb43d8554643a772aa40c5e56904717b55a95f
PKG_DIST_NAME = $(PKG_GIT_HASH).$(PKG_EXT)
PKG_DIST_SITE = https://github.com/tvheadend/tvheadend/archive
PKG_DIST_FILE = $(PKG_NAME)-git$(PKG_GIT_HASH).$(PKG_EXT)
diff --git a/cross/tvheadend/digests b/cross/tvheadend/digests
index 50257a2c4bf..5a2255283d6 100644
--- a/cross/tvheadend/digests
+++ b/cross/tvheadend/digests
@@ -1,3 +1,3 @@
-tvheadend-giteb59284b8527e3c51eadfeca94ec1e9174cdbdb0.tar.gz SHA1 0b27567b389131c0e0ee2c82507c9417da5d9908
-tvheadend-giteb59284b8527e3c51eadfeca94ec1e9174cdbdb0.tar.gz SHA256 df3d50cd46e7d6b9d951bc36950eb1a49ac82fd5c2b08c3abc37cf8fba15651c
-tvheadend-giteb59284b8527e3c51eadfeca94ec1e9174cdbdb0.tar.gz MD5 de451b133121556868ba28b899902308
+tvheadend-gitc6bb43d8554643a772aa40c5e56904717b55a95f.tar.gz SHA1 2ab69e7cb5624659e3d2a42c6d9fcf5e9e69e253
+tvheadend-gitc6bb43d8554643a772aa40c5e56904717b55a95f.tar.gz SHA256 9074d6a352f4475e5e0ad313d6e78187730f2139a778cb4c67586e74f0b9ba40
+tvheadend-gitc6bb43d8554643a772aa40c5e56904717b55a95f.tar.gz MD5 9630d640835e8792d45a8aca6ba80aae
diff --git a/mk/spksrc.common.mk b/mk/spksrc.common.mk
index d58055e56f8..36e13cfd189 100644
--- a/mk/spksrc.common.mk
+++ b/mk/spksrc.common.mk
@@ -17,7 +17,7 @@ RUN = cd $(WORK_DIR)/$(PKG_DIR) && env $(ENV)
PIP ?= pip
# Why ask for the same thing twice? Always cache downloads
PIP_CACHE_OPT ?= --cache-dir $(PIP_DIR)
-PIP_WHEEL_ARGS = wheel --no-binary :all: $(PIP_CACHE_OPT) --no-deps --requirement $(WORK_DIR)/wheelhouse/requirements.txt --wheel-dir $(WORK_DIR)/wheelhouse
+PIP_WHEEL_ARGS = wheel --no-binary :all: $(PIP_CACHE_OPT) --no-deps --wheel-dir $(WHEELHOUSE)
PIP_WHEEL = $(PIP) $(PIP_WHEEL_ARGS)
# Available languages
diff --git a/mk/spksrc.directories.mk b/mk/spksrc.directories.mk
index b8d3423e076..bb0126a51e9 100644
--- a/mk/spksrc.directories.mk
+++ b/mk/spksrc.directories.mk
@@ -51,6 +51,15 @@ ifeq ($(strip $(STAGING_INSTALL_PREFIX)),)
STAGING_INSTALL_PREFIX = $(INSTALL_DIR)$(INSTALL_PREFIX)
endif
+# python wheelhouse directories
+ifndef WHEELHOUSE
+WHEELHOUSE = $(WORK_DIR)/wheelhouse
+endif
+
+ifndef STAGING_INSTALL_WHEELHOUSE
+STAGING_INSTALL_WHEELHOUSE = $(STAGING_INSTALL_PREFIX)/share/wheelhouse
+endif
+
define create_target_dir
@mkdir -p `dirname $@`
endef
diff --git a/mk/spksrc.python-wheel.mk b/mk/spksrc.python-wheel.mk
index 15ef75edf5b..45f0363e300 100644
--- a/mk/spksrc.python-wheel.mk
+++ b/mk/spksrc.python-wheel.mk
@@ -27,18 +27,18 @@ PYTHONPATH = $(PYTHON_LIB_NATIVE):$(INSTALL_DIR)$(INSTALL_PREFIX)/$(PYTHON_LIB_D
build_python_wheel:
ifeq ($(strip $(CROSSENV)),)
# Python 2 way
- @$(RUN) PYTHONPATH=$(PYTHONPATH) $(HOSTPYTHON) -c "import setuptools;__file__='setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" $(BUILD_ARGS) bdist_wheel -d $(WORK_DIR)/wheelhouse
+ @$(RUN) PYTHONPATH=$(PYTHONPATH) $(HOSTPYTHON) -c "import setuptools;__file__='setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" $(BUILD_ARGS) bdist_wheel -d $(WHEELHOUSE)
else
# Python 3 case: using crossenv helper
- @. $(CROSSENV) && $(RUN) PYTHONPATH=$(PYTHONPATH) python -c "import setuptools;__file__='setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" $(BUILD_ARGS) bdist_wheel -d $(WORK_DIR)/wheelhouse
+ @. $(CROSSENV) && $(RUN) PYTHONPATH=$(PYTHONPATH) python -c "import setuptools;__file__='setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" $(BUILD_ARGS) bdist_wheel -d $(WHEELHOUSE)
endif
install_python_wheel: $(WHEEL_TARGET)
- @if [ -d "$(WORK_DIR)/wheelhouse" ] ; then \
- mkdir -p $(STAGING_INSTALL_PREFIX)/share/wheelhouse ; \
- cd $(WORK_DIR)/wheelhouse && \
+ @if [ -d "$(WHEELHOUSE)" ] ; then \
+ mkdir -p $(STAGING_INSTALL_WHEELHOUSE) ; \
+ cd $(WHEELHOUSE) && \
for w in *.whl; do \
- cp -f $$w $(STAGING_INSTALL_PREFIX)/share/wheelhouse/`echo $$w | cut -d"-" -f -3`-none-any.whl; \
+ cp -f $$w $(STAGING_INSTALL_WHEELHOUSE)/`echo $$w | cut -d"-" -f -3`-none-any.whl; \
done ; \
fi
diff --git a/mk/spksrc.spk.mk b/mk/spksrc.spk.mk
index 8f1eeef0229..cd811d03597 100644
--- a/mk/spksrc.spk.mk
+++ b/mk/spksrc.spk.mk
@@ -398,6 +398,7 @@ spkclean:
work-*/conf \
work-*/scripts \
work-*/staging \
+ work-*/wheelhouse \
work-*/package.tgz \
work-*/INFO \
work-*/PLIST \
diff --git a/mk/spksrc.wheel.mk b/mk/spksrc.wheel.mk
index 65573f21b01..f3ff4e5182b 100644
--- a/mk/spksrc.wheel.mk
+++ b/mk/spksrc.wheel.mk
@@ -14,6 +14,9 @@
WHEEL_COOKIE = $(WORK_DIR)/.$(COOKIE_PREFIX)wheel_done
+WHEELS_PURE_PYTHON = requirements.txt
+WHEELS_CROSS_COMPILE = requirements-cross.txt
+
ifeq ($(strip $(PRE_WHEEL_TARGET)),)
PRE_WHEEL_TARGET = pre_wheel_target
else
@@ -43,53 +46,56 @@ pre_wheel_target: wheel_msg_target
if [ ! -z "$(PIP_CACHE_OPT)" ] ; then \
mkdir -p $(PIP_DIR) ; \
fi; \
- mkdir -p $(WORK_DIR)/wheelhouse ; \
- if [ -f "$(WHEELS)" ] ; then \
- $(MSG) "Using existing requirements file" ; \
- cp -f $(WHEELS) $(WORK_DIR)/wheelhouse/requirements.txt ; \
- else \
- $(MSG) "Creating requirements file" ; \
- rm -f $(WORK_DIR)/wheelhouse/requirements.txt ; \
- for wheel in $(WHEELS) ; \
- do \
- echo $$wheel >> $(WORK_DIR)/wheelhouse/requirements.txt ; \
- done \
- fi ; \
+ rm -fr $(WHEELHOUSE) ; \
+ mkdir -p $(WHEELHOUSE) ; \
+ for wheel in $(WHEELS) ; \
+ do \
+ if [ -f $$wheel ] ; then \
+ $(MSG) "Using existing $$wheel file" ; \
+ $(MSG) cp -f $$wheel $(WHEELHOUSE)/$$(basename $$wheel) ; \
+ cp -f $$wheel $(WHEELHOUSE)/$$(basename $$wheel) ; \
+ sed -i -e '$$a\\' $(WHEELHOUSE)/$$(basename $$wheel) ; \
+ else \
+ $(MSG) "Adding to $(WHEELS_PURE_PYTHON) file" ; \
+ echo $$wheel >> $(WHEELHOUSE)/$(WHEELS_PURE_PYTHON) ; \
+ fi ; \
+ done \
fi
build_wheel_target: $(PRE_WHEEL_TARGET)
@if [ ! -z "$(WHEELS)" ] ; then \
$(foreach e,$(shell cat $(WORK_DIR)/python-cc.mk),$(eval $(e))) \
- if [ ! -z "$(CROSS_COMPILE_WHEELS)" ] ; then \
+ if [ -f "$(WHEELHOUSE)/$(WHEELS_PURE_PYTHON)" ]; then \
+ $(MSG) "Force pure-python" ; \
+ export LD= LDSHARED= CPP= NM= CC= AS= RANLIB= CXX= AR= STRIP= OBJDUMP= READELF= CFLAGS= CPPFLAGS= CXXFLAGS= LDFLAGS= && \
+ $(RUN) $(PIP_WHEEL) --requirement $(WHEELHOUSE)/$(WHEELS_PURE_PYTHON) ; \
+ fi ; \
+ if [ -f "$(WHEELHOUSE)/$(WHEELS_CROSS_COMPILE)" ]; then \
$(MSG) "Force cross-compile" ; \
if [ -z "$(CROSSENV)" ]; then \
- $(RUN) _PYTHON_HOST_PLATFORM="$(TC_TARGET)" CFLAGS="$(CFLAGS) -I$(STAGING_INSTALL_PREFIX)/$(PYTHON_INC_DIR) $(WHEELS_CFLAGS)" LDFLAGS="$(LDFLAGS) $(WHEELS_LDFLAGS)" $(PIP_WHEEL) --use-deprecated=legacy-resolver ; \
+ $(RUN) _PYTHON_HOST_PLATFORM="$(TC_TARGET)" CFLAGS="$(CFLAGS) -I$(STAGING_INSTALL_PREFIX)/$(PYTHON_INC_DIR) $(WHEELS_CFLAGS)" LDFLAGS="$(LDFLAGS) $(WHEELS_LDFLAGS)" $(PIP_WHEEL) --requirement $(WHEELHOUSE)/$(WHEELS_CROSS_COMPILE) ; \
else \
- . $(CROSSENV) && $(RUN) _PYTHON_HOST_PLATFORM="$(TC_TARGET)" CFLAGS="$(CFLAGS) -I$(STAGING_INSTALL_PREFIX)/$(PYTHON_INC_DIR) $(WHEELS_CFLAGS)" LDFLAGS="$(LDFLAGS) $(WHEELS_LDFLAGS)" pip $(PIP_WHEEL_ARGS) --use-deprecated=legacy-resolver --no-build-isolation ; \
+ . $(CROSSENV) && $(RUN) _PYTHON_HOST_PLATFORM="$(TC_TARGET)" CFLAGS="$(CFLAGS) -I$(STAGING_INSTALL_PREFIX)/$(PYTHON_INC_DIR) $(WHEELS_CFLAGS)" LDFLAGS="$(LDFLAGS) $(WHEELS_LDFLAGS)" pip $(PIP_WHEEL_ARGS) --no-build-isolation --requirement $(WHEELHOUSE)/$(WHEELS_CROSS_COMPILE) ; \
fi ; \
- else \
- $(MSG) "Force pure-python" ; \
- export LD= LDSHARED= CPP= NM= CC= AS= RANLIB= CXX= AR= STRIP= OBJDUMP= READELF= CFLAGS= CPPFLAGS= CXXFLAGS= LDFLAGS= && \
- $(RUN) $(PIP_WHEEL) ; \
fi ; \
fi
post_wheel_target: $(WHEEL_TARGET)
- @if [ -d "$(WORK_DIR)/wheelhouse" ] ; then \
- mkdir -p $(STAGING_INSTALL_PREFIX)/share/wheelhouse ; \
- cd $(WORK_DIR)/wheelhouse ; \
- cp requirements.txt $(STAGING_INSTALL_PREFIX)/share/wheelhouse/ ; \
+ @if [ -d "$(WHEELHOUSE)" ] ; then \
+ mkdir -p $(STAGING_INSTALL_WHEELHOUSE) ; \
+ cd $(WHEELHOUSE) ; \
+ cat requirements*.txt > $(STAGING_INSTALL_WHEELHOUSE)/$(WHEELS_PURE_PYTHON) ; \
if [ "$(EXCLUDE_PURE_PYTHON_WHEELS)" = "yes" ] ; then \
echo "Pure python wheels are excluded from the package wheelhouse." ; \
for w in *.whl; do \
if echo $${w} | grep -viq "-none-any\.whl" ; then \
- cp -f $$w $(STAGING_INSTALL_PREFIX)/share/wheelhouse/`echo $$w | cut -d"-" -f -3`-none-any.whl; \
+ cp -f $$w $(STAGING_INSTALL_WHEELHOUSE)/`echo $$w | cut -d"-" -f -3`-none-any.whl; \
fi ; \
done ; \
else \
for w in *.whl; do \
- cp -f $$w $(STAGING_INSTALL_PREFIX)/share/wheelhouse/`echo $$w | cut -d"-" -f -3`-none-any.whl; \
+ cp -f $$w $(STAGING_INSTALL_WHEELHOUSE)/`echo $$w | cut -d"-" -f -3`-none-any.whl; \
done ; \
fi ; \
fi
diff --git a/native/python3/Makefile b/native/python3/Makefile
index 9ea757399c3..e295a702a13 100644
--- a/native/python3/Makefile
+++ b/native/python3/Makefile
@@ -26,8 +26,8 @@ PIP_NATIVE = $(WORK_DIR)/../../../native/$(PKG_NAME)/work-native/install/usr/loc
python3_native_post_install: $(WORK_DIR)/python-native.mk
@$(MSG) Installing pip, setuptools, cffi and cross env
@$(RUN) wget https://bootstrap.pypa.io/get-pip.py
- @$(RUN) $(PYTHON) get-pip.py "pip==21.2.4"
- @$(PIP) install "setuptools==58.2.0" "cffi==1.14.6" "crossenv>=1.1.4"
+ @$(RUN) $(PYTHON) get-pip.py "pip==21.3"
+ @$(PIP) install "setuptools==58.2.0" "cffi==1.14.6" "crossenv==1.0"
$(WORK_DIR)/python-native.mk:
@echo PIP=$(PIP_NATIVE) >> $@
diff --git a/native/python38/Makefile b/native/python38/Makefile
index 9f8aeb30a72..d8938afd223 100644
--- a/native/python38/Makefile
+++ b/native/python38/Makefile
@@ -26,7 +26,7 @@ PIP_NATIVE = $(WORK_DIR)/../../../native/$(PKG_NAME)/work-native/install/usr/loc
python38_native_post_install: $(WORK_DIR)/python-native.mk
@$(MSG) Installing pip, setuptools, cffi and cross env
@$(RUN) wget https://bootstrap.pypa.io/get-pip.py
- @$(RUN) $(PYTHON) get-pip.py "pip==21.2.4"
+ @$(RUN) $(PYTHON) get-pip.py "pip==21.3"
@$(PIP) install "setuptools==58.2.0" "cffi==1.14.6" "crossenv==1.0"
$(WORK_DIR)/python-native.mk:
diff --git a/spk/borgbackup/Makefile b/spk/borgbackup/Makefile
index faf65aeadde..d9b8e69620e 100644
--- a/spk/borgbackup/Makefile
+++ b/spk/borgbackup/Makefile
@@ -16,7 +16,7 @@ SPK_DEPENDS = "python38"
# pip freeze > requirements.txt
# deactivate
# adjust the first line in requirements.txt to "#borgbackup==1.1.17"
-WHEELS = src/requirements.txt
+WHEELS = src/requirements-cross.txt src/requirements.txt
MAINTAINER = SynoCommunity
DESCRIPTION = Deduplicating backup program with compression and authenticated encryption.
diff --git a/spk/borgbackup/src/requirements-cross.txt b/spk/borgbackup/src/requirements-cross.txt
new file mode 100644
index 00000000000..8cc21ddf2f6
--- /dev/null
+++ b/spk/borgbackup/src/requirements-cross.txt
@@ -0,0 +1,2 @@
+pyrsistent==0.18.0
+ruamel.yaml.clib==0.2.6
diff --git a/spk/borgbackup/src/requirements.txt b/spk/borgbackup/src/requirements.txt
index 3d5e28ee74d..fa7f95e8381 100644
--- a/spk/borgbackup/src/requirements.txt
+++ b/spk/borgbackup/src/requirements.txt
@@ -8,9 +8,7 @@ idna==3.2
jsonschema==3.2.0
packaging==21.0
pyparsing==2.4.7
-pyrsistent==0.18.0
requests==2.26.0
ruamel.yaml==0.17.16
-ruamel.yaml.clib==0.2.6
six==1.16.0
urllib3==1.26.6
diff --git a/spk/duplicity/Makefile b/spk/duplicity/Makefile
index fe94f66bfd8..e8b76c362ac 100644
--- a/spk/duplicity/Makefile
+++ b/spk/duplicity/Makefile
@@ -6,7 +6,7 @@ SPK_ICON = src/duplicity.png
BUILD_DEPENDS = cross/python38
DEPENDS = cross/cffi cross/lxml cross/duplicity cross/duply
-WHEELS = src/requirements.txt
+WHEELS = src/requirements-cross.txt src/requirements.txt
SPK_DEPENDS = "python38>=3.8.8:gnupg>=2.1.6"
diff --git a/spk/duplicity/src/requirements-cross.txt b/spk/duplicity/src/requirements-cross.txt
new file mode 100644
index 00000000000..b0c574bf3d8
--- /dev/null
+++ b/spk/duplicity/src/requirements-cross.txt
@@ -0,0 +1,53 @@
+##### basic requirements #####
+chardet==4.0.0
+future==0.18.2
+### idna==2.10 # idna==2.9 is included in python38
+python-gettext==4.0
+
+
+##### backend libraries #####
+# some libs no longer support py27
+# some libs never supported py36+
+#b2sdk ; python_version >= '3.6'
+#boto
+#boto3
+#boxsdk[jwt] ; python_version >= '3.6'
+#dropbox
+### gdata ; python_version == '2.7'
+#google_auth_oauthlib
+#jottalib
+### mediafire ### Development Status 3 - Alpha: outdated (Nov 2016), not supported by Python >3.4
+#pydrive ; python_version >= '3.6'
+#pyrax ; python_version >= '3.6'
+#python-swiftclient
+#requests_oauthlib
+
+
+### backend libraries except gdata mediafire
+args==0.1.0
+b2sdk==1.7.0
+### cffi==1.14.5 # cffi==1.14.1 is included as cross compiled wheel
+clint==0.5.1
+### cryptography==3.4.7 # cryptography==2.9.2 is included in python38
+### importlib-metadata==4.0.1 # importlib-metadata==1.5.0 is included in python38
+ip-associations-python-novaclient-ext==0.2
+iso8601==0.1.14
+#jeepney==0.6.0 ### cross compile wheel fails to find flit_core
+jottalib==0.5.1
+### lxml==4.6.3 # lxml==4.6.3 is included as cross compiled wheel
+### msgpack-python==0.5.6 # msgpack-python==0.5.6 is included in python38
+netifaces==0.10.9
+oauth2client==4.1.3
+os-networksv2-python-novaclient-ext==0.26
+os-virtual-interfacesv2-python-novaclient-ext==0.20
+positional==1.2.1
+protobuf==3.15.8
+### pyasn1==0.4.8 # pyasn1==0.4.8 is included in python38
+pyasn1-modules==0.2.8
+### PyYAML==5.4.1 # PyYAML==5.3 is included as module in python38
+rackspace-auth-openstack==1.3
+rackspace-novaclient==2.1
+rax-default-network-flags-python-novaclient-ext==0.4.0
+rax-scheduled-images-python-novaclient-ext==0.3.1
+simplejson==3.17.2
+wrapt==1.12.1
diff --git a/spk/duplicity/src/requirements.txt b/spk/duplicity/src/requirements.txt
index ac6f413b6c5..e00e553b670 100644
--- a/spk/duplicity/src/requirements.txt
+++ b/spk/duplicity/src/requirements.txt
@@ -29,56 +29,26 @@
##### Included for reference #####
#duplicity==0.8.19
-
##### basic requirements #####
certifi==2020.12.5
-chardet==4.0.0
fasteners==0.16
-future==0.18.2
-### idna==2.10 # idna==2.9 is included in python38
-python-gettext==4.0
requests==2.25.1
#setuptools-scm==6.0.1
setuptools-scm==5.0.2
six==1.15.0
urllib3==1.26.4
-
-##### backend libraries #####
-# some libs no longer support py27
-# some libs never supported py36+
-#azure-storage-blob ; python_version >= '3.6'
-#b2sdk ; python_version >= '3.6'
-#boto
-#boto3
-#boxsdk[jwt] ; python_version >= '3.6'
-#dropbox
-### gdata ; python_version == '2.7'
-#google_auth_oauthlib
-#jottalib
-### mediafire ### Development Status 3 - Alpha: outdated (Nov 2016), not supported by Python >3.4
-#pydrive ; python_version >= '3.6'
-#pyrax ; python_version >= '3.6'
-#python-swiftclient
-#requests_oauthlib
-
-
### backend libraries except gdata mediafire
-args==0.1.0
arrow==0.17.0
attrs==20.3.0
azure-core==1.13.0
azure-storage-blob==12.8.1
-b2sdk==1.7.0
Babel==2.9.1
boto==2.49.0
boto3==1.17.62
botocore==1.20.62
boxsdk==2.12.0
cachetools==4.2.2
-### cffi==1.14.5 # cffi==1.14.1 is included as cross compiled wheel
-clint==0.5.1
-### cryptography==3.4.7 # cryptography==2.9.2 is included in python38
debtcollector==1.11.0
dropbox==11.7.0
funcsigs==1.0.2
@@ -89,29 +59,17 @@ google-auth-httplib2==0.1.0
google-auth-oauthlib==0.4.4
googleapis-common-protos==1.53.0
httplib2==0.19.1
-# humanize==3.5.0 # metadata has 0.0.0
-humanize
-### importlib-metadata==4.0.1 # importlib-metadata==1.5.0 is included in python38
-ip-associations-python-novaclient-ext==0.2
-iso8601==0.1.14
+humanize==3.5.0
isodate==0.6.0
-#jeepney==0.6.0 ### cross compile wheel fails to find flit_core
jmespath==0.10.0
-jottalib==0.5.1
keyring==23.0.1
keystoneauth1==2.18.0
logfury==0.1.2
-### lxml==4.6.3 # lxml==4.6.3 is included as cross compiled wheel
#monotonic==1.6
-### msgpack-python==0.5.6 # msgpack-python==0.5.6 is included in python38
msrest==0.6.21
netaddr==0.8.0
-netifaces==0.10.9
-oauth2client==4.1.3
oauthlib==3.1.0
os-diskconfig-python-novaclient-ext==0.1.3
-os-networksv2-python-novaclient-ext==0.26
-os-virtual-interfacesv2-python-novaclient-ext==0.20
oslo.config==4.12.0
oslo.i18n==3.12.0
oslo.serialization==2.16.1
@@ -119,11 +77,7 @@ oslo.utils==3.22.3
packaging==20.9
pbr==1.10.0
ply==3.11
-positional==1.2.1
prettytable==0.7.2
-protobuf==3.15.8
-### pyasn1==0.4.8 # pyasn1==0.4.8 is included in python38
-pyasn1-modules==0.2.8
### pycparser==2.20 # pycparser==2.19 is included in python38
PyDrive==1.3.1
PyJWT==2.1.0
@@ -134,21 +88,14 @@ python-keystoneclient==3.10.0
python-novaclient==2.27.0
python-swiftclient==3.11.1
pytz==2021.1
-### PyYAML==5.4.1 # PyYAML==5.3 is included as module in python38
-rackspace-auth-openstack==1.3
-rackspace-novaclient==2.1
-rax-default-network-flags-python-novaclient-ext==0.4.0
-rax-scheduled-images-python-novaclient-ext==0.3.1
requests-oauthlib==1.3.0
requests-toolbelt==0.9.1
rfc3986==1.4.0
rsa==4.7.2
s3transfer==0.4.2
SecretStorage==3.3.1
-simplejson==3.17.2
stevedore==1.20.1
stone==3.2.1
tqdm==4.60.0
uritemplate==3.0.1
-wrapt==1.12.1
### zipp==3.4.1 # zipp==3.1.0 is included in python38
diff --git a/spk/flexget/Makefile b/spk/flexget/Makefile
index eb20137958f..04f824975f1 100644
--- a/spk/flexget/Makefile
+++ b/spk/flexget/Makefile
@@ -3,10 +3,10 @@ SPK_VERS = 3.1.129
SPK_REV = 10
SPK_ICON = src/${SPK_NAME}.png
-BUILD_DEPENDS = cross/python3 cross/setuptools cross/pip cross/wheel
+BUILD_DEPENDS = cross/python38 cross/setuptools cross/pip cross/wheel
DEPENDS = cross/poetry
-WHEELS = src/requirements.txt
-SPK_DEPENDS = "python3>=3.7.7"
+WHEELS = src/requirements-cross.txt src/requirements.txt
+SPK_DEPENDS = "python38"
MAINTAINER = manowark
DESCRIPTION = FlexGet is a multipurpose automation tool for content like torrents, nzbs, podcasts, comics, series, movies, etc. It can use different kinds of sources like RSS-feeds, html pages, csv files, search engines and there are even plugins for sites that do not provide any kind of useful feeds.
diff --git a/spk/flexget/src/requirements-cross.txt b/spk/flexget/src/requirements-cross.txt
new file mode 100644
index 00000000000..202f0584bb7
--- /dev/null
+++ b/spk/flexget/src/requirements-cross.txt
@@ -0,0 +1,15 @@
+Brotli==1.0.9
+click==7.1.2
+colorclass==2.2.0
+greenlet==1.0.0
+MarkupSafe==2.0.0
+progressbar==2.5
+psutil==5.8.0
+pynzb==0.1.0
+pyrsistent==0.17.3
+PyRSS2Gen==1.1
+PyYAML==5.4.1
+sgmllib3k==1.0.0
+SQLAlchemy==1.4.15
+terminaltables==3.1.0
+zxcvbn-python==4.4.24
diff --git a/spk/flexget/src/requirements.txt b/spk/flexget/src/requirements.txt
index 578370cc598..d58805bc4ac 100644
--- a/spk/flexget/src/requirements.txt
+++ b/spk/flexget/src/requirements.txt
@@ -8,14 +8,11 @@ APScheduler==3.7.0
attrs==20.3.0
babelfish==0.5.5
beautifulsoup4==4.10.0
-Brotli==1.0.9
certifi==2020.12.5
chardet==4.0.0
cheroot==8.5.2
CherryPy==18.6.0
-click==7.1.2
colorama==0.4.4
-colorclass==2.2.0
feedparser==6.0.2
Flask==1.1.2
Flask-Compress==1.9.0
@@ -24,7 +21,6 @@ Flask-Login==0.5.0
Flask-RESTful==0.3.8
flask-restx==0.4.0
FlexGet==3.1.129
-greenlet==1.0.0
guessit==3.2.0
html5lib==1.1
idna==2.10
@@ -37,30 +33,20 @@ jaraco.text==3.5.0
Jinja2==2.11.3
jsonschema==3.2.0
loguru==0.5.3
-MarkupSafe==2.0.0
more-itertools==8.7.0
#plumbum==1.7.0
plumbum==1.6.9
portend==2.7.1
-progressbar==2.5
-psutil==5.8.0
-pynzb==0.1.0
pyparsing==2.4.7
-pyrsistent==0.17.3
-PyRSS2Gen==1.1
python-dateutil==2.8.1
pytz==2021.1
-PyYAML==5.4.1
rebulk==3.0.1
requests==2.25.1
#rpyc==5.0.1
rpyc==4.1.2
-sgmllib3k==1.0.0
six==1.16.0
soupsieve==2.2.1
-SQLAlchemy==1.4.15
tempora==4.0.2
-terminaltables==3.1.0
transmission-rpc==3.2.5
typing-extensions==3.10.0.0
tzlocal==2.1
@@ -69,4 +55,3 @@ webencodings==0.5.1
Werkzeug==1.0.1
zc.lockfile==2.0
zipp==3.4.1
-zxcvbn-python==4.4.24
diff --git a/spk/homeassistant/Makefile b/spk/homeassistant/Makefile
index c890fffb5a3..d9267fef6fb 100644
--- a/spk/homeassistant/Makefile
+++ b/spk/homeassistant/Makefile
@@ -20,7 +20,7 @@ DEPENDS += cross/dtlssocket
# for denonavr
DEPENDS += cross/asyncstdlib
-WHEELS = src/requirements.txt
+WHEELS = src/requirements-cross.txt cbor2==5.4.1
MAINTAINER = hgy59
DESCRIPTION = "Home Assistant is an open-source home automation platform running on Python 3. Track and control all devices at home and automate control."
diff --git a/spk/homeassistant/src/requirements.txt b/spk/homeassistant/src/requirements-cross.txt
similarity index 99%
rename from spk/homeassistant/src/requirements.txt
rename to spk/homeassistant/src/requirements-cross.txt
index 464877a31cd..3e0914d3579 100644
--- a/spk/homeassistant/src/requirements.txt
+++ b/spk/homeassistant/src/requirements-cross.txt
@@ -67,7 +67,6 @@ pyads==3.2.2
pyitachip2ir==0.0.7
netifaces==0.11.0
-cbor2==5.4.1
pycares==4.0.0
regex==2021.8.3
websockets==9.1
diff --git a/spk/python3/Makefile b/spk/python3/Makefile
index 8df7eaed14c..0f1d0192c0b 100644
--- a/spk/python3/Makefile
+++ b/spk/python3/Makefile
@@ -1,7 +1,7 @@
SPK_NAME = python3
SPK_VERS = 3.7.12
SPK_SHORT_VERS = $(word 1,$(subst ., ,$(SPK_VERS))).$(word 2,$(subst ., ,$(SPK_VERS)))
-SPK_REV = 19
+SPK_REV = 20
SPK_ICON = src/python3.png
DEPENDS = cross/busybox cross/$(SPK_NAME)
@@ -12,7 +12,7 @@ DEPENDS += cross/lxml cross/pycrypto cross/pycurl cross/pyyaml
DEPENDS += cross/msgpack-python cross/ruamel.yaml cross/immutables
DEPENDS += cross/cryptography
-WHEELS = src/requirements.txt
+WHEELS = src/requirements-cross.txt src/requirements.txt
MAINTAINER = Allan Clark
DESCRIPTION = Python Programming Language.
diff --git a/spk/python3/src/requirements-cross.txt b/spk/python3/src/requirements-cross.txt
new file mode 100644
index 00000000000..d1193ee8348
--- /dev/null
+++ b/spk/python3/src/requirements-cross.txt
@@ -0,0 +1,20 @@
+## Modules cross-compiled via spksrc.python-wheel.mk
+# Included for reference
+#lxml==4.6.3
+#pycrypto==2.6.1
+#Pillow==8.2.0
+#pycurl==7.43.0.6
+#pyyaml==5.4.1
+#immutables==0.16
+
+## Cross-compiled via spksrc.wheel.mk
+markupsafe==2.0.1
+psutil==5.8.0
+sqlalchemy==1.4.26
+zope.interface==5.4.0
+
+# cryptography dependencies
+pyasn1==0.4.8
+
+# pillow dependencies
+olefile==0.46
diff --git a/spk/python3/src/requirements.txt b/spk/python3/src/requirements.txt
index 448101637bd..b2620325dd3 100644
--- a/spk/python3/src/requirements.txt
+++ b/spk/python3/src/requirements.txt
@@ -1,34 +1,15 @@
-## Modules cross-compiled via spksrc.python-wheel.mk
-# Included for reference
-#lxml==4.2.5
-#pycrypto==2.6.1
-#Pillow==8.2.0
-#pycurl==7.43.0.6
-#pyyaml==5.4.1
-#immutables==0.11
-
-## Cross-compiled via spksrc.wheel.mk
-markupsafe==2.0.1
-psutil==5.8.0
-sqlalchemy==1.4.25
-zope.interface==5.4.0
-
## Pure-python via spksrc.wheel.mk
-pyopenssl==21.0.0
-six==1.16.0
-virtualenv==20.8.1
-# virtualenv dependencies
appdirs==1.4.4
-filelock==3.3.0
+distlib==0.3.3
+filelock==3.0.12
importlib-resources==5.2.2
importlib-metadata==4.8.1
+platformdirs==2.4.0
+pyopenssl==21.0.0
+six==1.16.0
+virtualenv==20.4.6
zipp==3.6.0
-distlib==0.3.3
# cryptography dependencies
-idna==3.2
+idna==3.3
ipaddress==1.0.23
-pyasn1==0.4.8
-
-# pillow dependencies
-olefile==0.46
diff --git a/spk/python38/Makefile b/spk/python38/Makefile
index 76068f1dc50..b3048f9f1fe 100644
--- a/spk/python38/Makefile
+++ b/spk/python38/Makefile
@@ -1,18 +1,19 @@
SPK_NAME = python38
SPK_VERS = 3.8.12
SPK_VERS_MAJOR_MINOR = $(word 1,$(subst ., ,$(SPK_VERS))).$(word 2,$(subst ., ,$(SPK_VERS)))
-SPK_REV = 5
+SPK_REV = 6
SPK_ICON = src/python3.png
DEPENDS = cross/$(SPK_NAME)
DEPENDS += cross/setuptools cross/pip cross/wheel
-DEPENDS += cross/cffi cross/bcrypt cross/sqlite
# Cross-compiled wheels
-DEPENDS += cross/lxml cross/pycrypto cross/pycurl cross/pyyaml
-DEPENDS += cross/msgpack-python cross/ruamel.yaml cross/immutables
-DEPENDS += cross/cryptography
+DEPENDS += cross/bcrypt cross/cffi
+DEPENDS += cross/cryptography cross/greenlet cross/immutables
+DEPENDS += cross/lxml cross/msgpack-python
+DEPENDS += cross/pycrypto cross/pycurl
+DEPENDS += cross/pyyaml cross/ruamel.yaml cross/sqlite
-WHEELS = src/requirements.txt
+WHEELS = src/requirements-cross.txt src/requirements.txt
MAINTAINER = SynoCommunity
DESCRIPTION = Python Programming Language.
diff --git a/spk/python38/src/requirements-cross.txt b/spk/python38/src/requirements-cross.txt
new file mode 100644
index 00000000000..d1193ee8348
--- /dev/null
+++ b/spk/python38/src/requirements-cross.txt
@@ -0,0 +1,20 @@
+## Modules cross-compiled via spksrc.python-wheel.mk
+# Included for reference
+#lxml==4.6.3
+#pycrypto==2.6.1
+#Pillow==8.2.0
+#pycurl==7.43.0.6
+#pyyaml==5.4.1
+#immutables==0.16
+
+## Cross-compiled via spksrc.wheel.mk
+markupsafe==2.0.1
+psutil==5.8.0
+sqlalchemy==1.4.26
+zope.interface==5.4.0
+
+# cryptography dependencies
+pyasn1==0.4.8
+
+# pillow dependencies
+olefile==0.46
diff --git a/spk/python38/src/requirements.txt b/spk/python38/src/requirements.txt
index 448101637bd..397e49a5ba8 100644
--- a/spk/python38/src/requirements.txt
+++ b/spk/python38/src/requirements.txt
@@ -1,34 +1,15 @@
-## Modules cross-compiled via spksrc.python-wheel.mk
-# Included for reference
-#lxml==4.2.5
-#pycrypto==2.6.1
-#Pillow==8.2.0
-#pycurl==7.43.0.6
-#pyyaml==5.4.1
-#immutables==0.11
-
-## Cross-compiled via spksrc.wheel.mk
-markupsafe==2.0.1
-psutil==5.8.0
-sqlalchemy==1.4.25
-zope.interface==5.4.0
-
## Pure-python via spksrc.wheel.mk
-pyopenssl==21.0.0
-six==1.16.0
-virtualenv==20.8.1
-# virtualenv dependencies
appdirs==1.4.4
-filelock==3.3.0
+distlib==0.3.3
+filelock==3.3.1
importlib-resources==5.2.2
importlib-metadata==4.8.1
+platformdirs==2.4.0
+pyopenssl==21.0.0
+six==1.16.0
+virtualenv==20.4.6
zipp==3.6.0
-distlib==0.3.3
# cryptography dependencies
-idna==3.2
+idna==3.3
ipaddress==1.0.23
-pyasn1==0.4.8
-
-# pillow dependencies
-olefile==0.46
diff --git a/spk/rdiff-backup/Makefile b/spk/rdiff-backup/Makefile
index 8e3fdb16aee..1e507d63c29 100644
--- a/spk/rdiff-backup/Makefile
+++ b/spk/rdiff-backup/Makefile
@@ -6,7 +6,7 @@ SPK_ICON = src/rdiff-backup.png
BUILD_DEPENDS = cross/python3
DEPENDS = cross/librsync cross/attr cross/acl
-WHEELS = src/requirements.txt
+WHEELS = src/requirements-cross.txt
SPK_DEPENDS = "python3>=3.7"
diff --git a/spk/rdiff-backup/src/requirements.txt b/spk/rdiff-backup/src/requirements-cross.txt
similarity index 100%
rename from spk/rdiff-backup/src/requirements.txt
rename to spk/rdiff-backup/src/requirements-cross.txt
diff --git a/spk/sabnzbd/Makefile b/spk/sabnzbd/Makefile
index ea9a1bdc36e..d04bfadbe66 100644
--- a/spk/sabnzbd/Makefile
+++ b/spk/sabnzbd/Makefile
@@ -9,7 +9,7 @@ SPK_DEPENDS = "python38>=3.8.1-1"
# To generate full requirements.txt, extend SABnzbd's own
# requirements.txt with the depedencies of cherrypy and cheroot
-WHEELS = src/requirements.txt
+WHEELS = src/requirements-cross.txt src/requirements.txt
MAINTAINER = Safihre
DESCRIPTION = SABnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction.
diff --git a/spk/sabnzbd/src/requirements-cross.txt b/spk/sabnzbd/src/requirements-cross.txt
new file mode 100644
index 00000000000..143e6a5800a
--- /dev/null
+++ b/spk/sabnzbd/src/requirements-cross.txt
@@ -0,0 +1,4 @@
+cheetah3==3.2.6
+configobj==5.0.6
+sgmllib3k==1.0.0
+sabyenc3==4.0.2
diff --git a/spk/sabnzbd/src/requirements.txt b/spk/sabnzbd/src/requirements.txt
index 33f87ed0824..2ce5305856f 100644
--- a/spk/sabnzbd/src/requirements.txt
+++ b/spk/sabnzbd/src/requirements.txt
@@ -1,9 +1,6 @@
chardet==4.0.0
-cheetah3==3.2.6
cheroot==8.5.2
cherrypy==18.6.0
-configobj==5.0.6
-sgmllib3k==1.0.0
feedparser==6.0.6
jaraco.classes==3.2.1
jaraco.collections==3.3.0
@@ -12,7 +9,6 @@ jaraco.text==3.5.0
more-itertools==8.8.0
portend==2.7.1
pytz==2021.1
-sabyenc3==4.0.2
six==1.16.0
tempora==4.0.2
-zc.lockfile==2.0
\ No newline at end of file
+zc.lockfile==2.0
diff --git a/spk/salt-minion/Makefile b/spk/salt-minion/Makefile
index a49cf43ba57..5f0dff2d8e7 100644
--- a/spk/salt-minion/Makefile
+++ b/spk/salt-minion/Makefile
@@ -14,7 +14,7 @@ UNSUPPORTED_ARCHS = $(PPC_ARCHS) $(ARMv5_ARCHS)
# source salt-env/bin/activate
# pip install salt
# pip freeze > requirements.txt
-WHEELS = src/requirements.txt
+WHEELS = src/requirements-cross.txt src/requirements.txt
MAINTAINER = SynoCommunity
DESCRIPTION = Salt, a new approach to infrastructure management, is easy enough to get running in minutes, scalable enough to manage tens of thousands of servers, and fast enough to communicate with those servers in seconds.
diff --git a/spk/salt-minion/src/requirements-cross.txt b/spk/salt-minion/src/requirements-cross.txt
new file mode 100644
index 00000000000..8d60568221b
--- /dev/null
+++ b/spk/salt-minion/src/requirements-cross.txt
@@ -0,0 +1,7 @@
+chardet==3.0.4
+MarkupSafe==1.1.1
+msgpack==1.0.0
+pycryptodomex==3.9.8
+PyYAML==5.3.1
+pyzmq==19.0.2
+salt==3001.1
diff --git a/spk/salt-minion/src/requirements.txt b/spk/salt-minion/src/requirements.txt
index 3201dd10c9d..fbddc6eca44 100644
--- a/spk/salt-minion/src/requirements.txt
+++ b/spk/salt-minion/src/requirements.txt
@@ -1,13 +1,6 @@
certifi==2020.6.20
-chardet==3.0.4
distro==1.5.0
idna==2.10
Jinja2==2.11.2
-MarkupSafe==1.1.1
-msgpack==1.0.0
-pycryptodomex==3.9.8
-PyYAML==5.3.1
-pyzmq==19.0.2
requests==2.24.0
-salt==3001.1
urllib3==1.25.10
diff --git a/spk/tvheadend/Makefile b/spk/tvheadend/Makefile
index a8cc3ffe047..810d2cef2e6 100644
--- a/spk/tvheadend/Makefile
+++ b/spk/tvheadend/Makefile
@@ -1,10 +1,10 @@
SPK_NAME = tvheadend
SPK_SHORT_VERS = 4.3
-SPK_GIT_HASH = eb59284
-SPK_GIT_DATE = 20210612
+SPK_GIT_HASH = c6bb43d
+SPK_GIT_DATE = 20211016
SPK_VERS = $(SPK_SHORT_VERS).$(SPK_GIT_DATE)
TVH_VERS = $(SPK_SHORT_VERS)~$(SPK_GIT_HASH)
-SPK_REV = 29
+SPK_REV = 30
SPK_ICON = src/tvheadend.png
DSM_UI_DIR = app
@@ -13,16 +13,17 @@ DSM_UI_DIR = app
# 000-fix-version.patch from cross/tvheadend
export TVH_VERS
-DEPENDS = cross/$(SPK_NAME) cross/zap2epg cross/dtv-scan-tables
-WHEELS = src/requirements.txt
SPK_DEPENDS = "python38"
+WHEELS = src/requirements.txt
+
+DEPENDS = cross/$(SPK_NAME) cross/zap2epg cross/dtv-scan-tables
MAINTAINER = th0ma7
DESCRIPTION = Tvheadend is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT IP and HDHomeRun as input sources. Tvheadend offers HTTP, HTSP and SAT IP streaming.
RELOAD_UI = yes
DISPLAY_NAME = Tvheadend
STARTABLE = yes
-CHANGELOG = "1. Update to latest git version eb59284 as of June 12th 2021
2. Update openssl to 1.1
3. Updated to use FFMPEG 4.3.2
4. Updated libhdhomerun to version 20210224
5. Update dtv-scan-tables"
+CHANGELOG = "1. Update to latest git version 1ee9c5b as of October 16th 2021
2. Update openssl to 1.1l
3. Updated libhdhomerun to version 20210624
4. Fix 403 Forbidden after login"
HOMEPAGE = https://tvheadend.org/
LICENSE = GPL v3
@@ -30,7 +31,6 @@ LICENSE = GPL v3
# https://tvheadend.org/issues/5060
UNSUPPORTED_ARCHS = $(OLD_PCC_ARCHS)
-WIZARDS_DIR = src/wizard/
CONF_DIR = src/conf/
# 'auto' reserved value grabs SPK_NAME
@@ -44,15 +44,13 @@ SERVICE_PORT_TITLE = Tvheadend(HTTP)
# Admin link
ADMIN_PORT = ${SERVICE_PORT}
-POST_STRIP_TARGET = tvheadend_extra_install
-
# Reuse ffmpeg libraries
# Requires to invoke: make [package|publish] ARCH= TCVERSION=
export FFMPEG_DIR = $(shell pwd)/../ffmpeg/work-$(ARCH)-$(TCVERSION)/install/var/packages/ffmpeg/target
ifneq ($(wildcard $(FFMPEG_DIR)),)
PRE_DEPEND_TARGET = tvheadend_pre_depend
-SPK_DEPENDS = "ffmpeg>4.1"
+SPK_DEPENDS := "$(SPK_DEPENDS):ffmpeg>4.3"
endif
include ../../mk/spksrc.spk.mk
@@ -75,10 +73,3 @@ tvheadend_pre_depend:
$(foreach lib,$(FFMPEG_LIBS),ln -sfT $(FFMPEG_DIR)/lib/pkgconfig/$(lib) $(STAGING_INSTALL_PREFIX)/lib/pkgconfig/$(lib) ;)
$(foreach lib,$(MEDIA_LIBS),ln -sfT $(FFMPEG_DIR)/lib/pkgconfig/$(lib) $(STAGING_INSTALL_PREFIX)/lib/pkgconfig/$(lib) ;)
$(foreach lib,$(VAAPI_LIBS),ln -sfT $(FFMPEG_DIR)/lib/pkgconfig/$(lib) $(STAGING_INSTALL_PREFIX)/lib/pkgconfig/$(lib) ;)
-
-tvheadend_extra_install:
- install -p -m 700 -d $(STAGING_DIR)/var/accesscontrol
- install -p -m 700 -d $(STAGING_DIR)/var/passwd
- # The following filenames stem from an arbitrary (valid) combination created by TVH
- install -m 640 src/accesscontrol.json $(STAGING_DIR)/var/accesscontrol/d80ccc09630261ffdcae1497a690acc8
- install -m 640 src/passwd.json $(STAGING_DIR)/var/passwd/a927e30a755504f9784f23a4efac5109
diff --git a/spk/tvheadend/src/accesscontrol.json b/spk/tvheadend/src/accesscontrol.json
deleted file mode 100644
index 2eccc6b4ffd..00000000000
--- a/spk/tvheadend/src/accesscontrol.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "index": 1,
- "enabled": true,
- "username": "admin",
- "prefix": "0.0.0.0/0",
- "change": [
- "change_rights",
- "change_chrange",
- "change_chtags",
- "change_dvr_configs",
- "change_profiles",
- "change_conn_limit",
- "change_lang",
- "change_lang_ui",
- "change_theme",
- "change_uilevel"
- ],
- "uilevel": -1,
- "uilevel_nochange": -1,
- "streaming": [
- "basic",
- "advanced",
- "htsp"
- ],
- "profile": [
- ],
- "dvr": [
- "basic",
- "htsp",
- "all",
- "all_rw",
- "failed"
- ],
- "htsp_anonymize": false,
- "dvr_config": [
- ],
- "webui": true,
- "admin": true,
- "conn_limit_type": 0,
- "conn_limit": 0,
- "channel_min": 0,
- "channel_max": 0,
- "channel_tag_exclude": false,
- "channel_tag": [
- ],
- "comment": "Administrator",
- "wizard": true
-}
diff --git a/spk/tvheadend/src/conf/PKG_CONX b/spk/tvheadend/src/conf/PKG_CONX
deleted file mode 100644
index 5a9155ddd7b..00000000000
--- a/spk/tvheadend/src/conf/PKG_CONX
+++ /dev/null
@@ -1 +0,0 @@
-[tvheadend-testing]
diff --git a/spk/tvheadend/src/passwd.json b/spk/tvheadend/src/passwd.json
deleted file mode 100644
index 160fc629967..00000000000
--- a/spk/tvheadend/src/passwd.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "enabled": true,
- "username": "admin",
- "password2": "@password@",
- "wizard": true
-}
diff --git a/spk/tvheadend/src/service-setup.sh b/spk/tvheadend/src/service-setup.sh
index 86397eebf94..98908b9b838 100644
--- a/spk/tvheadend/src/service-setup.sh
+++ b/spk/tvheadend/src/service-setup.sh
@@ -16,7 +16,7 @@ HTSP=9982
# Replace generic service startup, run service in background
GRPN=$(id -gn ${EFF_USER})
UPGRADE_CFG_DIR="${SYNOPKG_PKGVAR}/dvr/config"
-SERVICE_COMMAND="${SYNOPKG_PKGDEST}/bin/tvheadend -f -u ${EFF_USER} -g ${GRPN} --http_port ${HTTP} --htsp_port ${HTSP} -c ${SYNOPKG_PKGVAR} -p ${PID_FILE}"
+SERVICE_COMMAND="${SYNOPKG_PKGDEST}/bin/tvheadend -f -C -u ${EFF_USER} -g ${GRPN} --http_port ${HTTP} --htsp_port ${HTSP} -c ${SYNOPKG_PKGVAR} -p ${PID_FILE} -l ${LOG_FILE}"
SVC_BACKGROUND=yes
# Group configuration to manage permissions of recording folders
@@ -24,12 +24,6 @@ GROUP=sc-media
service_postinst ()
{
- # Encrypt password
- wizard_password=$(echo -n "TVHeadend-Hide-${wizard_password:=admin}" | openssl enc -a)
-
- # Edit the password configuration according to the wizard
- sed -i -e "s/@password@/${wizard_password}/g" ${SYNOPKG_PKGVAR}/passwd/a927e30a755504f9784f23a4efac5109
-
# EPG Grabber (zap2epg) - Create a Python virtualenv
${VIRTUALENV} --system-site-packages ${PYTHONENV}
diff --git a/spk/tvheadend/src/wizard/install_uifile b/spk/tvheadend/src/wizard/install_uifile
deleted file mode 100644
index bbdeaccd639..00000000000
--- a/spk/tvheadend/src/wizard/install_uifile
+++ /dev/null
@@ -1,16 +0,0 @@
-[{
- "step_title": "Set password for admin user",
- "items": [{
- "type": "password",
- "desc": "Administrator's password. Defaults to admin",
- "subitems": [{
- "key": "wizard_password",
- "desc": "Password"
- }]
- }]
-}, {
- "step_title": "Attention! DSM Permissions",
- "items": [{
- "desc": "Permissions are managed with the group 'sc-media' in DSM.
The group 'users' is no longer used as of DSM 6.
Package user (= svc-tvheadend on DSM5 and sc-tvheadend on DSM6+) will not appear on most UI settings.
Including the following:
- Application privilege's permission viewer
- FTP's chroot user selector
- File Stations's
- Change owner
- Shared Links Manager -> Enable secure sharing
The only exceptions are:
- Control Panel > Shared Folder > Edit > Permission > System internal user
- ACL editor.
Please read Permission Management for details."
- }]
-}]
diff --git a/spk/tvheadend/src/wizard/install_uifile_fre b/spk/tvheadend/src/wizard/install_uifile_fre
deleted file mode 100644
index cc2822deb5f..00000000000
--- a/spk/tvheadend/src/wizard/install_uifile_fre
+++ /dev/null
@@ -1,16 +0,0 @@
-[{
- "step_title": "Configuration du mot de passe administrateur",
- "items": [{
- "type": "password",
- "desc": "Mot de passe administrateur. Par défaut, admin",
- "subitems": [{
- "key": "wizard_password",
- "desc": "Mot de passe"
- }]
- }]
-}, {
- "step_title": "Attention! Permissions DSM",
- "items": [{
- "desc": "Les permissions sont gérées par le groupe 'sc-media' dans DSM.
Le groupe 'users' n'est plus utilisé depuis DSM 6.
L'utilisateur spécifique à l'application n'apparaît plus dans la plupart des interfaces de configuration.
En particulier:
- Visionneuse de permission des Privilèges d'Applications
- Choix de l'utisateur du dossier root FTP
- Les actions de File Stations
- Changement de propriétaire
- Gestionnaire de liens partagés -> Activer le partage sécurisé
Les seules exceptions sont:
- Panneau de configuration > Dossier partagé > Modifier > Permissions > Utilisateur du système interne
- Éditeur de permissions.
Merci de lire Permission Management pour plus de détails."
- }]
-}]
diff --git a/spk/tvheadend/src/wizard/upgrade_uifile b/spk/tvheadend/src/wizard/upgrade_uifile
deleted file mode 100644
index 46bbf6bfee3..00000000000
--- a/spk/tvheadend/src/wizard/upgrade_uifile
+++ /dev/null
@@ -1,9 +0,0 @@
-[{
- "step_title": "Attention! DSM Permissions",
- "items": [{
- "desc": "Permissions are managed with the group 'sc-media' in DSM.
The group 'users' is no longer used as of DSM 6.
Package user (= svc-tvheadend on DSM5 and sc-tvheadend on DSM6+) will not appear on most UI settings. The only exceptions are:
- Control Panel > Shared Folder > Edit > Permission > System internal user
- ACL editor.
Please read Permission Management for details."
- },
- {
- "desc": "NOTE: The package upgrade will try to set the correct permissions on the recording folder(s) specified in your current installation.
If you get permission errors within Tvheadend, manually set Read/Write permissions for the 'sc-media' group on the reported folders using the DSM File Station, shared folder or group management tools."
- }]
-}]
diff --git a/spk/tvheadend/src/wizard/upgrade_uifile_fre b/spk/tvheadend/src/wizard/upgrade_uifile_fre
deleted file mode 100644
index e11aea8c2ca..00000000000
--- a/spk/tvheadend/src/wizard/upgrade_uifile_fre
+++ /dev/null
@@ -1,9 +0,0 @@
-[{
- "step_title": "Attention! Permissions DSM",
- "items": [{
- "desc": "Les permissions de toutes les applications de téléchargement sont gérées par le groupe 'sc-media' dans DSM.
Le groupe 'users' n'est plus utilisé depuis DSM 6.
L'utilisateur spécifique à l'application n'apparaît plus dans la plupart des interfaces de configuration à l'exception de
- Panneau de configuration > Dossier partagé > Modifier > Permissions > Utilisateur du système interne
- Éditeur de permissions.
Merci de lire Permission Management pour plus de détails."
- },
- {
- "desc": "NOTE: La mise à jour de l'application va tenter de corriger les permissions des répertoires. En cas d'erreur de permission dans Tvheadend, donner les droits de Lecture/Ecriture au groupe 'sc-media' sur les répertoires mentionnés depuis File Station ou les outils de gestion des groupes ou dossier partagé."
- }]
-}]