Skip to content

Commit

Permalink
python312-wheels: Wheel testing package against py312
Browse files Browse the repository at this point in the history
  • Loading branch information
th0ma7 committed Dec 2, 2024
1 parent 00e030e commit fd06e19
Show file tree
Hide file tree
Showing 7 changed files with 302 additions and 0 deletions.
137 changes: 137 additions & 0 deletions spk/python312-wheels/Makefile
Original file line number Diff line number Diff line change
@@ -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)
Binary file added spk/python312-wheels/src/python3-pip.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions spk/python312-wheels/src/requirements-abi3.txt
Original file line number Diff line number Diff line change
@@ -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
10 changes: 10 additions & 0 deletions spk/python312-wheels/src/requirements-crossenv-greenlet-v3.txt
Original file line number Diff line number Diff line change
@@ -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
14 changes: 14 additions & 0 deletions spk/python312-wheels/src/requirements-crossenv-numpy.txt
Original file line number Diff line number Diff line change
@@ -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
13 changes: 13 additions & 0 deletions spk/python312-wheels/src/requirements-crossenv-rpds-py.txt
Original file line number Diff line number Diff line change
@@ -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
116 changes: 116 additions & 0 deletions spk/python312-wheels/src/requirements-crossenv.txt
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit fd06e19

Please sign in to comment.