diff --git a/cross/cython/Makefile b/cross/cython/Makefile
index 3330a0b7de5..382276200bf 100644
--- a/cross/cython/Makefile
+++ b/cross/cython/Makefile
@@ -1,5 +1,5 @@
PKG_NAME = cython
-PKG_VERS = 0.29.21
+PKG_VERS = 0.29.24
PKG_EXT = tar.gz
PKG_DIST_NAME = $(PKG_VERS).$(PKG_EXT)
PKG_DIST_SITE = https://github.com/$(PKG_NAME)/$(PKG_NAME)/archive
diff --git a/cross/cython/digests b/cross/cython/digests
index 90f3b2e76f5..479727f8f35 100644
--- a/cross/cython/digests
+++ b/cross/cython/digests
@@ -1,3 +1,3 @@
-cython-0.29.21.tar.gz SHA1 718dcfee83132421e2df4eb6fa0ef7f3917bf7b9
-cython-0.29.21.tar.gz SHA256 e2e38e1f0572ca54d6085df3dec8b607d20e81515fb80215aed19c81e8fe2079
-cython-0.29.21.tar.gz MD5 e14ffbc4019f9bbb37d977dac46f7d0d
+cython-0.29.24.tar.gz SHA1 36a2a5fe9730758cebf3de28c0ff7ae33595700f
+cython-0.29.24.tar.gz SHA256 a5efb97612f0f97164e87c54cc295b2e2d06c539487670079963adeab872de80
+cython-0.29.24.tar.gz MD5 6a7bd0c2d7a9f1630d82e957197ea6e8
diff --git a/cross/dtlssocket/PLIST b/cross/dtlssocket/PLIST
index 9e299ad71f7..8b137891791 100644
--- a/cross/dtlssocket/PLIST
+++ b/cross/dtlssocket/PLIST
@@ -1 +1 @@
-rsc:bin/wheel
+
diff --git a/cross/homeassistant.pillow/Makefile b/cross/homeassistant.pillow/Makefile
deleted file mode 100644
index 340392f45f6..00000000000
--- a/cross/homeassistant.pillow/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-PKG_NAME = Pillow
-# pillow version for homeassistant package
-PKG_VERS = 8.2.0
-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)
-PKG_DIR = $(PKG_NAME)-$(PKG_VERS)
-
-DEPENDS = cross/freetype cross/libjpeg cross/zlib
-
-HOMEPAGE = https://python-pillow.org
-COMMENT = The friendly PIL fork. PIL is the Python Imaging Library.
-LICENSE = HPND
-
-ENV += STAGING_INSTALL_PREFIX=$(STAGING_INSTALL_PREFIX)
-
-include ../../mk/spksrc.python-wheel.mk
diff --git a/cross/homeassistant.pillow/PLIST b/cross/homeassistant.pillow/PLIST
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/cross/homeassistant.pillow/digests b/cross/homeassistant.pillow/digests
deleted file mode 100644
index 352dbfc9a2e..00000000000
--- a/cross/homeassistant.pillow/digests
+++ /dev/null
@@ -1,3 +0,0 @@
-Pillow-8.2.0.tar.gz SHA1 a9b32caf6ff1d5160ad41265c7ad3b090114eefc
-Pillow-8.2.0.tar.gz SHA256 a787ab10d7bb5494e5f76536ac460741788f1fbce851068d73a87ca7c35fc3e1
-Pillow-8.2.0.tar.gz MD5 21c03274a9f59b9c00419852a8faebe7
diff --git a/cross/homeassistant.pillow/patches/001-fix-paths.patch b/cross/homeassistant.pillow/patches/001-fix-paths.patch
deleted file mode 100644
index a7c408bc167..00000000000
--- a/cross/homeassistant.pillow/patches/001-fix-paths.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-# avoid the use of system include and lib directories
-# take the STAGING_INSTALL_PREFIX variable from environment as defined by spk Makefile
---- setup.py.orig 2021-04-01 17:58:27.000000000 +0000
-+++ setup.py 2021-05-13 11:53:05.171525534 +0000
-@@ -28,15 +28,16 @@
-
- NAME = "Pillow"
- PILLOW_VERSION = get_version()
--FREETYPE_ROOT = None
-+lib_include = os.path.join(os.environ['STAGING_INSTALL_PREFIX'], "lib"), os.path.join(os.environ['STAGING_INSTALL_PREFIX'], "include")
-+FREETYPE_ROOT = lib_include
- HARFBUZZ_ROOT = None
- FRIBIDI_ROOT = None
- IMAGEQUANT_ROOT = None
- JPEG2K_ROOT = None
--JPEG_ROOT = None
-+JPEG_ROOT = lib_include
- LCMS_ROOT = None
- TIFF_ROOT = None
--ZLIB_ROOT = None
-+ZLIB_ROOT = lib_include
- FUZZING_BUILD = "LIB_FUZZING_ENGINE" in os.environ
-
- if sys.platform == "win32" and sys.version_info >= (3, 10):
-@@ -574,13 +575,8 @@
-
- # standard locations
- if not self.disable_platform_guessing:
-- _add_directory(library_dirs, "/usr/local/lib")
-- _add_directory(include_dirs, "/usr/local/include")
--
-- _add_directory(library_dirs, "/usr/lib")
-- _add_directory(include_dirs, "/usr/include")
-- # alpine, at least
-- _add_directory(library_dirs, "/lib")
-+ _add_directory(library_dirs, os.environ['STAGING_INSTALL_PREFIX'] + "/lib")
-+ _add_directory(include_dirs, os.environ['STAGING_INSTALL_PREFIX'] + "/include")
-
- if sys.platform == "win32":
- # on Windows, look for the OpenJPEG libraries in the location that
diff --git a/cross/numpy/Makefile b/cross/numpy/Makefile
index 7587fe46e56..669efb6458a 100644
--- a/cross/numpy/Makefile
+++ b/cross/numpy/Makefile
@@ -1,5 +1,5 @@
PKG_NAME = numpy
-PKG_VERS = 1.21.1
+PKG_VERS = 1.21.4
PKG_EXT = zip
PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT)
PKG_DIST_SITE = https://files.pythonhosted.org/packages/source/n/$(PKG_NAME)
diff --git a/cross/numpy/digests b/cross/numpy/digests
index 39c26214953..a71cce3ed9c 100644
--- a/cross/numpy/digests
+++ b/cross/numpy/digests
@@ -1,3 +1,3 @@
-numpy-1.21.1.zip SHA1 09b07eb84f565ab67d1d0d1c45ec47f74dbe2a1c
-numpy-1.21.1.zip SHA256 dff4af63638afcc57a3dfb9e4b26d434a7a602d225b42d746ea7fe2edf1342fd
-numpy-1.21.1.zip MD5 1d016e05851a4ba85307f3246eb569aa
+numpy-1.21.4.zip SHA1 91a1faeb617601453ebf6e2855e5ce6bf94d3588
+numpy-1.21.4.zip SHA256 e6c76a87633aa3fa16614b61ccedfae45b91df2767cf097aa9c933932a7ed1e0
+numpy-1.21.4.zip MD5 b3c4477a027d5b6fba5e1065064fd076
diff --git a/cross/pillow/Makefile b/cross/pillow/Makefile
index 8ccbdb4abd4..63e178f2e1e 100644
--- a/cross/pillow/Makefile
+++ b/cross/pillow/Makefile
@@ -1,5 +1,5 @@
PKG_NAME = Pillow
-PKG_VERS = 8.4.0
+PKG_VERS = 8.2.0
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/pillow/digests b/cross/pillow/digests
index fa8e9c72885..352dbfc9a2e 100644
--- a/cross/pillow/digests
+++ b/cross/pillow/digests
@@ -1,3 +1,3 @@
-Pillow-8.4.0.tar.gz SHA1 ca8d057aec64ccd0804044bc71c17921afbe2e4e
-Pillow-8.4.0.tar.gz SHA256 b8e2f83c56e141920c39464b852de3719dfbfb6e3c99a2d8da0edf4fb33176ed
-Pillow-8.4.0.tar.gz MD5 7a1eb5a250c7ccbd549a89e16404f09f
+Pillow-8.2.0.tar.gz SHA1 a9b32caf6ff1d5160ad41265c7ad3b090114eefc
+Pillow-8.2.0.tar.gz SHA256 a787ab10d7bb5494e5f76536ac460741788f1fbce851068d73a87ca7c35fc3e1
+Pillow-8.2.0.tar.gz MD5 21c03274a9f59b9c00419852a8faebe7
diff --git a/cross/pip/Makefile b/cross/pip/Makefile
index a256f8b5c71..da29a576948 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.3
+PKG_VERS = 21.3.1
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 a04b0e2785f..e56f342323d 100644
--- a/cross/pip/digests
+++ b/cross/pip/digests
@@ -1,3 +1,3 @@
-pip-21.3.tar.gz SHA1 e6c8b84c60a290818079ce7ebc71ccbf9cd7d294
-pip-21.3.tar.gz SHA256 741a61baab1dbce2d8ca415effa48a2b6a964564f81a9f4f1fce4c433346c034
-pip-21.3.tar.gz MD5 fc20feba27bd36f046c2fbd59bc8f9ea
+pip-21.3.1.tar.gz SHA1 a243525070cf70f22a185447ebd3e1435dabb218
+pip-21.3.1.tar.gz SHA256 fd11ba3d0fdb4c07fbc5ecbba0b1b719809420f25038f8ee3cd913d3faa3033a
+pip-21.3.1.tar.gz MD5 0d3f27f4b7fecb33fd573e4f46cc6788
diff --git a/cross/python3/Makefile b/cross/python3/Makefile
index ef9ff47c911..a2c95ebec45 100644
--- a/cross/python3/Makefile
+++ b/cross/python3/Makefile
@@ -83,18 +83,26 @@ python3_custom_install:
@install -m 644 src/mime.types $(STAGING_INSTALL_PREFIX)/etc/
$(RUN) _PYTHON_HOST_PLATFORM=$(TC_TARGET) $(MAKE) install prefix=$(STAGING_INSTALL_PREFIX)
+# Create the crossenv in preparation for
+# cross-compiling all the necessary wheels
.PHONY: python3_post_install
python3_post_install: $(WORK_DIR)/python-cc.mk
mkdir -p $(PYTHON_LIB_CROSS)
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.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-python get-pip.py "pip==21.3.1"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) python get-pip.py "pip==21.3.1"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "setuptools==58.3.0"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "setuptools==58.3.0"
. $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "wheel==0.37.0"
. $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "wheel==0.37.0"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "cffi==1.15.0"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "cffi==1.15.0"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "cryptography==3.3.2"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "cryptography==3.3.2"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "poetry==1.1.11"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "poetry==1.1.11"
ifneq ($(PYTHON_LIB_NATIVE),$(PYTHON_LIB_CROSS))
cp $(PYTHON_LIB_CROSS)/_sysconfigdata_*.py $(PYTHON_LIB_NATIVE)/_sysconfigdata.py
endif
diff --git a/cross/python310/Makefile b/cross/python310/Makefile
index edb59d2e033..7d1322180d7 100644
--- a/cross/python310/Makefile
+++ b/cross/python310/Makefile
@@ -125,6 +125,8 @@ python310_install:
@install -m 644 src/mime.types $(STAGING_INSTALL_PREFIX)/etc/
$(RUN) _PYTHON_HOST_PLATFORM=$(TC_TARGET) $(MAKE) install prefix=$(STAGING_INSTALL_PREFIX)
+# Create the crossenv in preparation for
+# cross-compiling all the necessary wheels
.PHONY: python310_post_install
python310_post_install: $(WORK_DIR)/python-cc.mk
mkdir -p $(PYTHON_LIB_CROSS)
@@ -139,11 +141,15 @@ python310_post_install: $(WORK_DIR)/python-cc.mk
. $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "wheel==0.37.0"
. $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "cffi==1.15.0"
. $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "cffi==1.15.0"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "cryptography==3.3.2"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "cryptography==3.3.2"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "poetry==1.1.11"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "poetry==1.1.11"
ifneq ($(PYTHON_LIB_NATIVE),$(PYTHON_LIB_CROSS))
cp $(PYTHON_LIB_CROSS)/_sysconfigdata_*.py $(PYTHON_LIB_NATIVE)/_sysconfigdata.py
endif
-$(WORK_DIR)/python-cc.mk:
+$(WORK_DIR)/python-cc.mk:
@echo HOSTPYTHON=$(HOSTPYTHON) > $@
@echo CROSSENV=$(WORK_DIR)/crossenv/bin/activate >> $@
@echo HOSTPYTHON_LIB_NATIVE=$(HOSTPYTHON_LIB_NATIVE) >> $@
diff --git a/cross/python38/Makefile b/cross/python38/Makefile
index 452b9ef79ae..735b94c5447 100644
--- a/cross/python38/Makefile
+++ b/cross/python38/Makefile
@@ -124,20 +124,26 @@ python38_install:
@install -m 644 src/mime.types $(STAGING_INSTALL_PREFIX)/etc/
$(RUN) _PYTHON_HOST_PLATFORM=$(TC_TARGET) $(MAKE) install prefix=$(STAGING_INSTALL_PREFIX)
+# Create the crossenv in preparation for
+# cross-compiling all the necessary wheels
.PHONY: python38_post_install
python38_post_install: $(WORK_DIR)/python-cc.mk
mkdir -p $(PYTHON_LIB_CROSS)
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.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-python get-pip.py "pip==21.3.1"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) python get-pip.py "pip==21.3.1"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "setuptools==58.3.0"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "setuptools==58.3.0"
. $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "wheel==0.37.0"
. $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "wheel==0.37.0"
- . $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "cffi==1.14.6"
- . $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "cffi==1.14.6"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "cffi==1.15.0"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "cffi==1.15.0"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "cryptography==3.3.2"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "cryptography==3.3.2"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) build-pip install "poetry==1.1.11"
+ . $(WORK_DIR)/crossenv/bin/activate && $(RUN) pip install "poetry==1.1.11"
ifneq ($(PYTHON_LIB_NATIVE),$(PYTHON_LIB_CROSS))
cp $(PYTHON_LIB_CROSS)/_sysconfigdata_*.py $(PYTHON_LIB_NATIVE)/_sysconfigdata.py
endif
diff --git a/cross/setuptools/Makefile b/cross/setuptools/Makefile
index 344c522749a..63d17095f83 100644
--- a/cross/setuptools/Makefile
+++ b/cross/setuptools/Makefile
@@ -1,5 +1,5 @@
PKG_NAME = setuptools
-PKG_VERS = 58.2.0
+PKG_VERS = 58.3.0
PKG_EXT = tar.gz
PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT)
PKG_DIST_SITE = https://files.pythonhosted.org/packages/source/s/$(PKG_NAME)
diff --git a/cross/setuptools/digests b/cross/setuptools/digests
index e9aa5829c9c..55d31a57079 100644
--- a/cross/setuptools/digests
+++ b/cross/setuptools/digests
@@ -1,3 +1,3 @@
-setuptools-58.2.0.tar.gz SHA1 5d97de0e774b2269c85685a4aa8fd5956bcfd2bb
-setuptools-58.2.0.tar.gz SHA256 2c55bdb85d5bb460bd2e3b12052b677879cffcf46c0c688f2e5bf51d36001145
-setuptools-58.2.0.tar.gz MD5 ff20ab7e0d51c5ad0a9438c50e598c06
+setuptools-58.3.0.tar.gz SHA1 d5354718cb8c9330d3abc27445467ce8a5ed9d70
+setuptools-58.3.0.tar.gz SHA256 b0c2461641b58fe30e11d4c3dfba316c513bdf9ec85f9fed0c871c678447205e
+setuptools-58.3.0.tar.gz MD5 7a2c32ef46b0f91acc8c2756af56a711
diff --git a/cross/znc/Makefile b/cross/znc/Makefile
index c01c0d3a75c..e962103b665 100644
--- a/cross/znc/Makefile
+++ b/cross/znc/Makefile
@@ -5,7 +5,7 @@ PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT)
PKG_DIST_SITE = https://znc.in/releases/archive
PKG_DIR = $(PKG_NAME)-$(PKG_VERS)
-BUILD_DEPENDS = cross/python38
+BUILD_DEPENDS = cross/python310
DEPENDS = cross/openssl cross/libicu
# due to libicu:
diff --git a/mk/spksrc.common.mk b/mk/spksrc.common.mk
index 0c62b8043ae..36f920cb3f7 100644
--- a/mk/spksrc.common.mk
+++ b/mk/spksrc.common.mk
@@ -13,13 +13,19 @@ MSG = echo "===> "
# Launch command in the working dir of the package source and the right environment
RUN = cd $(WORK_DIR)/$(PKG_DIR) && env $(ENV)
-# Pip command
+# fallback by default to native/python*
PIP ?= pip
+
+# Cross compiling must call "pip" directly to ensure using
+# $(WORK_DIR)/crossenv pip version instead from adjusted $PATH
+PIP_CROSS = $(shell . $(CROSSENV) && $(RUN) which pip)
+
+# System default pip outside from build environment
+PIP_SYSTEM = $(shell which 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 --wheel-dir $(WHEELHOUSE)
-PIP_WHEEL = $(PIP) $(PIP_WHEEL_ARGS)
-PIP_DOWNLOAD = $(PIP) download $(PIP_ARGS) --dest $(BASE_DISTRIB_DIR)
# Available languages
LANGUAGES = chs cht csy dan enu fre ger hun ita jpn krn nld nor plk ptb ptg rus spn sve trk
diff --git a/mk/spksrc.python-wheel.mk b/mk/spksrc.python-wheel.mk
index 45f0363e300..fff7b39560f 100644
--- a/mk/spksrc.python-wheel.mk
+++ b/mk/spksrc.python-wheel.mk
@@ -7,10 +7,13 @@ ifeq ($(strip $(CONFIGURE_TARGET)),)
CONFIGURE_TARGET = nop
endif
ifeq ($(strip $(COMPILE_TARGET)),)
-COMPILE_TARGET = build_python_wheel
+COMPILE_TARGET = build_python_wheel_target
endif
ifeq ($(strip $(INSTALL_TARGET)),)
-INSTALL_TARGET = install_python_wheel
+INSTALL_TARGET = nop
+endif
+ifeq ($(strip $(POST_INSTALL_TARGET)),)
+POST_INSTALL_TARGET = post_install_python_wheel_target
endif
# Resume with standard spksrc.cross-cc.mk
@@ -22,9 +25,11 @@ include ../../mk/spksrc.cross-cc.mk
# Python module variables
PYTHONPATH = $(PYTHON_LIB_NATIVE):$(INSTALL_DIR)$(INSTALL_PREFIX)/$(PYTHON_LIB_DIR)/site-packages/
+## python wheel specific configurations
+include ../../mk/spksrc.wheel-env.mk
### Python wheel rules
-build_python_wheel:
+build_python_wheel_target:
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 $(WHEELHOUSE)
@@ -32,14 +37,8 @@ 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 $(WHEELHOUSE)
endif
+ @$(RUN) echo "$(PKG_NAME)==$(PKG_VERS)" >> $(WHEELHOUSE)/$(WHEELS_CROSS_COMPILE)
-install_python_wheel: $(WHEEL_TARGET)
- @if [ -d "$(WHEELHOUSE)" ] ; then \
- mkdir -p $(STAGING_INSTALL_WHEELHOUSE) ; \
- cd $(WHEELHOUSE) && \
- for w in *.whl; do \
- cp -f $$w $(STAGING_INSTALL_WHEELHOUSE)/`echo $$w | cut -d"-" -f -3`-none-any.whl; \
- done ; \
- fi
+post_install_python_wheel_target: $(WHEEL_TARGET) install_python_wheel
all: install
diff --git a/mk/spksrc.wheel-env.mk b/mk/spksrc.wheel-env.mk
new file mode 100644
index 00000000000..3401da35da1
--- /dev/null
+++ b/mk/spksrc.wheel-env.mk
@@ -0,0 +1,97 @@
+#
+# Configuration for python wheel build
+#
+
+ifeq ($(strip $(WHEELS_DEFAULT)),)
+WHEELS_DEFAULT = requirements.txt
+endif
+ifeq ($(strip $(WHEELS_LIMITED_API)),)
+WHEELS_LIMITED_API = requirements-abi3.txt
+endif
+ifeq ($(strip $(WHEELS_PURE_PYTHON)),)
+WHEELS_PURE_PYTHON = requirements-pure.txt
+endif
+ifeq ($(strip $(WHEELS_CROSS_COMPILE)),)
+WHEELS_CROSS_COMPILE = requirements-cross.txt
+endif
+ifeq ($(strip $(WHEELS_CROSSENV_COMPILE)),)
+WHEELS_CROSSENV_COMPILE = requirements-crossenv.txt
+endif
+
+ifeq ($(strip $(WHEEL_DEFAULT_PREFIX)),)
+# If no ARCH then pure by default
+ifeq ($(strip $(ARCH)),)
+WHEEL_DEFAULT_PREFIX = pure
+else
+WHEEL_DEFAULT_PREFIX = cross
+endif
+endif
+
+ifeq ($(strip $(WHEEL_DEFAULT_PREFIX)),pure)
+WHEELS_DEFAULT_REQUIREMENT = $(WHEELS_PURE_PYTHON)
+else
+WHEELS_DEFAULT_REQUIREMENT = $(WHEELS_CROSSENV_COMPILE)
+endif
+
+# For generating abi3 wheels with limited
+# python API (e.g cp35 = Python 3.5)
+ifeq ($(strip $(PYTHON_LIMITED_API)),)
+PYTHON_LIMITED_API = cp35
+endif
+
+#
+# Define _PYTHON_HOST_PLATFORM so wheel
+# prefix in file naming matches `uname -m`
+#
+ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH))
+PYTHON_ARCH = armv5tel
+endif
+
+ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS)),$(ARCH))
+PYTHON_ARCH = armv7
+endif
+
+ifeq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH))
+PYTHON_ARCH = armv7l
+endif
+
+ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH))
+PYTHON_ARCH = aarch64
+endif
+
+ifeq ($(findstring $(ARCH),$(PPC_ARCHS)),$(ARCH))
+PYTHON_ARCH = ppc
+endif
+
+ifeq ($(findstring $(ARCH),$(x64_ARCHS)),$(ARCH))
+PYTHON_ARCH = x86_64
+endif
+
+ifeq ($(findstring $(ARCH),$(i686_ARCHS)),$(ARCH))
+PYTHON_ARCH += i686
+endif
+
+install_python_wheel:
+ @if [ -d "$(WHEELHOUSE)" ] ; then \
+ mkdir -p $(STAGING_INSTALL_WHEELHOUSE) ; \
+ cd $(WHEELHOUSE) ; \
+ $(MSG) Copying $(WHEELS_DEFAULT) wheelhouse ; \
+ if stat -t requirements*.txt >/dev/null 2>&1; then \
+ cat requirements*.txt >> $(STAGING_INSTALL_WHEELHOUSE)/$(WHEELS_DEFAULT) ; \
+ sort -u -o $(STAGING_INSTALL_WHEELHOUSE)/$(WHEELS_DEFAULT) $(STAGING_INSTALL_WHEELHOUSE)/$(WHEELS_DEFAULT) ; \
+ fi ; \
+ 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_WHEELHOUSE)/`echo $$w | cut -d"-" -f -3`-none-any.whl ; \
+ fi ; \
+ done ; \
+ else \
+ for w in *.whl; do \
+ $(MSG) Copying to wheelhouse: $$(echo $$w | sed -E "s/(.*linux_).*(\.whl)/\1$(PYTHON_ARCH)\2/") ; \
+ cp -f $$w $(STAGING_INSTALL_WHEELHOUSE)/$$(echo $$w | sed -E "s/(.*linux_).*(\.whl)/\1$(PYTHON_ARCH)\2/") ; \
+ done ; \
+ fi ; \
+ fi
+
diff --git a/mk/spksrc.wheel.mk b/mk/spksrc.wheel.mk
index ce1317777cb..21c4911a8a7 100644
--- a/mk/spksrc.wheel.mk
+++ b/mk/spksrc.wheel.mk
@@ -14,12 +14,10 @@
WHEEL_COOKIE = $(WORK_DIR)/.$(COOKIE_PREFIX)wheel_done
-ifeq ($(strip $(WHEELS_PURE_PYTHON)),)
-WHEELS_PURE_PYTHON = requirements.txt
-endif
-ifeq ($(strip $(WHEELS_CROSS_COMPILE)),)
-WHEELS_CROSS_COMPILE = requirements-cross.txt
-endif
+## python wheel specific configurations
+include ../../mk/spksrc.wheel-env.mk
+
+##
ifeq ($(strip $(PRE_WHEEL_TARGET)),)
PRE_WHEEL_TARGET = pre_wheel_target
@@ -50,18 +48,27 @@ pre_wheel_target: wheel_msg_target
if [ -n "$(PIP_CACHE_OPT)" ] ; then \
mkdir -p $(PIP_DIR) ; \
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) ; \
+ if [ $$(basename $$wheel) = $(WHEELS_PURE_PYTHON) ]; then \
+ $(MSG) "Adding existing $$wheel file as pure-python (discarding any cross-compiled)" ; \
+ sed -e '/^cross:\|^#\|^$$/d' -e /^pure:/s/^pure://g $$wheel >> $(WHEELHOUSE)/$(WHEELS_PURE_PYTHON) ; \
+ elif [ $$(basename $$wheel) = $(WHEELS_CROSSENV_COMPILE) ]; then \
+ $(MSG) "Adding existing $$wheel file as cross-compiled (discarding any pure-python)" ; \
+ sed -e '/^pure:\|^#\|^$$/d' -e /^cross:/s/^cross://g $$wheel >> $(WHEELHOUSE)/$(WHEELS_CROSSENV_COMPILE) ; \
+ elif [ $$(basename $$wheel) = $(WHEELS_LIMITED_API) ]; then \
+ $(MSG) "Adding existing $$wheel file as ABI-limited" ; \
+ cat $$wheel >> $(WHEELHOUSE)/$(WHEELS_LIMITED_API) ; \
+ else \
+ $(MSG) "Adapting existing $$wheel file" ; \
+ sed -rn /^pure:/s/^pure://gp $$wheel >> $(WHEELHOUSE)/$(WHEELS_PURE_PYTHON) ; \
+ sed -rn /^cross:/s/^cross://gp $$wheel >> $(WHEELHOUSE)/$(WHEELS_CROSSENV_COMPILE) ; \
+ sed -e '/^pure:\|^cross:\|^#\|^$$/d' $$wheel >> $(WHEELHOUSE)/$(WHEELS_DEFAULT_REQUIREMENT) ; \
+ fi ;\
else \
- $(MSG) "Adding to $(WHEELS_PURE_PYTHON) file" ; \
- echo $$wheel >> $(WHEELHOUSE)/$(WHEELS_PURE_PYTHON) ; \
+ $(MSG) "ERROR: File $$wheel does not exist" ; \
fi ; \
done \
fi
@@ -71,42 +78,26 @@ pre_wheel_target: wheel_msg_target
build_wheel_target: $(PRE_WHEEL_TARGET)
@if [ -n "$(WHEELS)" ] ; then \
$(foreach e,$(shell cat $(WORK_DIR)/python-cc.mk),$(eval $(e))) \
- if [ -f "$(WHEELHOUSE)/$(WHEELS_CROSS_COMPILE)" ]; then \
+ if [ -s "$(WHEELHOUSE)/$(WHEELS_CROSSENV_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) --requirement $(WHEELHOUSE)/$(WHEELS_CROSS_COMPILE) ; \
+ $(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) --requirement $(WHEELHOUSE)/$(WHEELS_CROSSENV_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) --no-build-isolation --requirement $(WHEELHOUSE)/$(WHEELS_CROSS_COMPILE) ; \
+ . $(CROSSENV) && $(RUN) _PYTHON_HOST_PLATFORM="$(TC_TARGET)" CFLAGS="$(CFLAGS) -I$(STAGING_INSTALL_PREFIX)/$(PYTHON_INC_DIR) $(WHEELS_CFLAGS)" LDFLAGS="$(LDFLAGS) $(WHEELS_LDFLAGS)" $(PIP_CROSS) $(PIP_WHEEL_ARGS) --no-build-isolation --requirement $(WHEELHOUSE)/$(WHEELS_CROSSENV_COMPILE) ; \
fi ; \
fi ; \
- if [ -f "$(WHEELHOUSE)/$(WHEELS_PURE_PYTHON)" ]; then \
+ if [ -s "$(WHEELHOUSE)/$(WHEELS_LIMITED_API)" ]; then \
+ $(MSG) "Force limited API $(PYTHON_LIMITED_API)" ; \
+ . $(CROSSENV) && $(RUN) _PYTHON_HOST_PLATFORM="$(TC_TARGET)" CFLAGS="$(CFLAGS) -I$(STAGING_INSTALL_PREFIX)/$(PYTHON_INC_DIR) $(WHEELS_CFLAGS)" LDFLAGS="$(LDFLAGS) $(WHEELS_LDFLAGS)" $(PIP_CROSS) $(PIP_WHEEL_ARGS) --build-option='--py-limited-api=$(PYTHON_LIMITED_API)' --no-build-isolation --requirement $(WHEELHOUSE)/$(WHEELS_LIMITED_API) ; \
+ fi ; \
+ if [ -s "$(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 ; \
- fi
-
-post_wheel_target: $(WHEEL_TARGET)
- @if [ -d "$(WHEELHOUSE)" ] ; then \
- mkdir -p $(STAGING_INSTALL_WHEELHOUSE) ; \
- cd $(WHEELHOUSE) ; \
- if stat -t requirements*.txt >/dev/null 2>&1; then \
- cat requirements*.txt > $(STAGING_INSTALL_WHEELHOUSE)/$(WHEELS_PURE_PYTHON) ; \
- fi ;\
- 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_WHEELHOUSE)/`echo $$w | cut -d"-" -f -3`-none-any.whl; \
- fi ; \
- done ; \
- else \
- for w in *.whl; do \
- cp -f $$w $(STAGING_INSTALL_WHEELHOUSE)/`echo $$w | cut -d"-" -f -3`-none-any.whl; \
- done ; \
+ $(RUN) $(PIP) $(PIP_WHEEL_ARGS) --requirement $(WHEELHOUSE)/$(WHEELS_PURE_PYTHON) ; \
fi ; \
fi
+post_wheel_target: $(WHEEL_TARGET) install_python_wheel
ifeq ($(wildcard $(WHEEL_COOKIE)),)
wheel: $(WHEEL_COOKIE)
diff --git a/native/python3/Makefile b/native/python3/Makefile
index e295a702a13..98a72bd8c1e 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.3"
- @$(PIP) install "setuptools==58.2.0" "cffi==1.14.6" "crossenv==1.0"
+ @$(RUN) $(PYTHON) get-pip.py "pip==21.3.1"
+ @$(PIP) install "setuptools==58.3.0" "cffi==1.14.6" "crossenv==1.0"
$(WORK_DIR)/python-native.mk:
@echo PIP=$(PIP_NATIVE) >> $@
diff --git a/native/python310/Makefile b/native/python310/Makefile
index 0a773b534df..48d64a4c10a 100644
--- a/native/python310/Makefile
+++ b/native/python310/Makefile
@@ -28,7 +28,7 @@ PIP_NATIVE = $(WORK_DIR)/../../../native/$(PKG_NAME)/work-native/install/usr/loc
.PHONY: python310_native_post_install
python310_native_post_install: $(WORK_DIR)/python-native.mk
- @$(MSG) Installing pip, setuptools, cffi and cross env
+ @$(MSG) Installing pip, setuptools and crossenv
@$(RUN) wget https://bootstrap.pypa.io/get-pip.py
@$(RUN) $(PYTHON) get-pip.py "pip==21.3.1"
@$(PIP) install "setuptools==58.3.0" "cffi==1.15" "crossenv==1.1.4"
diff --git a/native/python38/Makefile b/native/python38/Makefile
index 439245cfb3d..38a65834979 100644
--- a/native/python38/Makefile
+++ b/native/python38/Makefile
@@ -31,8 +31,8 @@ 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.3"
- @$(PIP) install "setuptools==58.2.0" "cffi==1.14.6" "crossenv==1.0"
+ @$(RUN) $(PYTHON) get-pip.py "pip==21.3.1"
+ @$(PIP) install "setuptools==58.3.0" "cffi==1.14.6" "crossenv==1.0"
$(WORK_DIR)/python-native.mk:
@echo PIP=$(PIP_NATIVE) >> $@
diff --git a/spk/beets/Makefile b/spk/beets/Makefile
index 574089dd147..af13dda95db 100644
--- a/spk/beets/Makefile
+++ b/spk/beets/Makefile
@@ -1,19 +1,19 @@
SPK_NAME = beets
-SPK_VERS = 1.4.9
-SPK_REV = 6
+SPK_VERS = 1.5.0
+SPK_REV = 7
SPK_ICON = src/beets.png
-PIP = $(WORK_DIR)/../../../native/python3/work-native/install/usr/local/bin/pip
-BUILD_DEPENDS = native/python3
+PIP = $(WORK_DIR)/../../../native/python310/work-native/install/usr/local/bin/pip
+BUILD_DEPENDS = native/python310
WHEELS = src/requirements.txt
-SPK_DEPENDS = "python3>=3.7.7"
+SPK_DEPENDS = "python310"
MAINTAINER = ymartin59
DESCRIPTION = "Beets is the media library management system for obsessive-compulsive music geeks. The purpose of beets is to get your music collection right once and for all. It catalogs your collection, automatically improving its metadata as it goes. It then provides a bouquet of tools for manipulating and accessing your music. Plugins not available due to lacking dependencies: AcousticBrainz Submit, Gmusic, ReplayGain."
DISPLAY_NAME = beets
-CHANGELOG = "1. Upgraded minimum version of python 3."
+CHANGELOG = "1. Updated minimum version of python to 3.10"
HOMEPAGE = http://beets.io/
LICENSE = GPL
diff --git a/spk/beets/src/requirements.txt b/spk/beets/src/requirements.txt
index 2c92340c71b..057073b512d 100644
--- a/spk/beets/src/requirements.txt
+++ b/spk/beets/src/requirements.txt
@@ -1,42 +1,44 @@
-beets==1.4.9
+beets==1.5.0
# Direct dependencies
-# six>=1.10.0 ==> included in python3 package installation
+confuse==1.6.0
+#six>=1.10.0 ==> python310
+#MarkupSafe>=0.23 ==> python310
+mediafile==0.8.1
mutagen==1.44.0
-Unidecode==1.1.1
musicbrainzngs==0.7.1
-#PyYAML>=3.12 ==> included in python3 package installation
-#MarkupSafe>=0.23 ==> included in python3 package installation
munkres==1.1.2
+#PyYAML>=3.12 ==> python310
+#Unidecode==1.1.1 ==> python310
# Plugin dependencies
-beautifulsoup4==4.10.0
-certifi==2019.11.28
-chardet==3.0.4
+#beautifulsoup4==4.10.0 ==> python310
+#certifi==2019.11.28 ==> python310
+#chardet==3.0.4 ==> python310
discogs-client==2.2.2
langdetect==1.0.7
-# Pillow==7.0.0 # arch dependent, would need cross compilation
-oauthlib==3.1.0
+#Pillow==7.0.0 ==> python310
+#oauthlib==3.1.0 ==> python310
pyacoustid==1.1.7
pylast==3.2.0
-python-mpd2==1.0.0
+python-mpd2==1.1.0
pyxdg==0.26
rarfile==3.1
-requests==2.23.0
-requests-oauthlib==1.3.0
+#requests==2.23.0 ==> python310
+#requests-oauthlib==1.3.0 ==> python310
soupsieve==2.0
soco==0.18.1
-urllib3==1.25.8
+#urllib3==1.25.8 ==> python310
xmltodict==0.12.0
# For web plugin
-Flask==1.1.1
+#Flask==1.1.1 ==> python310
Flask-Cors==3.0.8
-Click==7.0
-itsdangerous==1.1.0
+#Click==7.0 ==> python310
+#itsdangerous==1.1.0 ==> python310
jellyfish==0.7.2
-Jinja2==2.11.1
-Werkzeug==1.0.0
+#Jinja2==2.11.1 ==> python310
+#Werkzeug==1.0.0 ==> python310
# For gmusic plugin
# Despite installing following wheels 'google' is not found at runtime
diff --git a/spk/beets/src/service-setup.sh b/spk/beets/src/service-setup.sh
index 9cfe5f1bcdc..7223943c02f 100644
--- a/spk/beets/src/service-setup.sh
+++ b/spk/beets/src/service-setup.sh
@@ -1,5 +1,5 @@
-PYTHON_DIR="/var/packages/python3/target/bin"
+PYTHON_DIR="/var/packages/python310/target/bin"
PATH="${SYNOPKG_PKGDEST}/bin:${SYNOPKG_PKGDEST}/env/bin:${PYTHON_DIR}:${PATH}"
VIRTUALENV="${PYTHON_DIR}/python3 -m venv"
PIP=${SYNOPKG_PKGDEST}/env/bin/pip
diff --git a/spk/borgbackup/Makefile b/spk/borgbackup/Makefile
index d9b8e69620e..90f135d96ca 100644
--- a/spk/borgbackup/Makefile
+++ b/spk/borgbackup/Makefile
@@ -1,29 +1,29 @@
SPK_NAME = borgbackup
SPK_VERS = 1.1.17
-SPK_REV = 9
+SPK_REV = 10
SPK_ICON = src/$(SPK_NAME).png
-BUILD_DEPENDS = cross/python38
+BUILD_DEPENDS = cross/python310
DEPENDS = cross/$(SPK_NAME)
-SPK_DEPENDS = "python38"
+SPK_DEPENDS = "python310"
# Requirements file generation
# cd src
-# /spksrc/native/python38/work-native/install/usr/local/bin/python3 -m venv borg-env
+# /spksrc/native/python310/work-native/install/usr/local/bin/python3 -m venv borg-env
# . borg-env/bin/activate
# pip install ../work-x64-6.1/install/var/packages/borgbackup/target/share/wheelhouse/borgbackup*.whl borgmatic
# pip freeze > requirements.txt
# deactivate
# adjust the first line in requirements.txt to "#borgbackup==1.1.17"
-WHEELS = src/requirements-cross.txt src/requirements.txt
+WHEELS = src/requirements-crossenv.txt src/requirements-pure.txt
MAINTAINER = SynoCommunity
DESCRIPTION = Deduplicating backup program with compression and authenticated encryption.
DISPLAY_NAME = Borg
STARTABLE = no
-CHANGELOG = "1. Update borgbackup to v1.1.17 and borgmatic to v1.5.18.
2. Update OpenSSL to v1.1.1l."
+CHANGELOG = "1. Update borgbackup to v1.1.17 and borgmatic to v1.5.18.
2. Update OpenSSL to v1.1.1l.
3. Update to Python 3.10"
HOMEPAGE = https://borgbackup.readthedocs.io
LICENSE = BSD-3-Clause
diff --git a/spk/borgbackup/src/requirements-cross.txt b/spk/borgbackup/src/requirements-cross.txt
deleted file mode 100644
index 8cc21ddf2f6..00000000000
--- a/spk/borgbackup/src/requirements-cross.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-pyrsistent==0.18.0
-ruamel.yaml.clib==0.2.6
diff --git a/spk/borgbackup/src/requirements-crossenv.txt b/spk/borgbackup/src/requirements-crossenv.txt
new file mode 100644
index 00000000000..6675d503857
--- /dev/null
+++ b/spk/borgbackup/src/requirements-crossenv.txt
@@ -0,0 +1,17 @@
+# For reference
+#borgbackup==1.1.17
+
+#attrs==21.2.0 ==> python310
+borgmatic==1.5.18
+#certifi==2021.5.30 ==> python310
+#charset-normalizer==2.0.4 ==> python310
+colorama==0.4.4
+#idna==3.2 ==> python310
+#packaging==21.0 ==> python310
+#pyparsing==2.4.7 ==> python310
+pyrsistent==0.18.0
+#requests==2.26.0 ==> python310
+#ruamel.yaml==0.17.16 ==> python310
+ruamel.yaml.clib==0.2.6
+#six==1.16.0 ==> python310
+#urllib3==1.26.6 ==> python310
diff --git a/spk/borgbackup/src/requirements-pure.txt b/spk/borgbackup/src/requirements-pure.txt
new file mode 100644
index 00000000000..ac21472ca67
--- /dev/null
+++ b/spk/borgbackup/src/requirements-pure.txt
@@ -0,0 +1,3 @@
+# Wheels that absolutely needs
+# to be managed as pure-python
+jsonschema==3.2.0
diff --git a/spk/borgbackup/src/requirements.txt b/spk/borgbackup/src/requirements.txt
deleted file mode 100644
index fa7f95e8381..00000000000
--- a/spk/borgbackup/src/requirements.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-attrs==21.2.0
-#borgbackup==1.1.17
-borgmatic==1.5.18
-certifi==2021.5.30
-charset-normalizer==2.0.4
-colorama==0.4.4
-idna==3.2
-jsonschema==3.2.0
-packaging==21.0
-pyparsing==2.4.7
-requests==2.26.0
-ruamel.yaml==0.17.16
-six==1.16.0
-urllib3==1.26.6
diff --git a/spk/borgbackup/src/service-setup.sh b/spk/borgbackup/src/service-setup.sh
index a6d9c8e8b35..34430d3d754 100644
--- a/spk/borgbackup/src/service-setup.sh
+++ b/spk/borgbackup/src/service-setup.sh
@@ -1,5 +1,5 @@
-PYTHON_DIR="/var/packages/python38/target/bin"
+PYTHON_DIR="/var/packages/python310/target/bin"
VIRTUALENV="${PYTHON_DIR}/python3 -m venv"
PIP=${SYNOPKG_PKGDEST}/env/bin/pip3
PATH="${SYNOPKG_PKGDEST}/env/bin:${SYNOPKG_PKGDEST}/bin:${PYTHON_DIR}:${PATH}"
diff --git a/spk/deluge/Makefile b/spk/deluge/Makefile
index d26715c8f05..7d6c8a61066 100644
--- a/spk/deluge/Makefile
+++ b/spk/deluge/Makefile
@@ -1,11 +1,11 @@
SPK_NAME = deluge
SPK_VERS = 2.0.3
-SPK_REV = 13
+SPK_REV = 14
SPK_ICON = src/deluge.png
BUILD_DEPENDS = cross/python2 cross/setuptools_py2 cross/pip_py2 cross/wheel
DEPENDS = cross/$(SPK_NAME)
-WHEELS = src/requirements.txt src/requirements-cross.txt
+WHEELS = src/requirements.txt
SPK_DEPENDS = "python>=2.7.18"
REQUIRED_DSM = 5.0
diff --git a/spk/deluge/src/requirements-cross.txt b/spk/deluge/src/requirements-cross.txt
deleted file mode 100644
index cc18fb90b69..00000000000
--- a/spk/deluge/src/requirements-cross.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-setproctitle==1.1.10
-rencode==1.0.6
diff --git a/spk/deluge/src/requirements.txt b/spk/deluge/src/requirements.txt
index 7ccc86e2f05..0cd88e3161b 100644
--- a/spk/deluge/src/requirements.txt
+++ b/spk/deluge/src/requirements.txt
@@ -1,7 +1,9 @@
characteristic==14.3.0
chardet==3.0.4
+Mako==1.1.2
pyasn1-modules==0.2.8
+PyHamcrest==1.10.1
pyxdg==0.26
-Mako==1.1.2
+rencode==1.0.6
service-identity==18.1.0
-PyHamcrest==1.10.1
+setproctitle==1.1.10
diff --git a/spk/duplicity/Makefile b/spk/duplicity/Makefile
index e8b76c362ac..ebbea81f4d5 100644
--- a/spk/duplicity/Makefile
+++ b/spk/duplicity/Makefile
@@ -1,20 +1,20 @@
SPK_NAME = duplicity
SPK_VERS = 0.8.19
-SPK_REV = 7
+SPK_REV = 8
SPK_ICON = src/duplicity.png
-BUILD_DEPENDS = cross/python38
-DEPENDS = cross/cffi cross/lxml cross/duplicity cross/duply
+BUILD_DEPENDS = cross/python310
+DEPENDS = cross/duplicity cross/duply
-WHEELS = src/requirements-cross.txt src/requirements.txt
+WHEELS = src/requirements-crossenv.txt src/requirements-pure.txt
-SPK_DEPENDS = "python38>=3.8.8:gnupg>=2.1.6"
+SPK_DEPENDS = "python310:gnupg>=2.1.6"
MAINTAINER = SynoCommunity
DESCRIPTION = Encrypted bandwidth-efficient backup using the rsync algorithm. Also contains duply wrapper script (duply is supported only for DSM >= 6.0).
STARTABLE = no
DISPLAY_NAME = Duplicity
-CHANGELOG = "1. Update duplicity to v0.8.19 and duply to v2.3.12. Update to Python 3.83. Add supported backend libraries:
- azure-storage-blob
- b2sdk
- boto
- boto3
- boxsdk[jwt]
- dropbox
- google_auth_oauthlib
- jottalib
- pydrive
- pyrax
- python-swiftclient
- requests_oauthlib
4. Update includes a security update urllib3"
+CHANGELOG = "1. Update duplicity to v0.8.19 and duply to v2.3.1
2. Update to Python 3.10
3. Add supported backend libraries: - azure-storage-blob
- b2sdk
- boto
- boto3
- boxsdk[jwt]
- dropbox
- google_auth_oauthlib
- jottalib
- pydrive
- pyrax
- python-swiftclient
- requests_oauthlib
4. Update includes a security update urllib3"
HOMEPAGE = http://duplicity.nongnu.org/
LICENSE = GPLv2
diff --git a/spk/duplicity/src/requirements-cross.txt b/spk/duplicity/src/requirements-cross.txt
deleted file mode 100644
index b0c574bf3d8..00000000000
--- a/spk/duplicity/src/requirements-cross.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-##### 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-crossenv.txt
similarity index 53%
rename from spk/duplicity/src/requirements.txt
rename to spk/duplicity/src/requirements-crossenv.txt
index e00e553b670..902a438b6d2 100644
--- a/spk/duplicity/src/requirements.txt
+++ b/spk/duplicity/src/requirements-crossenv.txt
@@ -29,73 +29,97 @@
##### Included for reference #####
#duplicity==0.8.19
-##### basic requirements #####
-certifi==2020.12.5
-fasteners==0.16
-requests==2.25.1
-#setuptools-scm==6.0.1
-setuptools-scm==5.0.2
-six==1.15.0
-urllib3==1.26.4
-
-### backend libraries except gdata mediafire
+args==0.1.0
arrow==0.17.0
-attrs==20.3.0
+#attrs==20.3.0 ==> python310
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
+#certifi==2020.12.5 ==> python310
+#cffi==1.14.5 ==> python310
+#chardet==4.0.0 ==> python310
+clint==0.5.1
+#cryptography==3.4.7 ==> python310
debtcollector==1.11.0
dropbox==11.7.0
+#duplicity==0.8.19
+fasteners==0.16
funcsigs==1.0.2
+#future==0.18.2 ==> python310
+# gdata ; python_version == '2.7'
google-api-core==1.26.3
google-api-python-client==2.3.0
+googleapis-common-protos==1.53.0
google-auth==1.30.0
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
+#idna==2.10 ==> python310
+ip-associations-python-novaclient-ext==0.2
+iso8601==0.1.14
isodate==0.6.0
+#jeepney==0.7.1 ### cross compile wheel fails to find flit_core
jmespath==0.10.0
-keyring==23.0.1
+jottalib==0.5.1
keystoneauth1==2.18.0
logfury==0.1.2
+#lxml==4.6.3 ==> python310
+#mediafire ### Development Status 3 - Alpha: outdated (Nov 2016), not supported by Python >3.4
#monotonic==1.6
+#msgpack-python==0.5.6 ==> python310
msrest==0.6.21
netaddr==0.8.0
-oauthlib==3.1.0
+#netifaces==0.10.9 ==> python310
+oauth2client==4.1.3
+#oauthlib==3.1.0 ==> python310
os-diskconfig-python-novaclient-ext==0.1.3
oslo.config==4.12.0
oslo.i18n==3.12.0
oslo.serialization==2.16.1
oslo.utils==3.22.3
-packaging==20.9
-pbr==1.10.0
+os-networksv2-python-novaclient-ext==0.26
+os-virtual-interfacesv2-python-novaclient-ext==0.20
+#packaging==20.9 ==> python310
+pbr==5.7.0
ply==3.11
+positional==1.2.1
prettytable==0.7.2
-### pycparser==2.20 # pycparser==2.19 is included in python38
+protobuf==3.15.8
+#pyasn1==0.4.8 ==> python310
+pyasn1-modules==0.2.8
+#pycparser==2.20 ==> python310
PyDrive==1.3.1
PyJWT==2.1.0
-pyparsing==2.4.7
+#pyparsing==2.4.7 ==> python310
pyrax==1.10.0
-python-dateutil==2.8.1
+python-gettext==4.0
python-keystoneclient==3.10.0
python-novaclient==2.27.0
python-swiftclient==3.11.1
-pytz==2021.1
-requests-oauthlib==1.3.0
-requests-toolbelt==0.9.1
+#pytz==2021.1 ==> python310
+#PyYAML==5.4.1 ==> python310
+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==2.25.1 ==> python310
+#requests-oauthlib==1.3.0 ==> python310
+#requests-toolbelt==0.9.1 ==> python310
rfc3986==1.4.0
rsa==4.7.2
s3transfer==0.4.2
SecretStorage==3.3.1
+setuptools-scm==5.0.2
+simplejson==3.17.2
+#six==1.15.0 ==> python310
stevedore==1.20.1
stone==3.2.1
-tqdm==4.60.0
uritemplate==3.0.1
-### zipp==3.4.1 # zipp==3.1.0 is included in python38
+#urllib3==1.26.4 ==> python310
+wrapt==1.12.1
diff --git a/spk/duplicity/src/requirements-pure.txt b/spk/duplicity/src/requirements-pure.txt
new file mode 100644
index 00000000000..71f4f9a4af9
--- /dev/null
+++ b/spk/duplicity/src/requirements-pure.txt
@@ -0,0 +1,8 @@
+# Wheels that absolutely needs
+# to be managed as pure-python
+humanize==3.5.0
+#importlib-metadata==4.0.1 ==> python310
+keyring==23.0.1
+#python-dateutil==2.8.1 ==> python310
+tqdm==4.60.0
+#zipp==3.4.1 ==> python310
diff --git a/spk/duplicity/src/service-setup.sh b/spk/duplicity/src/service-setup.sh
index 0c0fa94e526..d468d3a42af 100644
--- a/spk/duplicity/src/service-setup.sh
+++ b/spk/duplicity/src/service-setup.sh
@@ -1,7 +1,7 @@
### service-setup.sh
-PYTHON_DIR="/var/packages/python38/target/bin"
+PYTHON_DIR="/var/packages/python310/target/bin"
VIRTUALENV="${PYTHON_DIR}/python3 -m venv"
PATH="${SYNOPKG_PKGDEST}/env/bin:${SYNOPKG_PKGDEST}/bin:${PYTHON_DIR}:${PATH}"
diff --git a/spk/ffsync/Makefile b/spk/ffsync/Makefile
index f5893919640..82b59c4f1ca 100644
--- a/spk/ffsync/Makefile
+++ b/spk/ffsync/Makefile
@@ -8,7 +8,7 @@ BUILD_DEPENDS = cross/python2 cross/setuptools_py2 cross/pip_py2 cross/wheel
BUILD_DEPENDS += cross/gevent cross/greenlet cross/cffi
DEPENDS = cross/busybox
-WHEELS = src/requirements.txt src/requirements-cross.txt
+WHEELS = src/requirements.txt
MAINTAINER = SynoCommunity
DESCRIPTION = Firefox Sync Server 1.5, used for Firefox 29 and later. You can use Firefox Sync Server to synchronize your bookmarks, passwords, settings, history, add-ons and tabs with Firefox on other computers. The service runs on port 8132.
diff --git a/spk/ffsync/src/requirements-cross.txt b/spk/ffsync/src/requirements-cross.txt
deleted file mode 100644
index da68f120864..00000000000
--- a/spk/ffsync/src/requirements-cross.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-cffi==1.14.1
-MarkupSafe==1.1.1
-msgpack==0.6.2
-simplejson==3.10.0
-zope.interface==5.1.0
diff --git a/spk/ffsync/src/requirements.txt b/spk/ffsync/src/requirements.txt
index a8e78fc0879..995df7d7573 100644
--- a/spk/ffsync/src/requirements.txt
+++ b/spk/ffsync/src/requirements.txt
@@ -7,6 +7,7 @@ appdirs==1.4.3
boto==2.49.0
CacheControl==0.12.6
certifi==2019.11.28
+cffi==1.14.1
chardet==3.0.4
colorama==0.4.3
configparser==3.5.0
@@ -23,7 +24,9 @@ konfig==1.1
linecache2==1.0.0
lockfile==0.12.2
Mako==1.1.2
+MarkupSafe==1.1.1
mozsvc==0.9
+msgpack==0.6.2
packaging==20.3
Paste==3.4.0
PasteDeploy==2.1.0
@@ -42,6 +45,7 @@ pytoml==0.1.21
repoze.lru==0.7
requests==2.13.0
retrying==1.3.3
+simplejson==3.10.0
#six==1.14.0
#SQLAlchemy==1.1.5
#testfixtures==6.14.0
@@ -56,6 +60,7 @@ WebOb==1.4.1
zope.component==4.2.1
zope.deprecation==4.4.0
zope.event==4.4
+zope.interface==5.1.0
https://github.com/mozilla-services/tokenserver/archive/1.5.11.tar.gz
https://github.com/mozilla-services/server-syncstorage/archive/1.8.0.tar.gz
diff --git a/spk/flexget/Makefile b/spk/flexget/Makefile
index 04f824975f1..845f0d65327 100644
--- a/spk/flexget/Makefile
+++ b/spk/flexget/Makefile
@@ -1,17 +1,16 @@
SPK_NAME = flexget
SPK_VERS = 3.1.129
-SPK_REV = 10
+SPK_REV = 11
SPK_ICON = src/${SPK_NAME}.png
-BUILD_DEPENDS = cross/python38 cross/setuptools cross/pip cross/wheel
-DEPENDS = cross/poetry
-WHEELS = src/requirements-cross.txt src/requirements.txt
-SPK_DEPENDS = "python38"
+BUILD_DEPENDS = cross/python310
+WHEELS = src/requirements-crossenv.txt src/requirements-pure.txt
+SPK_DEPENDS = "python310"
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.
DISPLAY_NAME = FlexGet
-CHANGELOG = "1. Update FlexGet to version 3.1.129.
2. Include transmission-rpc again."
+CHANGELOG = "1. Update FlexGet to version 3.1.129.
2. Include transmission-rpc again.
3. Update to python 3.10"
STARTABLE = yes
HOMEPAGE = https://flexget.com/
diff --git a/spk/flexget/src/requirements-cross.txt b/spk/flexget/src/requirements-cross.txt
deleted file mode 100644
index 202f0584bb7..00000000000
--- a/spk/flexget/src/requirements-cross.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-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-crossenv.txt b/spk/flexget/src/requirements-crossenv.txt
new file mode 100644
index 00000000000..4a329534545
--- /dev/null
+++ b/spk/flexget/src/requirements-crossenv.txt
@@ -0,0 +1,62 @@
+# This file is a copy of the https://raw.githubusercontent.com/Flexget/Flexget/v3.1.129/requirements.txt file
+# including the https://raw.githubusercontent.com/Flexget/Flexget/v3.1.129/requirements.in
+# Additionally added the flexget and the transmission-rpc packages.
+# plumbum and rpyc packages are adjusted as the proposed versions are not accepted.
+
+aniso8601==9.0.1
+APScheduler==3.7.0
+#attrs==20.3.0 ==> python310
+babelfish==0.5.5
+#beautifulsoup4==4.10.0 ==> python310
+Brotli==1.0.9
+#certifi==2020.12.5 ==> python310
+#chardet==4.0.0 ==> python310
+CherryPy==18.6.0
+#click==7.1.2 ==> python310
+colorama==0.4.4
+colorclass==2.2.0
+feedparser==6.0.2
+#Flask==1.1.2 ==> python310
+Flask-Compress==1.9.0
+Flask-Cors==3.0.10
+Flask-Login==0.5.0
+Flask-RESTful==0.3.8
+flask-restx==0.4.0
+FlexGet==3.1.129
+#greenlet==1.0.0 ==> python310
+guessit==3.2.0
+#html5lib==1.1 ==> python310
+#idna==2.10 ==> python310
+#itsdangerous==1.1.0 ==> python310
+#Jinja2==2.11.3 ==> python310
+loguru==0.5.3
+#MarkupSafe==2.0.0 ==> python310
+more-itertools==8.7.0
+plumbum==1.6.9
+#plumbum==1.7.0
+#poetry==1.1.11 ==> python310
+progressbar==2.5
+#psutil==5.8.0 ==> python310
+pynzb==0.1.0
+#pyparsing==2.4.7 ==> python310
+pyrsistent==0.17.3
+PyRSS2Gen==1.1
+#pytz==2021.1 ==> python310
+#PyYAML==5.4.1 ==> python310
+rebulk==3.0.1
+#requests==2.25.1 ==> python310
+rpyc==4.1.2
+#rpyc==5.0.1
+sgmllib3k==1.0.0
+#six==1.16.0 ==> python310
+soupsieve==2.2.1
+#SQLAlchemy==1.4.15 ==> python310
+terminaltables==3.1.0
+transmission-rpc==3.2.5
+typing-extensions==3.10.0.0
+#tzlocal==2.1 ==> python310
+#urllib3==1.26.5 ==> python310
+#webencodings==0.5.1 ==> python310
+#Werkzeug==1.0.1 ==> python310
+zc.lockfile==2.0
+zxcvbn-python==4.4.24
diff --git a/spk/flexget/src/requirements-pure.txt b/spk/flexget/src/requirements-pure.txt
new file mode 100644
index 00000000000..dabbcdd7ecf
--- /dev/null
+++ b/spk/flexget/src/requirements-pure.txt
@@ -0,0 +1,13 @@
+# Wheels that absolutely needs
+# to be managed as pure-python
+cheroot==8.5.2
+#importlib-metadata==4.0.1 ==> python310
+jaraco.classes==3.2.1
+jaraco.collections==3.3.0
+jaraco.functools==3.3.0
+jaraco.text==3.5.0
+jsonschema==3.2.0
+portend==2.7.1
+#python-dateutil==2.8.1 ==> python310
+tempora==4.0.2
+#zipp==3.4.1 ==> python310
diff --git a/spk/flexget/src/requirements.txt b/spk/flexget/src/requirements.txt
deleted file mode 100644
index d58805bc4ac..00000000000
--- a/spk/flexget/src/requirements.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-# This file is a copy of the https://raw.githubusercontent.com/Flexget/Flexget/v3.1.129/requirements.txt file
-# including the https://raw.githubusercontent.com/Flexget/Flexget/v3.1.129/requirements.in
-# Additionally added the flexget and the transmission-rpc packages.
-# plumbum and rpyc packages are adjusted as the proposed versions are not accepted.
-
-aniso8601==9.0.1
-APScheduler==3.7.0
-attrs==20.3.0
-babelfish==0.5.5
-beautifulsoup4==4.10.0
-certifi==2020.12.5
-chardet==4.0.0
-cheroot==8.5.2
-CherryPy==18.6.0
-colorama==0.4.4
-feedparser==6.0.2
-Flask==1.1.2
-Flask-Compress==1.9.0
-Flask-Cors==3.0.10
-Flask-Login==0.5.0
-Flask-RESTful==0.3.8
-flask-restx==0.4.0
-FlexGet==3.1.129
-guessit==3.2.0
-html5lib==1.1
-idna==2.10
-importlib-metadata==4.0.1
-itsdangerous==1.1.0
-jaraco.classes==3.2.1
-jaraco.collections==3.3.0
-jaraco.functools==3.3.0
-jaraco.text==3.5.0
-Jinja2==2.11.3
-jsonschema==3.2.0
-loguru==0.5.3
-more-itertools==8.7.0
-#plumbum==1.7.0
-plumbum==1.6.9
-portend==2.7.1
-pyparsing==2.4.7
-python-dateutil==2.8.1
-pytz==2021.1
-rebulk==3.0.1
-requests==2.25.1
-#rpyc==5.0.1
-rpyc==4.1.2
-six==1.16.0
-soupsieve==2.2.1
-tempora==4.0.2
-transmission-rpc==3.2.5
-typing-extensions==3.10.0.0
-tzlocal==2.1
-urllib3==1.26.5
-webencodings==0.5.1
-Werkzeug==1.0.1
-zc.lockfile==2.0
-zipp==3.4.1
diff --git a/spk/flexget/src/service-setup.sh b/spk/flexget/src/service-setup.sh
index b33b59ae4cb..2de4b841275 100644
--- a/spk/flexget/src/service-setup.sh
+++ b/spk/flexget/src/service-setup.sh
@@ -1,4 +1,4 @@
-PYTHON_DIR="/var/packages/python3/target/bin"
+PYTHON_DIR="/var/packages/python310/target/bin"
VIRTUALENV="${PYTHON_DIR}/python3 -m venv"
PATH="${SYNOPKG_PKGDEST}/env/bin:${SYNOPKG_PKGDEST}/bin:${PYTHON_DIR}:${PATH}"
diff --git a/spk/homeassistant/Makefile b/spk/homeassistant/Makefile
index 5e31993374f..27de262e8ce 100644
--- a/spk/homeassistant/Makefile
+++ b/spk/homeassistant/Makefile
@@ -1,21 +1,17 @@
SPK_NAME = homeassistant
SPK_VERS = 2021.9.7
-SPK_REV = 15
+SPK_REV = 17
SPK_ICON = src/${SPK_NAME}.png
-SPK_DEPENDS = "python38"
+SPK_DEPENDS = "python310"
-BUILD_DEPENDS = cross/python38 cross/setuptools cross/pip cross/wheel
+BUILD_DEPENDS = cross/python310
-DEPENDS += cross/libyaml cross/bcrypt cross/cryptography cross/pycrypto cross/pycryptodomex cross/pycryptodome
DEPENDS += cross/gevent
-DEPENDS += cross/homeassistant.pillow
# for iqvia
DEPENDS += cross/numpy
# for python-libnmap
DEPENDS += cross/nmap
-# for mobile_app
-DEPENDS += cross/PyNaCl
# for tradfri
DEPENDS += cross/dtlssocket
# for denonavr
@@ -24,7 +20,7 @@ DEPENDS += cross/asyncstdlib
DEPENDS += cross/ujson
# Include cross compiled wheels only, the package installer downloads pure python wheels at installation time.
-WHEELS = src/requirements-cross.txt
+WHEELS = src/requirements-crossenv.txt
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/postinst_components_requirements.txt b/spk/homeassistant/src/postinst_components_requirements.txt
index d3633809de5..a085e2cd2cf 100644
--- a/spk/homeassistant/src/postinst_components_requirements.txt
+++ b/spk/homeassistant/src/postinst_components_requirements.txt
@@ -34,7 +34,7 @@ authcaptureproxy==1.0.2
authlib==0.15.4
axis==44
backoff==1.11.1
-beautifulsoup4==4.9.3
+#beautifulsoup4==4.9.3 ==> python310
bellows==0.27.0
bidict==0.21.2
bimmer-connected==0.7.20
@@ -146,7 +146,7 @@ stringcase==1.2.0
tenacity==8.0.1
teslajsonpy==0.18.3
typing-inspect==0.7.1
-tzlocal==3.0
+#tzlocal==3.0 ==> python310
WSDiscovery==2.0.0
xmltodict==0.12.0
yalexs==1.1.13
diff --git a/spk/homeassistant/src/postinst_default_config_requirements.txt b/spk/homeassistant/src/postinst_default_config_requirements.txt
index 03004ac5480..87a5fd7cd61 100644
--- a/spk/homeassistant/src/postinst_default_config_requirements.txt
+++ b/spk/homeassistant/src/postinst_default_config_requirements.txt
@@ -15,11 +15,11 @@ awesomeversion==21.4.0
### bcrypt==3.1.7
boto3==1.18.18
botocore==1.21.18
-certifi==2021.5.30
+#certifi==2021.5.30 ==> python310
### cffi==1.14.1
chardet==4.0.0
### ciso8601 @ file:///volume1/%40appstore/homeassistant/share/wheelhouse/ciso8601-2.1.3-cp38-none-any.whl
-click==7.1.2
+#click==7.1.2 ==> python310
### cryptography @ file:///volume1/%40appstore/homeassistant/share/wheelhouse/cryptography-3.3.2-cp38-none-any.whl
deepmerge==0.3.0
defusedxml==0.7.1
@@ -37,9 +37,9 @@ home-assistant-frontend==20210830.0
homeassistant==2021.9.7
httpcore==0.13.6
httpx==0.19.0
-idna==2.9
+#idna==2.9 ==> python310
ifaddr==0.1.7
-Jinja2==3.0.1
+#Jinja2==3.0.1 ==> python310
jmespath==0.10.0
jose==1.0.0
josepy==1.8.0
@@ -53,14 +53,14 @@ ply==3.11
py-synologydsm-api==1.0.4
pyasn1==0.4.8
pycognito==2021.3.1
-pycparser==2.19
+#pycparser==2.19 ==> python310
### pycrypto==2.6.1
### pycryptodomex @ file:///volume1/%40appstore/homeassistant/share/wheelhouse/pycryptodomex-3.10.1-cp35-abi3-linux_aarch64.whl
pyipp==0.11.0
### PyJWT @ file:///volume1/%40appstore/homeassistant/share/wheelhouse/PyJWT-1.7.1-py2.py3-none-any.whl
PyMetno==0.8.3
### PyNaCl @ file:///volume1/%40appstore/homeassistant/share/wheelhouse/PyNaCl-1.4.0-cp38-cp38-linux_aarch64.whl
-pyOpenSSL==20.0.1
+#pyOpenSSL==20.0.1 ==> python310
pyotp==2.3.0
PyQRCode==1.2.1
pyRFC3339==1.1
@@ -80,10 +80,10 @@ python-jose==3.2.0
python-miio==0.5.8
python-slugify==4.0.1
PythonDNS==0.1
-pytz==2021.1
+#pytz==2021.1 ==> python310
### PyYAML @ file:///volume1/%40appstore/homeassistant/share/wheelhouse/PyYAML-5.4.1-cp38-cp38-linux_aarch64.whl
pyudev==0.22.0
-requests==2.25.1
+#requests==2.25.1 ==> python310
requests-toolbelt==0.9.1
rfc3986==1.5.0
rsa==4.7.2
@@ -97,8 +97,8 @@ spotipy==2.18.0
### SQLAlchemy @ file:///volume1/%40appstore/homeassistant/share/wheelhouse/SQLAlchemy-1.4.23-cp38-cp38-linux_aarch64.whl
text-unidecode==1.3
typing-extensions==3.10.0.0
-Unidecode==1.2.0
-urllib3==1.26.6
+#Unidecode==1.2.0 ==> python310
+#urllib3==1.26.6 ==> python310
voluptuous==0.12.1
voluptuous-serialize==2.4.0
### yarl @ file:///volume1/%40appstore/homeassistant/share/wheelhouse/yarl-1.6.3-cp38-cp38-linux_aarch64.whl
diff --git a/spk/homeassistant/src/requirements-cross.txt b/spk/homeassistant/src/requirements-crossenv.txt
similarity index 50%
rename from spk/homeassistant/src/requirements-cross.txt
rename to spk/homeassistant/src/requirements-crossenv.txt
index 39436fe371b..9e3fabf547a 100644
--- a/spk/homeassistant/src/requirements-cross.txt
+++ b/spk/homeassistant/src/requirements-crossenv.txt
@@ -1,6 +1,6 @@
# Home Assistant core
# requirements are splitted into multiple files
-# - requirements.txt (this file, containing requirements that need cross compilation)
+# - requirements-cross.txt (this file, containing requirements that need cross compilation)
# - postinst_default_requirements.txt (requirements for default_config)
# - postinst_integration_requirements.txt (requirements for integrations)
# postinst requirements must be pure python wheels.
@@ -10,25 +10,27 @@
# Home Assistant Core
aiohttp==3.7.4.post0
-#astral==2.2
-#async_timeout==3.0.1
-#attrs==21.2.0
-#awesomeversion==21.4.0
-backports.zoneinfo;python_version<"3.9"
-bcrypt==3.1.7
-#certifi==2021.5.30
+# astral==2.2
+# async_timeout==3.0.1
+# attrs==21.2.0 ==> python310
+# awesomeversion==21.4.0
+# backports.zoneinfo;python_version<"3.9" ==> Does not build with python310
+# bcrypt==3.1.7 ==> python310
+# certifi==2021.5.30 ==> python310
ciso8601==2.1.3
-#httpx==0.19.0
-## jinja2==3.0.1 # fails to build, moved to postinst_default_config_requirements.txt
+# cryptography==3.3.2 ==> python310
+# httpx==0.19.0
+# jinja2==3.0.1 # fails to build, moved to postinst_default_config_requirements.txt
+# numpy==1.21.4 # requires to be built as cross/numpy
PyJWT==1.7.1
-## cryptography==3.3.2
+# PyNaCl ==> python310 # for mobile_app
## pip>=8.0.3,<20.3
-#python-slugify==4.0.1
-pyyaml==5.4.1
-#requests==2.25.1
-ruamel.yaml==0.15.100
-#voluptuous==0.12.1
-#voluptuous-serialize==2.4.0
+# python-slugify==4.0.1
+# pyyaml==5.4.1 ==> python310
+# requests==2.25.1 ==> python310
+# ruamel.yaml==0.15.100 ==> python310
+# voluptuous==0.12.1
+# voluptuous-serialize==2.4.0
yarl==1.6.3
# homeassistant.components.frontend
@@ -38,12 +40,12 @@ yarl==1.6.3
#hass-nabucasa==0.46.0
### other default dependencies that need cross compiled wheel
-MarkupSafe==2.0.1
+# MarkupSafe==2.0.1 ==> python310
aiokafka==0.6.0
-cffi==1.14.1
-greenlet==1.1.1
+# cffi==1.14.1 ==> python310
+# greenlet==1.1.1 ==> python310
multidict==5.1.0
-sqlalchemy==1.4.23
+# sqlalchemy==1.4.23 ==> python310
# Failed to build: av clx-sdk-xms homeassistant-pyozw python-twitch-client
@@ -61,18 +63,17 @@ sqlalchemy==1.4.23
ephem==3.7.7.0
-###gevent==21.8.0
-guppy3==3.1.0
+# gevent==21.8.0
+guppy3==3.1.2
###homeassistant-pyozw==0.1.10 # deprecated open-z-wave, fails to cross compile
-netifaces==0.11.0
-psutil==5.8.0
+# netifaces==0.11.0 ==> python310
+# psutil==5.8.0 ==> python310
pyads==3.2.2
-pycares==4.0.0
-# pybluez==0.22 # for fjaraskupan fails to build
-# pycocotools==2.0.1 # fails to cross compile (aarch64)
+# pycares==4.0.0 ==> python310
+# pybluez==0.22 # for fjaraskupan fails to build
+# pycocotools==2.0.1 # fails to cross compile (aarch64)
pyitachip2ir==0.0.7
-regex==2021.8.3
-#ujson==4.2.0 # dependency of pyflunearyou
+# regex==2021.8.3 ==> python310
websockets==9.1
-# pandas==1.3.1 # depends on numpy...
+# pandas==1.3.1 # depends on numpy...
wrapt==1.12.1
diff --git a/spk/homeassistant/src/service-setup.sh b/spk/homeassistant/src/service-setup.sh
index b1d14280cbe..9595676de71 100644
--- a/spk/homeassistant/src/service-setup.sh
+++ b/spk/homeassistant/src/service-setup.sh
@@ -3,7 +3,7 @@
# - installer
# - start-stop-status
-PYTHON_DIR="/var/packages/python38/target/bin"
+PYTHON_DIR="/var/packages/python310/target/bin"
VIRTUALENV="${PYTHON_DIR}/python3 -m venv"
PATH="${SYNOPKG_PKGDEST}/env/bin:${SYNOPKG_PKGDEST}/bin:${PYTHON_DIR}:${PATH}"
@@ -13,17 +13,6 @@ SVC_CWD="${SYNOPKG_PKGVAR}"
HOME="${SYNOPKG_PKGVAR}"
-rename_file ()
-{
- _from=$1
- _to=$2
- if [ ! "${_from}" -ef "${_to}" ]; then
- echo "- rename ${_from##*/} to ${_to##*/}"
- mv -f ${_from} ${_to}
- fi
-}
-
-
service_postinst ()
{
# Create a Python virtualenv
@@ -37,19 +26,6 @@ service_postinst ()
separator="===================================================="
wheelhouse=${SYNOPKG_PKGDEST}/share/wheelhouse
- echo ${separator}
- echo "Rename arch specific wheels"
- uname_m=$(uname -m)
- for wheel_file in ${wheelhouse}/pycryptodome*-none-any.whl ; do
- new_wheel_file=$(echo ${wheel_file} | sed "s|cp35-none-any|cp35-abi3-linux_${uname_m}|g")
- rename_file "${wheel_file}" "${new_wheel_file}"
- done
- none_name="-cp38-none-any.whl"
- arch_name="-cp38-cp38-linux_${uname_m}.whl"
- for wheel_file in ${wheelhouse}/*${none_name} ; do
- rename_file "${wheel_file}" "${wheel_file%${none_name}}${arch_name}"
- done
-
echo ${separator}
echo "Install packages from wheels"
${SYNOPKG_PKGDEST}/env/bin/pip install --no-deps --no-input --no-index ${wheelhouse}/*.whl
diff --git a/spk/mercurial/Makefile b/spk/mercurial/Makefile
index 9c8c10307ac..e20abd8554d 100644
--- a/spk/mercurial/Makefile
+++ b/spk/mercurial/Makefile
@@ -1,19 +1,19 @@
SPK_NAME = mercurial
SPK_VERS = 5.7.1
-SPK_REV = 7
+SPK_REV = 8
SPK_ICON = src/mercurial.png
-BUILD_DEPENDS = cross/python38 cross/setuptools cross/pip cross/wheel
+BUILD_DEPENDS = cross/python310
BUILD_DEPENDS += cross/$(SPK_NAME)
WHEELS = src/requirements.txt
-SPK_DEPENDS = "python38"
+SPK_DEPENDS = "python310"
MAINTAINER = Dr-Bean
DESCRIPTION = Mercurial is a free, distributed source control management tool
STARTABLE = no
DISPLAY_NAME = Mercurial
-CHANGELOG = Update mercurial to 5.7.1 with python 3.8
+CHANGELOG = Update mercurial to 5.7.1 with python 3.10
HOMEPAGE = https://www.mercurial-scm.org/
LICENSE = MPL1.1
diff --git a/spk/mercurial/src/service-setup.sh b/spk/mercurial/src/service-setup.sh
index 4bbe263cabf..4acd60f0082 100644
--- a/spk/mercurial/src/service-setup.sh
+++ b/spk/mercurial/src/service-setup.sh
@@ -1,5 +1,5 @@
-PYTHON_DIR="/var/packages/python38/target/bin"
+PYTHON_DIR="/var/packages/python310/target/bin"
VIRTUALENV="${PYTHON_DIR}/python3 -m venv"
PATH="${SYNOPKG_PKGDEST}/env/bin:${SYNOPKG_PKGDEST}/bin:${PYTHON_DIR}:${PATH}"
diff --git a/spk/octoprint/Makefile b/spk/octoprint/Makefile
index e34f66c7a07..3248a623b40 100644
--- a/spk/octoprint/Makefile
+++ b/spk/octoprint/Makefile
@@ -1,25 +1,25 @@
SPK_NAME = octoprint
SPK_VERS = 1.7.2
-SPK_REV = 6
+SPK_REV = 7
SPK_ICON = src/octoprint.png
DSM_UI_DIR = app
-BUILD_DEPENDS = cross/python38 cross/setuptools cross/pip cross/wheel
+BUILD_DEPENDS = cross/python310
DEPENDS = cross/octoprint
-WHEELS = src/requirements-cross.txt src/requirements.txt
+WHEELS = src/requirements.txt
-SPK_DEPENDS = "python38"
+SPK_DEPENDS = "python310"
MAINTAINER = SynoCommunity
DESCRIPTION = The snappy web interface for your 3D printer.
SERVICE_PORT = 8088
-ADMIN_PORT = $(SERVICE_PORT)
+ADMIN_PORT = $(SERVICE_PORT)
DISPLAY_NAME = OctoPrint
HOMEPAGE = https://octoprint.org/
LICENSE = AGPLv3
-CHANGELOG = "Update OctoPrint to v1.7.2 and python38"
+CHANGELOG = "Update OctoPrint to v1.7.2 and Python 3.10"
# SERVICE_COMMAND is in src/service-setup.sh
STARTABLE = yes
diff --git a/spk/octoprint/src/requirements-cross.txt b/spk/octoprint/src/requirements-cross.txt
deleted file mode 100644
index 10aa3d06114..00000000000
--- a/spk/octoprint/src/requirements-cross.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-# all requirements are taken from the list "INSTALL_REQUIRES" in the
-# original setup.py at: https://github.com/OctoPrint/OctoPrint/blob/master/setup.py
-# this file contains the wheels to cross compile only
-
-MarkupSafe==1.1.1
-netifaces==0.11.0
-psutil==5.8.0
-PyYAML==5.4.1
-regex==2021.10.23
-tornado==6.1
-wrapt==1.12.1
diff --git a/spk/octoprint/src/requirements.txt b/spk/octoprint/src/requirements.txt
index 767ccf54d4d..dfcc712b6a7 100644
--- a/spk/octoprint/src/requirements.txt
+++ b/spk/octoprint/src/requirements.txt
@@ -1,38 +1,44 @@
# all requirements are taken from the list "INSTALL_REQUIRES" in the
# original setup.py at: https://github.com/OctoPrint/OctoPrint/blob/master/setup.py
-# this file contains the pure python wheels only
-Flask==1.1.4
+#Flask==1.1.4 ==> python310
Flask_Assets==2.0
Flask_Babel==1.0.0
Flask_Login==0.5.0
-Jinja2==2.11.3
+#Jinja2==2.11.3 ==> python310
Markdown==3.1.1
OctoPrint_FileCheck==2021.2.23
OctoPrint_FirmwareCheck==2021.10.11
OctoPrint_PiSupport==2021.10.28
-Unidecode==1.3.2
-Werkzeug==1.0.1
+#Unidecode==1.3.2 ==> python310
+#Werkzeug==1.0.1 ==> python310
blinker==1.4
cachelib==0.1.1
-click==7.1.2
+#click==7.1.2 ==> python310
colorlog==5.0.1
emoji==1.6.1
feedparser==6.0.8
filetype==1.0.8
-future==0.18.2
+#future==0.18.2 ==> python310
immutabledict==2.2.1
-itsdangerous==1.1.0
+#itsdangerous==1.1.0 ==> python310
+#MarkupSafe==1.1.1 ==> python310
netaddr==0.8.0
+#netifaces==0.11.0 ==> python310
pathvalidate==2.5.0
+#psutil==5.8.0 ==> python310
pkginfo==1.7.1
pylru==1.2.0
pyserial==3.5
-requests==2.26.0
+#PyYAML==5.4.1 ==> python310
+#regex==2021.10.23 ==> python310
+#requests==2.26.0 ==> python310
sarge==0.1.6
semantic_version==2.8.5
sentry_sdk==1.4.3
+tornado==6.1
watchdog==0.10.4
websocket_client==0.59.0
+wrapt==1.12.1
zeroconf==0.33.4
zipstream_new==1.1.8
diff --git a/spk/octoprint/src/service-setup.sh b/spk/octoprint/src/service-setup.sh
index 4168b57e741..1316802baac 100644
--- a/spk/octoprint/src/service-setup.sh
+++ b/spk/octoprint/src/service-setup.sh
@@ -1,5 +1,5 @@
-PYTHON_DIR="/var/packages/python38/target/bin"
+PYTHON_DIR="/var/packages/python310/target/bin"
VIRTUALENV="${PYTHON_DIR}/python3 -m venv"
PATH="${SYNOPKG_PKGDEST}/env/bin:${SYNOPKG_PKGDEST}/bin:${PYTHON_DIR}:${PATH}"
diff --git a/spk/python2/Makefile b/spk/python2/Makefile
index 299d40cde7d..6c08f30759a 100644
--- a/spk/python2/Makefile
+++ b/spk/python2/Makefile
@@ -16,7 +16,7 @@ DEPENDS += cross/lxml cross/m2crypto cross/msgpack-python cross/pillow_py2
DEPENDS += cross/pyalsa cross/pyaudio cross/pycrypto cross/pycurl
DEPENDS += cross/pyyaml cross/pyzmq cross/uwsgi
-WHEELS = src/requirements.txt src/requirements-cross.txt
+WHEELS = src/requirements.txt
MAINTAINER = Safihre
diff --git a/spk/python2/src/requirements-cross.txt b/spk/python2/src/requirements-cross.txt
deleted file mode 100644
index 98545469f77..00000000000
--- a/spk/python2/src/requirements-cross.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-## Modules cross-compiled via spksrc.python-wheel.mk
-## These modules require patches or have cross dependencies
-# Included for reference
-#lxml==4.5.0
-#m2crypto==0.25.1
-#msgpack-python==0.5.6
-#pillow==5.3.0
-#pyalsa==1.0.29
-#pyaudio==0.2.9
-#pycrypto==2.6.1
-#pycurl==7.43.0
-#PyYAML==5.4.1
-#pyzmq==16.0.2
-#uwsgi==2.0.14
-#pycparser==2.19
-
-## Cross-compiled via spksrc.wheel.mk
-markupsafe==1.1.1
-psutil==5.7.0
-pymongo==3.10.1
-sqlalchemy==1.3.17
-
-# Cheetah
-cheetah==2.4.4
-
-# Cryptography/pyOpenSSL/M2Crypto dependencies
-# These also depends on cross/cffi and cross/openssl,
-# which are installed through cross/bcrypt
-#cryptography==2.9.2 now built as buildtime dependency
-
-# Twisted and dependencies
-twisted==20.3.0
-zope.interface==5.1.0
-
-# pillow dependencies
-olefile==0.46
diff --git a/spk/python2/src/requirements.txt b/spk/python2/src/requirements.txt
index b09858257b6..28130e36fb9 100644
--- a/spk/python2/src/requirements.txt
+++ b/spk/python2/src/requirements.txt
@@ -1,3 +1,40 @@
+## Modules cross-compiled via spksrc.python-wheel.mk
+## These modules require patches or have cross dependencies
+# Included for reference
+#lxml==4.5.0
+#m2crypto==0.25.1
+#msgpack-python==0.5.6
+#pillow==5.3.0
+#pyalsa==1.0.29
+#pyaudio==0.2.9
+#pycrypto==2.6.1
+#pycurl==7.43.0
+#PyYAML==5.4.1
+#pyzmq==16.0.2
+#uwsgi==2.0.14
+#pycparser==2.19
+
+## Cross-compiled via spksrc.wheel.mk
+markupsafe==1.1.1
+psutil==5.7.0
+pymongo==3.10.1
+sqlalchemy==1.3.17
+
+# Cheetah
+cheetah==2.4.4
+
+# Cryptography/pyOpenSSL/M2Crypto dependencies
+# These also depends on cross/cffi and cross/openssl,
+# which are installed through cross/bcrypt
+#cryptography==2.9.2 now built as buildtime dependency
+
+# Twisted and dependencies
+twisted==20.3.0
+zope.interface==5.1.0
+
+# pillow dependencies
+olefile==0.46
+
# General support
six==1.16.0
virtualenv==16.7.10
diff --git a/spk/python3/Makefile b/spk/python3/Makefile
index 0f1d0192c0b..80fab07d5eb 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 = 20
+SPK_REV = 21
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-cross.txt src/requirements.txt
+WHEELS = src/requirements-crossenv.txt src/requirements-pure.txt
MAINTAINER = Allan Clark
DESCRIPTION = Python Programming Language.
diff --git a/spk/python3/src/requirements-cross.txt b/spk/python3/src/requirements-crossenv.txt
similarity index 69%
rename from spk/python3/src/requirements-cross.txt
rename to spk/python3/src/requirements-crossenv.txt
index d1193ee8348..bfc4c6e9d83 100644
--- a/spk/python3/src/requirements-cross.txt
+++ b/spk/python3/src/requirements-crossenv.txt
@@ -1,3 +1,18 @@
+## default
+appdirs==1.4.4
+distlib==0.3.3
+markupsafe==2.0.1
+poetry==1.1.11
+psutil==5.8.0
+pyopenssl==21.0.0
+six==1.16.0
+sqlalchemy==1.4.26
+zope.interface==5.4.0
+
+# cryptography dependencies
+idna==3.3
+ipaddress==1.0.23
+
## Modules cross-compiled via spksrc.python-wheel.mk
# Included for reference
#lxml==4.6.3
@@ -7,12 +22,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
diff --git a/spk/python3/src/requirements-pure.txt b/spk/python3/src/requirements-pure.txt
new file mode 100644
index 00000000000..ef89b77c0c1
--- /dev/null
+++ b/spk/python3/src/requirements-pure.txt
@@ -0,0 +1,8 @@
+# Wheels that absolutely needs
+# to be managed as pure-python
+filelock==3.0.12
+importlib-resources==5.2.2
+importlib-metadata==4.8.1
+platformdirs==2.4.0
+virtualenv==20.4.6
+zipp==3.6.0
diff --git a/spk/python3/src/requirements.txt b/spk/python3/src/requirements.txt
deleted file mode 100644
index b2620325dd3..00000000000
--- a/spk/python3/src/requirements.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-## Pure-python via spksrc.wheel.mk
-appdirs==1.4.4
-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
-
-# cryptography dependencies
-idna==3.3
-ipaddress==1.0.23
diff --git a/spk/python310/Makefile b/spk/python310/Makefile
index 7da98ae5373..8469040b2bc 100644
--- a/spk/python310/Makefile
+++ b/spk/python310/Makefile
@@ -1,10 +1,15 @@
SPK_NAME = python310
SPK_VERS = 3.10.0
SPK_VERS_MAJOR_MINOR = $(word 1,$(subst ., ,$(SPK_VERS))).$(word 2,$(subst ., ,$(SPK_VERS)))
-SPK_REV = 1
+SPK_REV = 3
SPK_ICON = src/python3.png
DEPENDS = cross/$(SPK_NAME)
+# Mandatory binaries for wheel
+# setup during package install
+DEPENDS += cross/setuptools cross/pip cross/wheel
+
+# Required for misc wheels
DEPENDS += cross/libxml2
DEPENDS += cross/libxslt
DEPENDS += cross/libyaml
@@ -21,7 +26,11 @@ ENV += SODIUM_INSTALL=system
# https://github.com/python-pillow/Pillow/issues/5799
DEPENDS += cross/pillow
-WHEELS = src/requirements-cross.txt src/requirements.txt
+# Required for pycares
+DEPENDS += cross/c-ares
+ENV += PYCARES_USE_SYSTEM_LIB=1
+
+WHEELS = src/requirements-crossenv.txt src/requirements-pure.txt src/requirements-abi3.txt
MAINTAINER = SynoCommunity
DESCRIPTION = Python Programming Language.
diff --git a/spk/python310/src/requirements-abi3.txt b/spk/python310/src/requirements-abi3.txt
new file mode 100644
index 00000000000..1b3382f6bbe
--- /dev/null
+++ b/spk/python310/src/requirements-abi3.txt
@@ -0,0 +1,2 @@
+pycryptodome==3.11.0
+pycryptodomex==3.11.0
diff --git a/spk/python310/src/requirements-cross.txt b/spk/python310/src/requirements-cross.txt
deleted file mode 100644
index 6adc36024e9..00000000000
--- a/spk/python310/src/requirements-cross.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-## Cross-compiled via spksrc.wheel.mk
-bcrypt==3.2.0
-cffi==1.15.0
-cryptography==3.3.2
-greenlet==1.1.2
-immutables==0.16
-lxml==4.6.3
-markupsafe==2.0.1
-msgpack-python==0.5.6
-psutil==5.8.0
-pycurl==7.44.1
-PyNaCl==1.4.0
-PyYAML==6.0
-sqlalchemy==1.4.26
-zope.interface==5.4.0
diff --git a/spk/python310/src/requirements.txt b/spk/python310/src/requirements-crossenv.txt
similarity index 57%
rename from spk/python310/src/requirements.txt
rename to spk/python310/src/requirements-crossenv.txt
index 21d548b89d2..0da0ce13c78 100644
--- a/spk/python310/src/requirements.txt
+++ b/spk/python310/src/requirements-crossenv.txt
@@ -1,50 +1,59 @@
-# Basic wheels
+# basic default wheels
setuptools==58.3.0
pip==21.3.1
wheel==0.37.0
-# cryptography dependencies
-idna==3.3
-
-# Pure-python via spksrc.wheel.mk
# commonly used wheels
appdirs==1.4.4
attrs==21.2.0
+bcrypt==3.2.0
beautifulsoup4==4.10.0
certifi==2021.10.8
+cffi==1.15.0
chardet==4.0.0
+charset-normalizer==2.0.7
click==8.0.3
+cryptography==3.3.2
distlib==0.3.3
-filelock==3.3.2
Flask==2.0.2
future==0.18.2
+greenlet==1.1.2
html5lib==1.1
idna==3.3
-importlib-metadata==4.8.1
-importlib-resources==5.3.0
+immutables==0.16
+ipaddress==1.0.23
itsdangerous==2.0.1
Jinja2==3.0.2
+lxml==4.6.3
+MarkupSafe==2.0.1
+msgpack-python==0.5.6
+netifaces==0.11.0
olefile==0.46
oauthlib==3.1.1
packaging==21.0
paramiko==2.8.0
-platformdirs==2.4.0
+poetry==1.1.11
+psutil==5.8.0
pyasn1==0.4.8
+pycares==4.1.2
pycparser==2.20
-PyJWT==2.3.0
+pycurl==7.44.1
+#PyJWT==2.3.0 ==> some packages needs version < 2.0
+PyNaCl==1.4.0
pyOpenSSL==21.0.0
pyparsing==3.0.1
-python-dateutil==2.8.2
pytz==2021.3
+PyYAML==6.0
+regex==2021.11.2
requests==2.26.0
requests-oauthlib==1.3.0
requests-toolbelt==0.9.1
ruamel.yaml==0.17.16
six==1.16.0
-tzlocal==4.0.1
+sqlalchemy==1.4.26
+tzlocal==4.1
Unidecode==1.3.2
urllib3==1.26.7
-virtualenv==20.9.0
webencodings==0.5.1
Werkzeug==2.0.2
-zipp==3.6.0
+zope.interface==5.4.0
diff --git a/spk/python310/src/requirements-pure.txt b/spk/python310/src/requirements-pure.txt
new file mode 100644
index 00000000000..6962809a528
--- /dev/null
+++ b/spk/python310/src/requirements-pure.txt
@@ -0,0 +1,9 @@
+# Wheels that absolutely needs
+# to be managed as pure-python
+filelock==3.3.2
+importlib-metadata==4.8.1
+importlib-resources==5.3.0
+platformdirs==2.4.0
+python-dateutil==2.8.2
+virtualenv==20.9.0
+zipp==3.6.0
diff --git a/spk/python38/Makefile b/spk/python38/Makefile
index c73606eeec6..8f869cdabfd 100644
--- a/spk/python38/Makefile
+++ b/spk/python38/Makefile
@@ -1,7 +1,7 @@
SPK_NAME = python38
SPK_VERS = 3.8.12
SPK_VERS_MAJOR_MINOR = $(word 1,$(subst ., ,$(SPK_VERS))).$(word 2,$(subst ., ,$(SPK_VERS)))
-SPK_REV = 6
+SPK_REV = 7
SPK_ICON = src/python3.png
DEPENDS = cross/$(SPK_NAME)
@@ -13,7 +13,7 @@ DEPENDS += cross/lxml cross/msgpack-python
DEPENDS += cross/pycrypto cross/pycurl
DEPENDS += cross/pyyaml cross/ruamel.yaml cross/sqlite
-WHEELS = src/requirements-cross.txt src/requirements.txt
+WHEELS = src/requirements-crossenv.txt src/requirements-pure.txt
MAINTAINER = SynoCommunity
DESCRIPTION = Python Programming Language.
diff --git a/spk/python38/src/requirements-cross.txt b/spk/python38/src/requirements-crossenv.txt
similarity index 69%
rename from spk/python38/src/requirements-cross.txt
rename to spk/python38/src/requirements-crossenv.txt
index d1193ee8348..bfc4c6e9d83 100644
--- a/spk/python38/src/requirements-cross.txt
+++ b/spk/python38/src/requirements-crossenv.txt
@@ -1,3 +1,18 @@
+## default
+appdirs==1.4.4
+distlib==0.3.3
+markupsafe==2.0.1
+poetry==1.1.11
+psutil==5.8.0
+pyopenssl==21.0.0
+six==1.16.0
+sqlalchemy==1.4.26
+zope.interface==5.4.0
+
+# cryptography dependencies
+idna==3.3
+ipaddress==1.0.23
+
## Modules cross-compiled via spksrc.python-wheel.mk
# Included for reference
#lxml==4.6.3
@@ -7,12 +22,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
diff --git a/spk/python38/src/requirements-pure.txt b/spk/python38/src/requirements-pure.txt
new file mode 100644
index 00000000000..c7ed16cf732
--- /dev/null
+++ b/spk/python38/src/requirements-pure.txt
@@ -0,0 +1,8 @@
+# Wheels that absolutely needs
+# to be managed as pure-python
+filelock==3.3.1
+importlib-resources==5.2.2
+importlib-metadata==4.8.1
+platformdirs==2.4.0
+virtualenv==20.4.6
+zipp==3.6.0
diff --git a/spk/python38/src/requirements.txt b/spk/python38/src/requirements.txt
deleted file mode 100644
index 397e49a5ba8..00000000000
--- a/spk/python38/src/requirements.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-## Pure-python via spksrc.wheel.mk
-appdirs==1.4.4
-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
-
-# cryptography dependencies
-idna==3.3
-ipaddress==1.0.23
diff --git a/spk/rdiff-backup/Makefile b/spk/rdiff-backup/Makefile
index 1e507d63c29..60f7209a747 100644
--- a/spk/rdiff-backup/Makefile
+++ b/spk/rdiff-backup/Makefile
@@ -1,20 +1,20 @@
SPK_NAME = rdiff-backup
SPK_VERS = 2.0.3
-SPK_REV = 3
+SPK_REV = 4
SPK_ICON = src/rdiff-backup.png
-BUILD_DEPENDS = cross/python3
+BUILD_DEPENDS = cross/python310
DEPENDS = cross/librsync cross/attr cross/acl
-WHEELS = src/requirements-cross.txt
+WHEELS = src/requirements.txt
-SPK_DEPENDS = "python3>=3.7"
+SPK_DEPENDS = "python310"
MAINTAINER = SynoCommunity
DESCRIPTION = Reverse differential backup tool, over a network or locally.
STARTABLE = no
DISPLAY_NAME = rdiff-backup
-CHANGELOG = "Update to v2.0.3 and update dependencies for python3."
+CHANGELOG = "Update to v2.0.3 and update dependencies for Python 3.10"
HOMEPAGE = https://rdiff-backup.net/
LICENSE = GPLv2
diff --git a/spk/rdiff-backup/src/requirements-cross.txt b/spk/rdiff-backup/src/requirements.txt
similarity index 100%
rename from spk/rdiff-backup/src/requirements-cross.txt
rename to spk/rdiff-backup/src/requirements.txt
diff --git a/spk/rdiff-backup/src/service-setup.sh b/spk/rdiff-backup/src/service-setup.sh
index 4f8684620c7..26c800329c9 100644
--- a/spk/rdiff-backup/src/service-setup.sh
+++ b/spk/rdiff-backup/src/service-setup.sh
@@ -3,7 +3,7 @@
service_postinst ()
{
# Create a Python virtualenv
- /var/packages/python3/target/bin/python3 -m venv ${SYNOPKG_PKGDEST}/env
+ /var/packages/python310/target/bin/python3 -m venv ${SYNOPKG_PKGDEST}/env
# Install the wheels
wheelhouse=${SYNOPKG_PKGDEST}/share/wheelhouse
diff --git a/spk/sabnzbd/Makefile b/spk/sabnzbd/Makefile
index e23f5914530..c383af844d1 100644
--- a/spk/sabnzbd/Makefile
+++ b/spk/sabnzbd/Makefile
@@ -1,15 +1,15 @@
SPK_NAME = sabnzbd
SPK_VERS = 3.4.2
-SPK_REV = 50
+SPK_REV = 51
SPK_ICON = src/sabnzbd.png
-BUILD_DEPENDS = cross/python38 cross/setuptools cross/pip cross/wheel cross/poetry
+BUILD_DEPENDS = cross/python310
DEPENDS = cross/busybox cross/par2cmdline cross/unrar cross/p7zip cross/$(SPK_NAME)
-SPK_DEPENDS = "python38>=3.8.1-1"
+SPK_DEPENDS = "python310"
# To generate full requirements.txt, extend SABnzbd's own
# requirements.txt with the depedencies of cherrypy and cheroot
-WHEELS = src/requirements-cross.txt src/requirements.txt
+WHEELS = src/requirements-crossenv.txt src/requirements-pure.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.
@@ -17,7 +17,7 @@ DESCRIPTION_FRE = SABnzbd rend Usenet aussi simple et automatisé que possible.
DESCRIPTION_SPN = SABnzbd hace que Usenet sea lo más simple posible, automatizando todo lo que se puede. Todo lo que tienes que hacer es agregar un archivo .nzb. SABnzbd empieza desde ahí. Tus archivos serán automáticamente descargados, verificados, reparados, descomprimidos y archivados.
DISPLAY_NAME = SABnzbd
STARTABLE = yes
-CHANGELOG = "Update SABnzbd to 3.4.2."
+CHANGELOG = "1. Update SABnzbd to 3.4.2.
2. Update to python 3.10"
HOMEPAGE = https://sabnzbd.org
LICENSE = GPL
diff --git a/spk/sabnzbd/src/requirements-cross.txt b/spk/sabnzbd/src/requirements-cross.txt
deleted file mode 100644
index c7e8b424669..00000000000
--- a/spk/sabnzbd/src/requirements-cross.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-cheetah3==3.2.6
-sabyenc3==4.0.2
diff --git a/spk/sabnzbd/src/requirements-crossenv.txt b/spk/sabnzbd/src/requirements-crossenv.txt
new file mode 100644
index 00000000000..5906556e8db
--- /dev/null
+++ b/spk/sabnzbd/src/requirements-crossenv.txt
@@ -0,0 +1,14 @@
+babelfish==0.6.0
+#chardet==4.0.0 ==> python310
+cheetah3==3.2.6
+cherrypy==18.6.1
+configobj==5.0.6
+feedparser==6.0.8
+guessit==3.3.1
+more-itertools==8.9.0
+puremagic==1.10
+#pytz==2021.1 ==> python310
+rebulk==3.0.1
+sabyenc3==4.0.2
+sgmllib3k==1.0.0
+zc.lockfile==2.0
diff --git a/spk/sabnzbd/src/requirements-pure.txt b/spk/sabnzbd/src/requirements-pure.txt
new file mode 100644
index 00000000000..9f13d4df3a6
--- /dev/null
+++ b/spk/sabnzbd/src/requirements-pure.txt
@@ -0,0 +1,10 @@
+# Wheels that absolutely needs
+# to be managed as pure-python
+cheroot==8.5.2
+jaraco.classes==3.2.1
+jaraco.collections==3.4.0
+jaraco.functools==3.3.0
+jaraco.text==3.5.1
+portend==2.7.1
+#python-dateutil==2.8.2 ==> python310
+tempora==4.1.1
diff --git a/spk/sabnzbd/src/requirements.txt b/spk/sabnzbd/src/requirements.txt
deleted file mode 100644
index efefe41bb41..00000000000
--- a/spk/sabnzbd/src/requirements.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-chardet==4.0.0
-cheroot==8.5.2
-cherrypy==18.6.1
-configobj==5.0.6
-sgmllib3k==1.0.0
-feedparser==6.0.8
-jaraco.classes==3.2.1
-jaraco.collections==3.4.0
-jaraco.functools==3.3.0
-jaraco.text==3.5.1
-more-itertools==8.9.0
-portend==2.7.1
-pytz==2021.1
-tempora==4.1.1
-zc.lockfile==2.0
-guessit==3.3.1
-babelfish==0.6.0
-rebulk==3.0.1
-python-dateutil==2.8.2
-puremagic==1.10
diff --git a/spk/sabnzbd/src/service-setup.sh b/spk/sabnzbd/src/service-setup.sh
index a7e9a621658..8f2545f1dbc 100644
--- a/spk/sabnzbd/src/service-setup.sh
+++ b/spk/sabnzbd/src/service-setup.sh
@@ -1,5 +1,5 @@
BIN="${SYNOPKG_PKGDEST}/bin"
-PYTHON_DIR="/var/packages/python38/target/bin"
+PYTHON_DIR="/var/packages/python310/target/bin"
PATH="${BIN}:${SYNOPKG_PKGDEST}/env/bin:${PYTHON_DIR}:${PATH}"
VIRTUALENV="${PYTHON_DIR}/python3 -m venv"
PYTHON="${SYNOPKG_PKGDEST}/env/bin/python3"
diff --git a/spk/salt-minion/Makefile b/spk/salt-minion/Makefile
index 5f0dff2d8e7..a49cf43ba57 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-cross.txt src/requirements.txt
+WHEELS = 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
deleted file mode 100644
index 8d60568221b..00000000000
--- a/spk/salt-minion/src/requirements-cross.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-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 fbddc6eca44..3201dd10c9d 100644
--- a/spk/salt-minion/src/requirements.txt
+++ b/spk/salt-minion/src/requirements.txt
@@ -1,6 +1,13 @@
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/sickchill/Makefile b/spk/sickchill/Makefile
index 8ad88a5a68e..18f152acf22 100644
--- a/spk/sickchill/Makefile
+++ b/spk/sickchill/Makefile
@@ -1,20 +1,19 @@
SPK_NAME = sickchill
SPK_VERS = 20211110
-SPK_REV = 4
+SPK_REV = 5
SPK_ICON = src/sickchill.png
-BUILD_DEPENDS = cross/python38 cross/setuptools cross/pip cross/wheel cross/poetry cross/lxml
-# cross/cffi cross/setuptools cross/cryptography cross/poetry
-DEPENDS = cross/PyNaCl cross/$(SPK_NAME)
-SPK_DEPENDS = "python38>=3.8.12-6"
+BUILD_DEPENDS = cross/python310
+DEPENDS = cross/$(SPK_NAME)
+SPK_DEPENDS = "python310"
-WHEELS = src/requirements-cross.txt src/requirements.txt
+WHEELS = src/requirements.txt
MAINTAINER = miigotu
DESCRIPTION = Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.
STARTABLE = yes
DISPLAY_NAME = SickChill
-CHANGELOG = "1. SickChill environment fix
2. Move to Python 3.8 without git
3. Added DSM7 Support
4. cryptography resolution for armv7"
+CHANGELOG = "1. Migration to Python 3.10
2. SickChill environment fix
3. Added DSM7 Support
4. cryptography resolution for armv7"
HOMEPAGE = https://sickchill.github.io/
LICENSE = GPLv3+
diff --git a/spk/sickchill/src/requirements-cross.txt b/spk/sickchill/src/requirements-cross.txt
deleted file mode 100755
index d8b71bdd033..00000000000
--- a/spk/sickchill/src/requirements-cross.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-cffi==1.15.0
-chardet==4.0.0
-click==8.0.3
-###cryptography==3.4.7
-future==0.18.2
-###py38 greenlet==1.1.2
-###importlib-metadata==1.7.0
-kodipydent-alt==2021.7.16
-###py38 lxml==4.6.3
-MarkupSafe==2.0.1
-msgpack==1.0.2
-###PyNaCl==1.4.0
-sgmllib3k==1.0.0
-SQLAlchemy==1.4.26 #py38
-wrapt==1.13.3
-###python-dateutil==2.8.2
-backports.zoneinfo==0.2.1
diff --git a/spk/sickchill/src/requirements.txt b/spk/sickchill/src/requirements.txt
index 147290dd1e0..5fbae65b6ed 100644
--- a/spk/sickchill/src/requirements.txt
+++ b/spk/sickchill/src/requirements.txt
@@ -1,70 +1,81 @@
-###poetry adds with removal of cross/poetry
-###poetry==1.2.0a2
-###poetry-core==1.1.0a6
-###poetry-date-version-plugin==2021.7.16-6
-###py38 appdirs==1.4.4
+#appdirs==1.4.4 ==> python310
babelfish==0.6.0
-beautifulsoup4==4.10.0
+#beautifulsoup4==4.10.0 ==> python310
beekeeper-alt==2021.7.16
bencode.py==4.0.0
cachecontrol==0.12.9
-certifi==2021.10.8
-charset-normalizer==2.0.7
+#certifi==2021.10.8 ==> python310
+#cffi==1.15.0 ==> python310
+#chardet==4.0.0 ==> python310
+#charset-normalizer==2.0.7 ==> python310
+#click==8.0.3 ==> python310
cloudscraper==1.2.58
colorama==0.4.4
configobj==5.0.6
+#cryptography==3.4.7 ==> python310:cryptography==3.3.2
decorator==5.1.0
deluge-client==1.9.0
deprecated==1.2.13
dogpile.cache==1.1.4
enzyme==0.4.1
feedparser==6.0.8
+future==0.18.2
gntp==1.0.3
+#greenlet==1.1.2 ==> python310
guessit==3.4.0
-html5lib==1.1
+#html5lib==1.1 ==> python310
httplib2==0.20.2
-###py38 idna==3.3
+#idna==3.3 ==> python310
ifaddr==0.1.7
imagesize==1.2.0
IMDbPY==2021.4.18
-###py38 ipaddress==1.0.23
+#importlib-metadata==1.7.0 ==> python310:importlib-metadata==4.8.1
+#ipaddress==1.0.23 ==> python310
Js2Py==0.71
jsonrpclib-pelix==0.4.3.1
-###kodipydent-alt==2021.7.16
+kodipydent-alt==2021.7.16
+#lxml==4.6.3 ==> python310
Mako==1.1.5
markdown2==2.4.1
+#MarkupSafe==2.0.1 ==> python310
+msgpack==1.0.2
new-rtorrent-python==1.0.1a0
-oauthlib==3.1.1
-packaging==20.9
+#oauthlib==3.1.1 ==> python310
+#packaging==20.9 ==> python310
pbr==5.7.0
+poetry==1.2.0a2
+poetry-core==1.1.0a6
+poetry-date-version-plugin==2021.7.16-6
profilehooks==1.12.0
putio.py==8.7.0
+#pycparser==2.20 ==> python310
+#pyopenssl==21.0.0 ==> python310
pyaes==1.6.1
-###py38 pycparser==2.20
pygithub==1.55
-###py38 pyopenssl==21.0.0
pyjsparser==2.7.1
-pyjwt==2.3.0
+PyJWT==2.3.0
pymediainfo==5.1.0
+#PyNaCl==1.4.0 ==> python310
pynma==1.0
-###py38 pyopenssl==20.0.1
-pyparsing==2.4.7
+#pyparsing==2.4.7 ==> python310
pysocks==1.7.1
pysrt==1.1.2
-###python-dateutil==2.8.2
+python3-fanart==2.0.0
+#python-dateutil==2.8.2 ==> python310
python-slugify==5.0.2
python-twitter==3.5
-python3-fanart==2.0.0
pytz==2021.3
qbittorrent-api==2021.8.23
rarfile==4.0
rebulk==3.1.0
-requests==2.26.0
-requests-oauthlib==1.3.0
-requests-toolbelt==0.9.1
+#requests==2.26.0 ==> python310
+#requests-oauthlib==1.3.0 ==> python310
+#requests-toolbelt==0.9.1 ==> python310
send2trash==1.8.0
-###py38 six==1.16.0
+#six==1.16.0 ==> python310
+sgmllib3k==1.0.0
soupsieve==2.3
+#SQLAlchemy==1.4.26 ==> python310
stevedore==3.5.0
subliminal==2.1.0
text-unidecode==1.3
@@ -73,11 +84,12 @@ tmdbsimple==2.8.0
tornado==6.1
tus.py==1.3.4
tvdbsimple==1.0.6
-tzlocal==4.1
-unidecode==1.3.2
-urllib3==1.26.7
+#tzlocal==4.1 ==> python310
+#unidecode==1.3.2 ==> python310
+#urllib3==1.26.7 ==> python310
validators==0.18.2
webencodings==0.5.1
win-inet-pton==1.1.0
+wrapt==1.13.3
xmltodict==0.12.0
-###py38 zipp==3.6.0
+#zipp==3.6.0 ==> python310
diff --git a/spk/sickchill/src/service-setup.sh b/spk/sickchill/src/service-setup.sh
index 0b47f2ac3aa..68115108d1e 100755
--- a/spk/sickchill/src/service-setup.sh
+++ b/spk/sickchill/src/service-setup.sh
@@ -1,4 +1,4 @@
-PYTHON_DIR="/var/packages/python38/target"
+PYTHON_DIR="/var/packages/python310/target"
PIP=${SYNOPKG_PKGDEST}/env/bin/pip3
PATH="${SYNOPKG_PKGDEST}/bin:${SYNOPKG_PKGDEST}/env/bin:${PYTHON_DIR}/bin:${PATH}"
HOME="${SYNOPKG_PKGVAR}"
diff --git a/spk/znc/Makefile b/spk/znc/Makefile
index c60c7b4b01f..7936b3dd62f 100644
--- a/spk/znc/Makefile
+++ b/spk/znc/Makefile
@@ -5,7 +5,7 @@ SPK_ICON = src/znc.png
DSM_UI_DIR = app
DEPENDS = cross/$(SPK_NAME)
-SPK_DEPENDS = "python38"
+SPK_DEPENDS = "python310"
MAINTAINER = worstje
DESCRIPTION = Advanced IRC bouncer. An IRC bouncer is nothing more than an IRC proxy. ZNC will always be connected in your chat rooms, and will be the gateway between your clients, and your IRC servers. You can, for instance, consult messages while you were offline or hide your identity.
diff --git a/spk/znc/src/service-setup.sh b/spk/znc/src/service-setup.sh
index b455593d59b..bc14c4b0e2a 100644
--- a/spk/znc/src/service-setup.sh
+++ b/spk/znc/src/service-setup.sh
@@ -6,7 +6,7 @@
PATH="${SYNOPKG_PKGDEST}/bin:${PATH}"
ZNC="${SYNOPKG_PKGDEST}/bin/znc"
CERT_FILE="${SYNOPKG_PKGVAR}/znc.pem"
-PYTHON3_LIB_PATH="/var/packages/python38/target/lib"
+PYTHON3_LIB_PATH="/var/packages/python310/target/lib"
SERVICE_COMMAND="env LD_LIBRARY_PATH=${PYTHON3_LIB_PATH} ${ZNC} -d ${SYNOPKG_PKGVAR}"
SVC_BACKGROUND=yes
CONF_FILE=${SYNOPKG_PKGVAR}/configs/znc.conf