From fd06e19a644e81d137137d39942f99dee79111b3 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Mon, 2 Dec 2024 02:50:00 +0000 Subject: [PATCH] python312-wheels: Wheel testing package against py312 --- spk/python312-wheels/Makefile | 137 ++++++++++++++++++ spk/python312-wheels/src/python3-pip.png | Bin 0 -> 4832 bytes .../src/requirements-abi3.txt | 12 ++ .../src/requirements-crossenv-greenlet-v3.txt | 10 ++ .../src/requirements-crossenv-numpy.txt | 14 ++ .../src/requirements-crossenv-rpds-py.txt | 13 ++ .../src/requirements-crossenv.txt | 116 +++++++++++++++ 7 files changed, 302 insertions(+) create mode 100644 spk/python312-wheels/Makefile create mode 100644 spk/python312-wheels/src/python3-pip.png create mode 100644 spk/python312-wheels/src/requirements-abi3.txt create mode 100644 spk/python312-wheels/src/requirements-crossenv-greenlet-v3.txt create mode 100644 spk/python312-wheels/src/requirements-crossenv-numpy.txt create mode 100644 spk/python312-wheels/src/requirements-crossenv-rpds-py.txt create mode 100644 spk/python312-wheels/src/requirements-crossenv.txt diff --git a/spk/python312-wheels/Makefile b/spk/python312-wheels/Makefile new file mode 100644 index 00000000000..598ff0292fa --- /dev/null +++ b/spk/python312-wheels/Makefile @@ -0,0 +1,137 @@ +SPK_NAME = python312-wheels +SPK_VERS = 1.0 +SPK_VERS_MAJOR_MINOR = $(word 1,$(subst ., ,$(SPK_VERS))).$(word 2,$(subst ., ,$(SPK_VERS))) +SPK_REV = 1 +SPK_ICON = src/python3-pip.png + +# Platform "powerpc-none-linux-gnuspe" with compiler "gcc" is not supported by the +# CPython core team, see https://peps.python.org/pep-0011/ for more information. +# And compiler must support std=c++11 (OlD_PPC_ARCHS fail, but ARMv5_ARCHS have no issue). +UNSUPPORTED_ARCHS = $(OLD_PPC_ARCHS) + +PYTHON_PACKAGE = python312 + +MAINTAINER = SynoCommunity +DESCRIPTION = Collection of programs for the Python programming language. +DESCRIPTION_FRE = Collection of programs for the Python programming language. +DESCRIPTION_SPN = Colección de programas para el lenguaje de programación Python. +STARTABLE = no +DISPLAY_NAME = Python Wheels Collection +CHANGELOG = "1. Initial package" + +HOMEPAGE = https://www.python.org +LICENSE = PSF + +# Enable debug_info symgols +#GCC_DEBUG_INFO := 1 + +WHEELS = src/requirements-crossenv.txt +WHEELS += src/requirements-abi3.txt + +# [borgbackup] +# Use OpenSSL path as defined by either +# spksrc.wheel-env.mk or spksrc.python.mk +ENV += BORG_OPENSSL_PREFIX="$(OPENSSL_STAGING_PREFIX)" +ENV += BORG_LIBLZ4_PREFIX="$(STAGING_INSTALL_PREFIX)" +ENV += BORG_LIBZSTD_PREFIX="$(STAGING_INSTALL_PREFIX)" +ENV += BORG_LIBB2_PREFIX="$(STAGING_INSTALL_PREFIX)" +DEPENDS += cross/attr cross/acl cross/openssl3 cross/lz4 cross/zstd cross/libb2 cross/fuse + +# [cryptography] +# Use cross/cryptography to generate py36-abi3 limited API +# NOTE: It's not possible to build py36-abi3 limited API using pip due to PEP517 +# To generate py311-py311 regular build use src/requirements-crossenv.txt +DEPENDS += cross/cryptography + +# [gevent] +DEPENDS += cross/libev cross/c-ares +ENV += GEVENTSETUP_EMBED_CARES=FALSE +ENV += GEVENTSETUP_EMBED_LIBEV=FALSE + +# [lxml] +DEPENDS += cross/libxml2 +DEPENDS += cross/libxslt + +# [mysqlclient] +DEPENDS += cross/mysql-connector-c +DEPENDS += cross/mariadb-connector-c +ENV += MYSQLCLIENT_CFLAGS="$(CFLAGS) -I$(STAGING_INSTALL_PREFIX)/include/mysql -I$(STAGING_INSTALL_PREFIX)/include/mariadb -I$(STAGING_INSTALL_PREFIX)/$(PYTHON_INC_DIR)" +ENV += MYSQLCLIENT_LDFLAGS="$(LDFLAGS)" + +# [Pillow] +DEPENDS += cross/freetype cross/libjpeg cross/zlib +WHEELS_BUILD_ARGS += [Pillow] +WHEELS_BUILD_ARGS += build_ext +WHEELS_BUILD_ARGS += --disable-platform-guessing +WHEELS_BUILD_ARGS += --enable-freetype +WHEELS_BUILD_ARGS += --enable-jpeg +WHEELS_BUILD_ARGS += --enable-zlib + +# [pycares] +DEPENDS += cross/c-ares +ENV += PYCARES_USE_SYSTEM_LIB=1 + +# [pycurl] +DEPENDS += cross/curl +ENV += PYCURL_CURL_CONFIG=$(STAGING_INSTALL_PREFIX)/bin/curl-config + +# [PyNaCl] +DEPENDS += cross/libsodium +ENV += SODIUM_INSTALL=system + +# [PyYAML] +DEPENDS += cross/libyaml + +include ../../mk/spksrc.common.mk + +# [rpds-py] +# maturin canot be built as pre-requisite crossenv +ifneq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) +WHEELS += src/requirements-crossenv-rpds-py.txt +# Requires path to maturin from crossenv +ENV += PATH=$(WORK_DIR)/crossenv/build/bin:$(PATH) +endif + +include ../../mk/spksrc.python.mk + +# [greenlet] +ifeq ($(call version_ge $(TC_GCC), 4.9),1) +WHEELS += src/requirements-crossenv-greenlet-v3.txt +WHEELS_CPPFLAGS += [greenlet] -std=c++11 -fpermissive +endif + +# [numpy] <= 1.21.6 (armv5) +# [numpy] <= 1.22.4 (armv7l) +# [numpy] <= 1.24.4 last working version with gcc-4.9 +# These versions are now unsupported using py312 +# [numpy] >= 1.25.0 requires c++17 +ifeq ($(call version_gt, $(TC_GCC), 5.0),1) +WHEELS += src/requirements-crossenv-numpy.txt +endif + +# [pycryptodome] +ifeq ($(call version_ge, $(TC_GCC), 4.9),1) +WHEELS_CFLAGS += [pycryptodome] -std=c11 +else +WHEELS_CFLAGS += [pycryptodome] -std=c99 +endif + +# [pycryptodomex] +ifeq ($(call version_ge, $(TC_GCC), 4.9),1) +WHEELS_CFLAGS += [pycryptodomex] -std=c11 +else +WHEELS_CFLAGS += [pycryptodomex] -std=c99 +endif + +# [pydantic_core] +ifeq ($(call version_ge, $(TC_GCC), 4.9),1) +WHEELS_CFLAGS += [pydantic_core] -std=c11 +else +WHEELS_CFLAGS += [pydantic_core] -std=c99 +endif +# Requires path to maturin from crossenv +ENV += PATH=$(WORK_DIR)/crossenv/build/bin:$(PATH) + +# [rpds-py] +# Requires path to maturin from crossenv +ENV += PATH=$(WORK_DIR)/crossenv/build/bin:$(PATH) diff --git a/spk/python312-wheels/src/python3-pip.png b/spk/python312-wheels/src/python3-pip.png new file mode 100644 index 0000000000000000000000000000000000000000..d195821833d57b8973f0d12950054c679edb48f4 GIT binary patch literal 4832 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 literal 0 HcmV?d00001 diff --git a/spk/python312-wheels/src/requirements-abi3.txt b/spk/python312-wheels/src/requirements-abi3.txt new file mode 100644 index 00000000000..4e50951c5f1 --- /dev/null +++ b/spk/python312-wheels/src/requirements-abi3.txt @@ -0,0 +1,12 @@ +## +## All configurations below are optional and +## are provided to demonstrate how to build +## various wheels. Uncoment to enable. +## + +# [pycryptodome] + [pycryptodomex] +# Require: +# - CFLAGS=-sdt=c99 < gcc-4.9 +# - CFLAGS=-sdt=c11 >= gcc-4.9 +pycryptodome==3.20.0 +pycryptodomex==3.20.0 diff --git a/spk/python312-wheels/src/requirements-crossenv-greenlet-v3.txt b/spk/python312-wheels/src/requirements-crossenv-greenlet-v3.txt new file mode 100644 index 00000000000..e2ea909ebd6 --- /dev/null +++ b/spk/python312-wheels/src/requirements-crossenv-greenlet-v3.txt @@ -0,0 +1,10 @@ +## +## All configurations below are optional and +## are provided to demonstrate how to build +## various wheels. Uncoment to enable. +## + +# [greenlet] +# - Mandatory require full c++11 support +greenlet==3.0.3 +greenlet==3.1.1 diff --git a/spk/python312-wheels/src/requirements-crossenv-numpy.txt b/spk/python312-wheels/src/requirements-crossenv-numpy.txt new file mode 100644 index 00000000000..46e88a79f22 --- /dev/null +++ b/spk/python312-wheels/src/requirements-crossenv-numpy.txt @@ -0,0 +1,14 @@ +## +## All configurations below are optional and +## are provided to demonstrate how to build +## various wheels. Uncoment to enable. +## + +# [numpy] +# - Require Cython in cross/python310 crossenv +# - Numpy >= 1.26.x requires: +# c++17, meson-python, scikit-build-core +numpy==2.1.3 +numpy==2.0.2 +numpy==1.26.4 +numpy==1.25.1 diff --git a/spk/python312-wheels/src/requirements-crossenv-rpds-py.txt b/spk/python312-wheels/src/requirements-crossenv-rpds-py.txt new file mode 100644 index 00000000000..dbe0de961fc --- /dev/null +++ b/spk/python312-wheels/src/requirements-crossenv-rpds-py.txt @@ -0,0 +1,13 @@ +## +## All configurations below are optional and +## are provided to demonstrate how to build +## various wheels. Uncoment to enable. +## + +# [rpds-py] +# Require environment variables +# PYO3_CROSS_LIB_DIR=$(STAGING_INSTALL_PREFIX)/lib/ +# PYO3_CROSS_INCLUDE_DIR=$(STAGING_INSTALL_PREFIX)/include/ +# Requires path to maturin from crossenv +# ENV += PATH=$(WORK_DIR)/crossenv/build/bin:$(PATH) +rpds-py==0.20.0 diff --git a/spk/python312-wheels/src/requirements-crossenv.txt b/spk/python312-wheels/src/requirements-crossenv.txt new file mode 100644 index 00000000000..8bdbfaa2d62 --- /dev/null +++ b/spk/python312-wheels/src/requirements-crossenv.txt @@ -0,0 +1,116 @@ +## +## All configurations below are optional and +## are provided to demonstrate how to build +## various wheels. Uncoment to enable. +## + +# [bcrypt] +# Require environment variables +# PYO3_CROSS_LIB_DIR=$(STAGING_INSTALL_PREFIX)/lib/ +# PYO3_CROSS_INCLUDE_DIR=$(STAGING_INSTALL_PREFIX)/include/ +bcrypt==4.2.0 + +# [cryptography] +# Mandatory of using OPENSSL_*_DIR starting with version >= 40 +# https://docs.rs/openssl/latest/openssl/#automatic +# ENV += OPENSSL_LIB_DIR=$(STAGING_INSTALL_PREFIX)/lib/ +# ENV += OPENSSL_INCLUDE_DIR=$(STAGING_INSTALL_PREFIX)/include/ +cryptography==43.0.1 + +# Requirement for cryptography +cffi==1.17.0 + +# commonly used cross-compiled wheels +# All tested and can be enabled but may conflict +# with local python apps requirements + +borgbackup==1.2.6 +charset-normalizer==3.2.0 +greenlet==3.1.1 +immutables==0.20 +llfuse==1.5.0 +MarkupSafe==2.1.5 +msgpack==1.0.5 # used compiled verrsion for performance +msgpack-python==0.5.6 +netifaces==0.11.0 +psutil==6.0.0 +pyrsistent==0.19.3 +regex==2024.7.24 +ruamel.yaml.clib==0.2.12 +SQLAlchemy==2.0.32 +zope.interface==7.0.2 + +# [gevent] +# Depends: libev, c-ares +# Require environment variables +# GEVENTSETUP_EMBED_CARES=FALSE +# GEVENTSETUP_EMBED_LIBEV=FALSE +gevent==24.2.1 + +# [lxml] +# Depends: libxml2, libxslt +lxml==5.3.0 + +# [mysqlclient] +# Depends: mysql-connector-c, mariadb-connector-c +# Require environment variables +# MYSQLCLIENT_CFLAGS +# MYSQLCLIENT_LDFLAGS +mysqlclient==2.2.4 + +# [Pillow] +# Require --global-options arguments +# WHEELS_BUILD_ARGS = [Pillow] build_ext --disable-platform-guessing +Pillow==9.5.0 + +# [pycares] +# Depends: c-ares +# Require environment variables +# PYCARES_USE_SYSTEM_LIB=1 +pycares==4.4.0 + +# [pycurl] +# Depends: curl +# Require environment variables +# PYCURL_CURL_CONFIG +pycurl==7.45.3 + +# [pydantic_core] +# Requires path to maturin from crossenv +# Requires WHEELS_CFLAGS = -std=c11 for = gcc-4.9 +# Requires WHEELS_CFLAGS = -std=c99 for < gcc-4.9 +# Require environment variables +# PYO3_CROSS_LIB_DIR=$(STAGING_INSTALL_PREFIX)/lib/ +# PYO3_CROSS_INCLUDE_DIR=$(STAGING_INSTALL_PREFIX)/include/ +pydantic_core==2.23.0 + +# [PyNaCl] +# Depends: cross/libsodium +# Require environment variables +# SODIUM_INSTALL=system +PyNaCl==1.5.0 + +# [PyYAML] +# Depends: libyaml +PyYAML==6.0.2 + +# [rencode] +# Updated fork of the project +# rencode==1.0.6 <<-- unsupported +git+https://github.com/totaam/rencode.git@f6254ab26161f90b9c5e97915b9193fee805fc1f#egg=rencode==1.0.7 + +# [rpds-py] +# Require environment variables +# PYO3_CROSS_LIB_DIR=$(STAGING_INSTALL_PREFIX)/lib/ +# PYO3_CROSS_INCLUDE_DIR=$(STAGING_INSTALL_PREFIX)/include/ +# Requires path to maturin from crossenv +# ENV += PATH=$(WORK_DIR)/crossenv/build/bin:$(PATH) +rpds-py==0.10.2 + +# [ujson] +# - Require setuptools-scm in cross/python3* crossenv +ujson==5.10.0 + +# [webrtcvad] +# webrtcvad==2.0.10 # requires unreleased version at specific commit for qoriq arch +git+https://github.com/wiseman/py-webrtcvad@3bd761332a9404f5c9276105070ee814c4428342#egg=webrtcvad==2.0.10