From 5fee872837e776252bb4c3182387a40e68bca552 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 2 Feb 2025 18:14:16 +0000 Subject: [PATCH 01/34] spksrc.requirement.mk: Unified method to process requirements files --- mk/spksrc.requirement.mk | 104 +++++++++++++++++++++++++++++++++++++++ mk/spksrc.wheel.mk | 86 +++++++------------------------- 2 files changed, 121 insertions(+), 69 deletions(-) create mode 100644 mk/spksrc.requirement.mk diff --git a/mk/spksrc.requirement.mk b/mk/spksrc.requirement.mk new file mode 100644 index 00000000000..ffb2bd65287 --- /dev/null +++ b/mk/spksrc.requirement.mk @@ -0,0 +1,104 @@ +### Wheel rules +# Process wheels for modules listed in WHEELS. +# 1. wheel_download +# 2. wheel_compile +# 3. wheel_install +# +# Targets are executed in the following order: +# requirement_msg_target +# pre_requirement_target (override with PRE_REQUIREMENT_TARGET) +# requirement_target (override with REQUIREMENT_TARGET) +# post_requirement_target (override with POST_REQUIREMENT_TARGET) +# Variables: +# WHEELS List of wheels to go through + +# When wheel is called from: +# spksrc.spk.mk: MAKECMDGOALS is empty (needs to be set to wheel) +# make wheel-- : MAKECMDGOALS is wheel +# make download-wheels : MAKECMDGOALS is download-wheels +REQUIREMENT_GOAL := $(if $(MAKECMDGOALS),$(MAKECMDGOALS),requirement) + +ifeq ($(strip $(PRE_REQUIREMENT_TARGET)),) +PRE_REQUIREMENT_TARGET = pre_requirement_target +else +$(PRE_REQUIREMENT_TARGET): requirement_msg_target +endif +ifeq ($(strip $(REQUIREMENT_TARGET)),) +REQUIREMENT_TARGET = requirement_target +else +$(REQUIREMENT_TARGET): $(BUILD_REQUIREMENT_TARGET) +endif +ifeq ($(strip $(POST_REQUIREMENT_TARGET)),) +POST_REQUIREMENT_TARGET = post_requirement_target +else +$(POST_REQUIREMENT_TARGET): $(REQUIREMENT_TARGET) +endif + +requirement_msg_target: + @$(MSG) "Processing wheel for $(NAME)" + +pre_requirement_target: requirement_msg_target + +requirement-%: +ifneq ($(strip $(REQUIREMENT)),) + @$(MSG) $(MAKE) ARCH=$(firstword $(subst -, ,$*)) TCVERSION=$(lastword $(subst -, ,$*)) REQUIREMENT=\"$(REQUIREMENT)\" requirement + @MAKEFLAGS= $(MAKE) ARCH=$(firstword $(subst -, ,$*)) TCVERSION=$(lastword $(subst -, ,$*)) REQUIREMENT="$(REQUIREMENT)" requirement --no-print-directory +else + $(error No python wheel requirement to process) +endif + +requirement_target: SHELL:=/bin/bash +requirement_target: pre_requirement_target +ifneq ($(wildcard $(REQUIREMENT)),) + @set -e ; \ + while IFS= read -r requirement ; do \ + $(MSG) Processing requirement file [$${requirement}] ; \ + wheel=$${requirement#*requirements-*.txt:} ; \ + prefix=$$(basename $${requirement%%:*}) ; \ + case $${prefix} in \ + requirements-abi3.txt) type=abi3 ;; \ + requirements-crossenv*.txt) type=crossenv ;; \ + requirements-pure.txt) type=pure ;; \ + esac ; \ + $(MSG) $(MAKE) ARCH=$(ARCH) TCVERSION=$(TCVERSION) REQUIREMENT=\"$${wheel}\" WHEEL_TYPE=\"$${type}\" REQUIREMENT_GOAL=\"$(REQUIREMENT_GOAL)\" requirement ; \ + MAKEFLAGS= $(MAKE) ARCH="$(ARCH)" TCVERSION="$(TCVERSION)" REQUIREMENT="$${wheel}" WHEEL_TYPE="$${type}" REQUIREMENT_GOAL="$(REQUIREMENT_GOAL)" requirement --no-print-directory || exit 1 ; \ + done < <(grep -svH -e "^\#" -e "^\$$" $(wildcard $(REQUIREMENT)) | sed 's/\s* #.*//') +else + @for requirement in $(REQUIREMENT) ; do \ + $(MSG) Processing requirement unit [$${requirement}] ; \ + wheel=$$(echo $${requirement} | sed -E "s/^(abi3|build|cross|crossenv|pure)://") ; \ + case $${requirement} in \ + abi3:*) type=abi3 ;; \ + build:*) type=build ;; \ + cross:*) type=cross ;; \ + crossenv:*) type=crossenv ;; \ + pure:*) type=pure ;; \ + *) type=$(WHEEL_DEFAULT_PREFIX) ;; \ + esac ; \ + version=$$(echo $${wheel} | grep -oP '(?<=([<>=]=))[^ ]*' || echo "") ; \ + if [ "$$(grep -s egg <<< $${requirement})" ]; then \ + name=$$(echo $${wheel#*egg=} | cut -f1 -d=) ; \ + wheel_url=$$(echo $${wheel%%#egg=*}) ; \ + else \ + name=$$(echo $${wheel%%[<>=]=*} | sed -E "s/^(abi3|build|cross|crossenv|pure)://") ; \ + fi ; \ + if [ ! "$${version}" ]; then \ + $(MSG) Fetching latest version available ; \ + query="curl -s https://pypi.org/pypi/$${name}/json" ; \ + query+=" | jq -r '.releases[][]" ; \ + query+=" | select(.packagetype==\"sdist\")" ; \ + query+=" | .filename'" ; \ + query+=" | sort -V" ; \ + query+=" | tail -1" ; \ + query+=" | sed -e 's/.tar.gz//g' -e 's/.zip//g'" ; \ + query+=" | awk -F'-' '{print \$$2}'" ; \ + version=$$(eval $${query} 2>/dev/null) ; \ + fi ; \ + $(MSG) $(MAKE) ARCH=$(ARCH) TCVERSION=$(TCVERSION) WHEEL_NAME=\"$${name}\" WHEEL_VERSION=\"$${version}\" WHEEL_TYPE=\"$(or $(WHEEL_TYPE),$${type})\" WHEEL_URL=\"$${wheel_url}\" $(REQUIREMENT_GOAL) ; \ + MAKEFLAGS= $(MAKE) ARCH="$(ARCH)" TCVERSION="$(TCVERSION)" WHEEL_NAME="$${name}" WHEEL_VERSION="$${version}" WHEEL_TYPE="$(or $(WHEEL_TYPE),$${type})" WHEEL_URL="$${wheel_url}" $(REQUIREMENT_GOAL) --no-print-directory ; \ + done +endif + +post_requirement_target: $(REQUIREMENT_TARGET) + +requirement: $(POST_REQUIREMENT_TARGET) diff --git a/mk/spksrc.wheel.mk b/mk/spksrc.wheel.mk index 6fc617aff80..0ac6a77a13e 100644 --- a/mk/spksrc.wheel.mk +++ b/mk/spksrc.wheel.mk @@ -7,7 +7,7 @@ # Targets are executed in the following order: # wheel_msg_target # pre_wheel_target (override with PRE_WHEEL_TARGET) -# build_wheel_target (override with WHEEL_TARGET) +# wheel_target (override with WHEEL_TARGET) # post_wheel_target (override with POST_WHEEL_TARGET) # Variables: # WHEELS List of wheels to go through @@ -24,6 +24,9 @@ WHEEL_COOKIE = $(WORK_DIR)/.wheel_done ## python wheel specific configurations include ../../mk/spksrc.wheel-env.mk +## requirement processing routines +include ../../mk/spksrc.requirement.mk + ## python wheel specific configurations include ../../mk/spksrc.crossenv.mk @@ -54,7 +57,7 @@ else $(PRE_WHEEL_TARGET): wheel_msg_target endif ifeq ($(strip $(WHEEL_TARGET)),) -WHEEL_TARGET = build_wheel_target +WHEEL_TARGET = wheel_target else $(WHEEL_TARGET): $(BUILD_WHEEL_TARGET) endif @@ -74,77 +77,22 @@ ifneq ($(strip $(WHEELS)),) @$(MSG) $(MAKE) ARCH=$(firstword $(subst -, ,$*)) TCVERSION=$(lastword $(subst -, ,$*)) WHEELS=\"$(WHEELS)\" wheel @MAKEFLAGS= $(MAKE) ARCH=$(firstword $(subst -, ,$*)) TCVERSION=$(lastword $(subst -, ,$*)) WHEELS="$(WHEELS)" wheel --no-print-directory else - $(error No wheel to process) + $(error No python wheel to process) endif -build_wheel_target: SHELL:=/bin/bash -build_wheel_target: pre_wheel_target +wheel_target: SHELL:=/bin/bash +wheel_target: pre_wheel_target ifneq ($(wildcard $(abspath $(addprefix $(WORK_DIR)/../,$(WHEELS)))),) @set -e ; \ - while IFS= read -r requirement ; do \ - $(MSG) Processing requirement [$${requirement}] ; \ - wheel=$${requirement#*requirements-*.txt:} ; \ - file=$$(basename $${requirement%%:*}) ; \ - case $${file} in \ - requirements-pure.txt) type=pure ;; \ - requirements-crossenv*.txt) type=crossenv ;; \ - requirements-abi3.txt) type=abi3 ;; \ - *) type=$(WHEEL_DEFAULT_PREFIX) ;; \ - esac ; \ - version=$$(echo $${wheel} | grep -oP '(?<=([<>=]=))[^ ]*' || echo "") ; \ - if [ "$$(grep -s egg <<< $${wheel})" ]; then \ - name=$$(echo $${wheel#*egg=} | cut -f1 -d=) ; \ - wheel=$$(echo $${wheel%%#egg=*}) ; \ - else \ - name=$$(echo $${wheel%%[<>=]=*} | sed -E "s/^(abi3|crossenv|pure)://") ; \ - fi ; \ - if [ ! "$${version}" ]; then \ - $(MSG) Fetching latest version available ; \ - query="curl -s https://pypi.org/pypi/$${name}/json" ; \ - query+=" | jq -r '.releases[][]" ; \ - query+=" | select(.packagetype==\"sdist\")" ; \ - query+=" | .filename'" ; \ - query+=" | sort -V" ; \ - query+=" | tail -1" ; \ - query+=" | sed -e 's/.tar.gz//g' -e 's/.zip//g'" ; \ - query+=" | awk -F'-' '{print \$$2}'" ; \ - version=$$(eval $${query} 2>/dev/null) ; \ - fi ; \ - $(MSG) $(MAKE) ARCH=$(ARCH) TCVERSION=$(TCVERSION) REQUIREMENT=\"$${wheel}\" WHEEL_NAME=\"$${name}\" WHEEL_VERSION=\"$${version}\" WHEEL_TYPE=\"$${type}\" $(WHEEL_GOAL) ; \ - MAKEFLAGS= $(MAKE) ARCH="$(ARCH)" TCVERSION="$(TCVERSION)" REQUIREMENT="$${wheel}" WHEEL_NAME="$${name}" WHEEL_VERSION="$${version}" WHEEL_TYPE="$${type}" $(WHEEL_GOAL) --no-print-directory || exit 1 ; \ - done < <(grep -svH -e "^\#" -e "^\$$" $(wildcard $(abspath $(addprefix $(WORK_DIR)/../,$(WHEELS)))) | sed 's/\s* #.*//') -endif -ifneq ($(filter-out $(addprefix src/,$(notdir $(wildcard $(abspath $(addprefix $(WORK_DIR)/../,$(WHEELS)))))),$(WHEELS)),) - @for requirement in $(filter-out $(addprefix src/,$(notdir $(wildcard $(abspath $(addprefix $(WORK_DIR)/../,$(WHEELS)))))),$(WHEELS)) ; do \ - $(MSG) Processing requirement [$${requirement}] ; \ - wheel=$$(echo $${requirement} | sed -E "s/^(abi3|crossenv|pure)://") ; \ - case $${requirement} in \ - abi3:*) type=abi3 ;; \ - crossenv:*) type=crossenv ;; \ - pure:*) type=pure ;; \ - *) type=$(WHEEL_DEFAULT_PREFIX) ;; \ - esac ; \ - version=$$(echo $${wheel} | grep -oP '(?<=([<>=]=))[^ ]*' || echo "") ; \ - if [ "$$(grep -s egg <<< $${requirement})" ]; then \ - name=$$(echo $${wheel#*egg=} | cut -f1 -d=) ; \ - wheel=$$(echo $${wheel%%#egg=*}) ; \ - else \ - name=$$(echo $${wheel%%[<>=]=*} | sed -E "s/^(abi3|crossenv|pure)://") ; \ - fi ; \ - if [ ! "$${version}" ]; then \ - $(MSG) Fetching latest version available ; \ - query="curl -s https://pypi.org/pypi/$${name}/json" ; \ - query+=" | jq -r '.releases[][]" ; \ - query+=" | select(.packagetype==\"sdist\")" ; \ - query+=" | .filename'" ; \ - query+=" | sort -V" ; \ - query+=" | tail -1" ; \ - query+=" | sed -e 's/.tar.gz//g' -e 's/.zip//g'" ; \ - query+=" | awk -F'-' '{print \$$2}'" ; \ - version=$$(eval $${query} 2>/dev/null) ; \ - fi ; \ - $(MSG) $(MAKE) ARCH=$(ARCH) TCVERSION=$(TCVERSION) REQUIREMENT=\"$${wheel}\" WHEEL_NAME=\"$${name}\" WHEEL_VERSION=\"$${version}\" WHEEL_TYPE=\"$${type}\" $(WHEEL_GOAL) ; \ - MAKEFLAGS= $(MAKE) ARCH="$(ARCH)" TCVERSION="$(TCVERSION)" REQUIREMENT="$${wheel}" WHEEL_NAME="$${name}" WHEEL_VERSION="$${version}" WHEEL_TYPE="$${type}" $(WHEEL_GOAL) --no-print-directory ; \ + for requirement in $(wildcard $(abspath $(addprefix $(WORK_DIR)/../,$(WHEELS)))) ; do \ + $(MSG) $(MAKE) ARCH=$(ARCH) TCVERSION=$(TCVERSION) REQUIREMENT=\"$${requirement}\" REQUIREMENT_GOAL=\"$(WHEEL_GOAL)\" requirement ; \ + MAKEFLAGS= $(MAKE) ARCH="$(ARCH)" TCVERSION="$(TCVERSION)" REQUIREMENT="$${requirement}" REQUIREMENT_GOAL="$(WHEEL_GOAL)" requirement --no-print-directory || exit 1 ; \ + done +else + @set -e ; \ + for requirement in $(filter-out $(addprefix src/,$(notdir $(wildcard $(abspath $(addprefix $(WORK_DIR)/../,$(WHEELS)))))),$(WHEELS)) ; do \ + $(MSG) $(MAKE) ARCH=$(ARCH) TCVERSION=$(TCVERSION) REQUIREMENT=\"$${requirement}\" REQUIREMENT_GOAL=\"$(WHEEL_GOAL)\" requirement ; \ + MAKEFLAGS= $(MAKE) ARCH="$(ARCH)" TCVERSION="$(TCVERSION)" REQUIREMENT="$${requirement}" REQUIREMENT_GOAL="$(WHEEL_GOAL)" requirement --no-print-directory || exit 1 ; \ done endif From 5703977d03de43096b49049d1c7df750f7ab1585 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 2 Feb 2025 18:23:58 +0000 Subject: [PATCH 02/34] Bump pakage versions to enforce github-action build processing --- spk/deluge/Makefile | 2 +- spk/python311-wheels/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spk/deluge/Makefile b/spk/deluge/Makefile index 70b5699fc52..6dcf5e29d74 100644 --- a/spk/deluge/Makefile +++ b/spk/deluge/Makefile @@ -1,6 +1,6 @@ SPK_NAME = deluge SPK_VERS = 2.1.1.127 -SPK_REV = 24 +SPK_REV = 25 SPK_ICON = src/deluge.png PYTHON_PACKAGE = python311 diff --git a/spk/python311-wheels/Makefile b/spk/python311-wheels/Makefile index 3113b7c7ca3..f86df32cac7 100644 --- a/spk/python311-wheels/Makefile +++ b/spk/python311-wheels/Makefile @@ -1,7 +1,7 @@ SPK_NAME = python311-wheels SPK_VERS = 1.0 SPK_VERS_MAJOR_MINOR = $(word 1,$(subst ., ,$(SPK_VERS))).$(word 2,$(subst ., ,$(SPK_VERS))) -SPK_REV = 1 +SPK_REV = 2 SPK_ICON = src/python3-pip.png # Platform "powerpc-none-linux-gnuspe" with compiler "gcc" is not supported by the From 2e15b37fcf923ddadf6238f3d750c1b95a552a94 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Mon, 3 Feb 2025 02:33:44 +0000 Subject: [PATCH 03/34] crossenv.mk: Basic unit testing functional - will fail to build --- mk/spksrc.crossenv.mk | 132 +++++++++++++++++++++++------------------- 1 file changed, 73 insertions(+), 59 deletions(-) diff --git a/mk/spksrc.crossenv.mk b/mk/spksrc.crossenv.mk index 04354aa102a..f1639e8ba88 100644 --- a/mk/spksrc.crossenv.mk +++ b/mk/spksrc.crossenv.mk @@ -34,7 +34,7 @@ PYTHON_LIB_CROSS = $(abspath $(PYTHON_WORK_DIR)/$(PYTHON_PKG_DIR)/bui # wheel crossenv definitions CROSSENV_CONFIG_PATH = $(abspath $(PYTHON_WORK_DIR)/../crossenv) CROSSENV_CONFIG_DEFAULT = $(CROSSENV_CONFIG_PATH)/requirements-default.txt -CROSSENV_PATH = $(abspath $(WORK_DIR)/crossenv-$(CROSSENV_BUILD_WHEEL)/) +CROSSENV_PATH = $(abspath $(WORK_DIR)/crossenv-$(CROSSENV_WHEEL)/) ### @@ -58,45 +58,38 @@ endif # Check for -, then fallback to , then default ifneq ($(wildcard $(CROSSENV_CONFIG_PATH)/requirements-$(WHEEL_NAME)-$(WHEEL_VERSION).txt),) -CROSSENV_BUILD_WHEEL = $(WHEEL_NAME)-$(WHEEL_VERSION) -CROSSENV_BUILD_REQUIREMENTS = $(CROSSENV_CONFIG_PATH)/requirements-$(CROSSENV_BUILD_WHEEL).txt +CROSSENV_WHEEL = $(WHEEL_NAME)-$(WHEEL_VERSION) +CROSSENV_REQUIREMENTS = $(CROSSENV_CONFIG_PATH)/requirements-$(CROSSENV_WHEEL).txt else ifneq ($(wildcard $(CROSSENV_CONFIG_PATH)/requirements-$(WHEEL_NAME).txt),) -CROSSENV_BUILD_WHEEL = $(WHEEL_NAME) -CROSSENV_BUILD_REQUIREMENTS = $(CROSSENV_CONFIG_PATH)/requirements-$(WHEEL_NAME).txt +CROSSENV_WHEEL = $(WHEEL_NAME) +CROSSENV_REQUIREMENTS = $(CROSSENV_CONFIG_PATH)/requirements-$(WHEEL_NAME).txt else -CROSSENV_BUILD_WHEEL = default -CROSSENV_BUILD_REQUIREMENTS = $(CROSSENV_CONFIG_DEFAULT) +CROSSENV_WHEEL = default +CROSSENV_REQUIREMENTS = $(CROSSENV_CONFIG_DEFAULT) endif # Completion status file -CROSSENV_COOKIE = $(WORK_DIR)/.crossenv-$(CROSSENV_BUILD_WHEEL)_done +CROSSENV_COOKIE = $(WORK_DIR)/.crossenv-$(CROSSENV_WHEEL)_done ### -# default wheel packages to install in crossenv -ifneq ($(wildcard $(CROSSENV_BUILD_REQUIREMENTS) $(CROSSENV_CONFIG_DEFAULT)),) -CROSSENV_DEFAULT_PIP_VERSION = $(shell grep -h -E "^pip[<>=]=" $(wildcard $(CROSSENV_BUILD_REQUIREMENTS) $(CROSSENV_CONFIG_DEFAULT)) | head -1 | sed -E 's/.*[<>=]=//') -CROSSENV_DEFAULT_SETUPTOOLS_VERSION = $(shell grep -h -E "^setuptools[<>=]=" $(wildcard $(CROSSENV_BUILD_REQUIREMENTS) $(CROSSENV_CONFIG_DEFAULT)) | head -1 | sed -E 's/.*[<>=]=//') -CROSSENV_DEFAULT_WHEEL_VERSION = $(shell grep -h -E "^wheel[<>=]=" $(wildcard $(CROSSENV_BUILD_REQUIREMENTS) $(CROSSENV_CONFIG_DEFAULT)) | head -1 | sed -E 's/.*[<>=]=//') +# default pip, setuptools and wheel packages to +# install in crossenv/build and crossenv/cross +ifneq ($(wildcard $(CROSSENV_REQUIREMENTS) $(CROSSENV_CONFIG_DEFAULT)),) +CROSSENV_BUILD_PIP_VERSION = $(shell grep -h -E "(^build:|^)pip[<>=]=" $(wildcard $(CROSSENV_REQUIREMENTS) $(CROSSENV_CONFIG_DEFAULT)) | head -1 | sed -E 's/.*[<>=]=//') +CROSSENV_CROSS_PIP_VERSION = $(or $(shell grep -h -E "(^cross:)pip[<>=]=" $(wildcard $(CROSSENV_REQUIREMENTS) $(CROSSENV_CONFIG_DEFAULT)) | head -1 | sed -E 's/.*[<>=]=//'), $(CROSSENV_BUILD_PIP_VERSION)) +CROSSENV_BUILD_SETUPTOOLS_VERSION = $(shell grep -h -E "(^build:|^)setuptools[<>=]=" $(wildcard $(CROSSENV_REQUIREMENTS) $(CROSSENV_CONFIG_DEFAULT)) | head -1 | sed -E 's/.*[<>=]=//') +CROSSENV_CROSS_SETUPTOOLS_VERSION = $(or $(shell grep -h -E "(^cross:)setuptools[<>=]=" $(wildcard $(CROSSENV_REQUIREMENTS) $(CROSSENV_CONFIG_DEFAULT)) | head -1 | sed -E 's/.*[<>=]=//'), $(CROSSENV_BUILD_SETUPTOOLS_VERSION)) +CROSSENV_BUILD_WHEEL_VERSION = $(shell grep -h -E "(^build:|^)wheel[<>=]=" $(wildcard $(CROSSENV_REQUIREMENTS) $(CROSSENV_CONFIG_DEFAULT)) | head -1 | sed -E 's/.*[<>=]=//') +CROSSENV_CROSS_WHEEL_VERSION = $(or $(shell grep -h -E "(^cross:)wheel[<>=]=" $(wildcard $(CROSSENV_REQUIREMENTS) $(CROSSENV_CONFIG_DEFAULT)) | head -1 | sed -E 's/.*[<>=]=//'), $(CROSSENV_BUILD_WHEEL_VERSION)) endif -ifneq ($(CROSSENV_DEFAULT_PIP_VERSION),) -CROSSENV_DEFAULT_PIP = pip==$(CROSSENV_DEFAULT_PIP_VERSION) -else -CROSSENV_DEFAULT_PIP = pip -endif - -ifneq ($(CROSSENV_DEFAULT_SETUPTOOLS_VERSION),) -CROSSENV_DEFAULT_SETUPTOOLS = setuptools==$(CROSSENV_DEFAULT_SETUPTOOLS_VERSION) -else -CROSSENV_DEFAULT_SETUPTOOLS = setuptools -endif - -ifneq ($(CROSSENV_DEFAULT_WHEEL_VERSION),) -CROSSENV_DEFAULT_WHEEL = wheel==$(CROSSENV_DEFAULT_WHEEL_VERSION) -else -CROSSENV_DEFAULT_WHEEL = wheel -endif +CROSSENV_BUILD_PIP ?= pip$(if $(CROSSENV_BUILD_PIP_VERSION),==$(CROSSENV_BUILD_PIP_VERSION)) +CROSSENV_CROSS_PIP ?= pip$(if $(CROSSENV_CROSS_PIP_VERSION),==$(CROSSENV_CROSS_PIP_VERSION)) +CROSSENV_BUILD_SETUPTOOLS ?= setuptools$(if $(CROSSENV_BUILD_SETUPTOOLS_VERSION),==$(CROSSENV_BUILD_SETUPTOOLS_VERSION)) +CROSSENV_CROSS_SETUPTOOLS ?= setuptools$(if $(CROSSENV_CROSS_SETUPTOOLS_VERSION),==$(CROSSENV_CROSS_SETUPTOOLS_VERSION)) +CROSSENV_BUILD_WHEEL ?= wheel$(if $(CROSSENV_BUILD_WHEEL_VERSION),==$(CROSSENV_BUILD_WHEEL_VERSION)) +CROSSENV_CROSS_WHEEL ?= wheel$(if $(CROSSENV_CROSS_WHEEL_VERSION),==$(CROSSENV_CROSS_WHEEL_VERSION)) ### @@ -110,13 +103,11 @@ pre_crossenv_target: crossenv_msg_target mkdir -p $(PIP_CACHE_DIR) ; \ fi; \ -post_crossenv_target: $(CROSSENV_TARGET) - ### crossenv-%: - @$(MSG) $(MAKE) ARCH=\"$(firstword $(subst -, ,$*))\" TCVERSION=\"$(lastword $(subst -, ,$*))\" WHEEL_NAME=\"$(WHEEL_NAME)\" WHEEL_VERSION=\"$(WHEEL_VERSION)\" crossenv - @MAKEFLAGS= $(MAKE) ARCH="$(firstword $(subst -, ,$*))" TCVERSION="$(lastword $(subst -, ,$*))" WHEEL_NAME="$(WHEEL_NAME)" WHEEL_VERSION="$(WHEEL_VERSION)" crossenv --no-print-directory + @$(MSG) $(MAKE) ARCH=\"$(firstword $(subst -, ,$*))\" TCVERSION=\"$(lastword $(subst -, ,$*))\" WHEEL_NAME=\"$(WHEEL_NAME)\" WHEEL_VERSION=\"$(WHEEL_VERSION)\" WHEEL_DEPENDENCY=\"$(WHEEL_DEPENDENCY)\" crossenv + @MAKEFLAGS= $(MAKE) ARCH="$(firstword $(subst -, ,$*))" TCVERSION="$(lastword $(subst -, ,$*))" WHEEL_NAME="$(WHEEL_NAME)" WHEEL_VERSION="$(WHEEL_VERSION)" WHEEL_DEPENDENCY=\"$(WHEEL_DEPENDENCY)\" crossenv --no-print-directory #### @@ -162,11 +153,10 @@ export PYTHONPATH = $(PYTHON_LIB_NATIVE):$(PYTHON_STAGING_INSTALL_PREFIX)/lib/py # >>> sys.path # build_crossenv_target: SHELL:=/bin/bash -build_crossenv_target: pre_crossenv_target $(CROSSENV_PATH)/build/python-cc.mk - @$(MSG) $$(date +%Y%m%d-%H%M%S) MAKELEVEL: $(MAKELEVEL), PARALLEL_MAKE: $(PARALLEL_MAKE), ARCH: $(ARCH)-$(TCVERSION), CROSSENV: $(CROSSENV_BUILD_WHEEL) >> $(PSTAT_LOG) +build_crossenv_target: pre_crossenv_target + @$(MSG) $$(date +%Y%m%d-%H%M%S) MAKELEVEL: $(MAKELEVEL), PARALLEL_MAKE: $(PARALLEL_MAKE), ARCH: $(ARCH)-$(TCVERSION), CROSSENV: $(CROSSENV_WHEEL) >> $(PSTAT_LOG) @$(MSG) Python sources: $(wildcard $(PYTHON_WORK_DIR)/Python-[0-9]*) - @$(MSG) crossenv wheel packages: $(CROSSENV_DEFAULT_PIP), $(CROSSENV_DEFAULT_SETUPTOOLS), $(CROSSENV_DEFAULT_WHEEL) - @$(MSG) crossenv requirement definition: $(CROSSENV_BUILD_REQUIREMENTS) + @$(MSG) crossenv requirement definition: $(CROSSENV_REQUIREMENTS) mkdir -p $(PYTHON_LIB_CROSS) cp -RL $(HOSTPYTHON_LIB_NATIVE) $(abspath $(PYTHON_LIB_CROSS)/../) @echo $(PYTHON_NATIVE) -m crossenv $(abspath $(PYTHON_WORK_DIR)/install/$(PYTHON_INSTALL_PREFIX)/bin/python$(PYTHON_PKG_VERS_MAJOR_MINOR)) \ @@ -185,38 +175,51 @@ build_crossenv_target: pre_crossenv_target $(CROSSENV_PATH)/build/python-cc.mk --env LIBRARY_PATH= \ --manylinux manylinux2014 \ "$(CROSSENV_PATH)" -ifeq ($(CROSSENV_BUILD_WHEEL),default) +ifeq ($(CROSSENV_WHEEL),default) @$(MSG) Setting default crossenv $(CROSSENV_PATH) @$(MSG) ln -sf crossenv-default $(WORK_DIR)/crossenv @$(RUN) ln -sf crossenv-default $(WORK_DIR)/crossenv endif @$(RUN) wget --no-verbose https://bootstrap.pypa.io/get-pip.py --directory-prefix=$(CROSSENV_PATH)/build ; \ $(RUN) chmod 755 $(CROSSENV_PATH)/build/get-pip.py + @$(MSG) crossenv-$(CROSSENV_WHEEL)/build default packages: $(CROSSENV_BUILD_PIP), $(CROSSENV_BUILD_SETUPTOOLS), $(CROSSENV_BUILD_WHEEL) @. $(CROSSENV_PATH)/bin/activate ; \ - $(MSG) build-python install $(CROSSENV_DEFAULT_PIP) ; \ - $(RUN) $$(which build-python) $(CROSSENV_PATH)/build/get-pip.py $(CROSSENV_DEFAULT_PIP) --no-setuptools --no-wheel --disable-pip-version-check ; \ - $(MSG) cross-python Install $(CROSSENV_DEFAULT_PIP) ; \ - $(RUN) $$(which cross-python) $(CROSSENV_PATH)/build/get-pip.py $(CROSSENV_DEFAULT_PIP) --no-setuptools --no-wheel --disable-pip-version-check + $(MSG) build-python install $(CROSSENV_BUILD_PIP) ; \ + $(RUN) build-python $(CROSSENV_PATH)/build/get-pip.py $(CROSSENV_BUILD_PIP) --no-setuptools --no-wheel --disable-pip-version-check ; \ + $(MSG) build-pip Install $(CROSSENV_BUILD_SETUPTOOLS) $(CROSSENV_BUILD_WHEEL) ; \ + $(RUN) build-pip --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install $(CROSSENV_BUILD_SETUPTOOLS) $(CROSSENV_BUILD_WHEEL) + @$(MSG) crossenv-$(CROSSENV_WHEEL)/cross default packages: $(CROSSENV_CROSS_PIP), $(CROSSENV_CROSS_SETUPTOOLS), $(CROSSENV_CROSS_WHEEL) @. $(CROSSENV_PATH)/bin/activate ; \ - $(MSG) build-pip Install $(CROSSENV_DEFAULT_SETUPTOOLS) $(CROSSENV_DEFAULT_WHEEL) ; \ - $(RUN) $$(which build-pip) --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install $(CROSSENV_DEFAULT_SETUPTOOLS) $(CROSSENV_DEFAULT_WHEEL) ; \ - $(MSG) cross-pip Install $(CROSSENV_DEFAULT_SETUPTOOLS) $(CROSSENV_DEFAULT_WHEEL) ; \ - $(RUN) $$(which cross-pip) --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install $(CROSSENV_DEFAULT_SETUPTOOLS) $(CROSSENV_DEFAULT_WHEEL) - @$(MSG) [$(CROSSENV_PATH)] Processing $(CROSSENV_BUILD_REQUIREMENTS) + $(MSG) cross-python Install $(CROSSENV_CROSS_PIP) ; \ + $(RUN) cross-python $(CROSSENV_PATH)/build/get-pip.py $(CROSSENV_CROSS_PIP) --no-setuptools --no-wheel --disable-pip-version-check ; \ + $(MSG) cross-pip Install $(CROSSENV_CROSS_SETUPTOOLS) $(CROSSENV_CROSS_WHEEL) ; \ + $(RUN) cross-pip --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install $(CROSSENV_CROSS_SETUPTOOLS) $(CROSSENV_CROSS_WHEEL) + @$(MSG) $(MAKE) ARCH=$(ARCH) TCVERSION=$(TCVERSION) REQUIREMENT=\"$(CROSSENV_REQUIREMENTS)\" REQUIREMENT_GOAL=\"crossenv-install-$(CROSSENV_WHEEL)\" requirement ; \ + MAKEFLAGS= $(MAKE) ARCH=$(ARCH) TCVERSION=$(TCVERSION) REQUIREMENT="$(CROSSENV_REQUIREMENTS)" REQUIREMENT_GOAL="crossenv-install-$(CROSSENV_WHEEL)" requirement + +### TRAITER le % en $* +### TRAITER le cas de requirement avec juste pip au lien de build:pip +### SI appel via arch-- fail - doit probablement necessiter d'ajouter spksrc.requirement.mk en qque part +### Si cross alors faudrait apeller wheel_download et pointer vers link machin destination +crossenv-install-%: + @$(MSG) CROSSENV_PATH: $(CROSSENV_PATH) +ifeq ($(WHEEL_TYPE),build) @. $(CROSSENV_PATH)/bin/activate ; \ - $(MSG) build-pip install -r $(CROSSENV_BUILD_REQUIREMENTS) ; \ + $(MSG) build-pip install $(WHEEL_NAME)==$(WHEEL_VERSION) ; \ $(RUN) \ PATH="$(abspath $(WORK_DIR)/../../../native/$(PYTHON_PKG_NAME)/work-native/install/usr/local/bin):$(PATH)" \ LD_LIBRARY_PATH="$(abspath $(WORK_DIR)/../../../native/$(PYTHON_PKG_NAME)/work-native/install/usr/local/lib):$(LD_LIBRARY_PATH)" \ - $$(which build-pip) --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install -r $(CROSSENV_BUILD_REQUIREMENTS) ; \ - $(MSG) cross-pip Install -r $(CROSSENV_BUILD_REQUIREMENTS) ; \ + $$(which build-pip) --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install $(WHEEL_NAME)==$(WHEEL_VERSION) +else ifeq ($(WHEEL_TYPE),cross) + @. $(CROSSENV_PATH)/bin/activate ; \ + $(MSG) cross-pip install $(WHEEL_NAME)==$(WHEEL_VERSION) ; \ $(RUN) \ PATH="$(abspath $(WORK_DIR)/../../../native/$(PYTHON_PKG_NAME)/work-native/install/usr/local/bin):$(PATH)" \ LD_LIBRARY_PATH="$(abspath $(WORK_DIR)/../../../native/$(PYTHON_PKG_NAME)/work-native/install/usr/local/lib):$(LD_LIBRARY_PATH)" \ - $$(which cross-pip) --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install -r $(CROSSENV_BUILD_REQUIREMENTS) - @. $(CROSSENV_PATH)/bin/activate ; \ - $(MSG) "Package list for $(CROSSENV_PATH):" ; \ - $(RUN) $$(which cross-pip) list + $$(which cross-pip) --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install $(WHEEL_NAME)==$(WHEEL_VERSION) +else + $(error Wheel type [$(WHEEL_TYPE)] not recognized) +endif ## ## python-cc.mk @@ -248,10 +251,21 @@ $(CROSSENV_PATH)/build/python-cc.mk: @echo PIP=$(abspath $(WORK_DIR)/../../../native/$(PYTHON_PKG_NAME)/work-native/install/usr/local/bin/pip) >> $@ @echo CROSS_COMPILE_WHEELS=1 >> $@ @echo ADDITIONAL_WHEEL_BUILD_ARGS=--no-build-isolation >> $@ - @echo CROSSENV_BUILD_REQUIREMENTS=$(CROSSENV_BUILD_REQUIREMENTS) >> $@ - @echo CROSSENV_DEFAULT_PIP=$(CROSSENV_DEFAULT_PIP_VERSION) >> $@ - @echo CROSSENV_DEFAULT_SETUPTOOLS=$(CROSSENV_DEFAULT_SETUPTOOLS_VERSION) >> $@ - @echo CROSSENV_DEFAULT_WHEEL=$(CROSSENV_DEFAULT_WHEEL_VERSION) >> $@ + @echo CROSSENV_REQUIREMENTS=$(CROSSENV_REQUIREMENTS) >> $@ + @echo CROSSENV_BUILD_PIP=$(CROSSENV_BUILD_PIP_VERSION) >> $@ + @echo CROSSENV_BUILD_SETUPTOOLS=$(CROSSENV_BUILD_SETUPTOOLS_VERSION) >> $@ + @echo CROSSENV_BUILD_WHEEL=$(CROSSENV_WHEEL_VERSION) >> $@ + @echo CROSSENV_CROSS_PIP=$(CROSSENV_CROSS_PIP_VERSION) >> $@ + @echo CROSSENV_CROSS_SETUPTOOLS=$(CROSSENV_CROSS_SETUPTOOLS_VERSION) >> $@ + @echo CROSSENV_CROSS_WHEEL=$(CROSSENV_CROSS_WHEEL_VERSION) >> $@ + +post_crossenv_target: $(CROSSENV_TARGET) $(CROSSENV_PATH)/build/python-cc.mk + @$(MSG) "Package list for $(CROSSENV_PATH)/build:" + @. $(CROSSENV_PATH)/bin/activate ; \ + $(RUN) build-pip list + @$(MSG) "Package list for $(CROSSENV_PATH)/cross:" + @. $(CROSSENV_PATH)/bin/activate ; \ + $(RUN) cross-pip list ifeq ($(wildcard $(CROSSENV_COOKIE)),) crossenv: $(CROSSENV_COOKIE) From 92c3988f51507fe2084885fef1e2451df08a6742 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 4 Feb 2025 00:51:26 +0000 Subject: [PATCH 04/34] spksrc.wheel-*.mk: Complete REQUIREMENT removal to use WHEEL_URL --- mk/spksrc.wheel-compile.mk | 11 ++++++----- mk/spksrc.wheel-download.mk | 12 ++++++++---- mk/spksrc.wheel-install.mk | 7 ++++--- mk/spksrc.wheel.mk | 7 ++----- 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/mk/spksrc.wheel-compile.mk b/mk/spksrc.wheel-compile.mk index 5394da52da6..797cb1b1b8e 100644 --- a/mk/spksrc.wheel-compile.mk +++ b/mk/spksrc.wheel-compile.mk @@ -6,11 +6,12 @@ # pre_wheel_compile_target (override with PRE_WHEEL_COMPILE_TARGET) # wheel_compile_target (override with WHEEL_COMPILE_TARGET) # post_wheel_compile_target (override with POST_WHEEL_COMPILE_TARGET) +# # Variables: -# REQUIREMENT Requirement formatted wheel information # WHEEL_NAME Name of wheel to process -# WHEEL_VERSION Version of wheel to process (can be empty) # WHEEL_TYPE Type of wheel to process (abi3, crossenv, pure) +# WHEEL_URL URL usually of type git+https:// +# WHEEL_VERSION Version of wheel to process (can be empty) ifeq ($(WHEEL_VERSION),) WHEEL_COMPILE_COOKIE = $(WORK_DIR)/.$(COOKIE_PREFIX)wheel_compile-$(WHEEL_NAME)_done @@ -69,7 +70,7 @@ ifneq ($(WHEEL_TYPE),pure) $$([ "$$(echo $${localLDFLAGS[@]})" ] && echo "LDFLAGS=\"$${localLDFLAGS[@]}\" ") \ $$([ "$$(echo $${abi3})" ] && echo "$${abi3} ")" \ $${global_options}" ; \ - REQUIREMENT=$(REQUIREMENT) \ + REQUIREMENT=$(or $(WHEEL_URL),$(WHEEL_NAME)==$(WHEEL_VERSION)) \ WHEEL_NAME=$(WHEEL_NAME) \ WHEEL_VERSION=$(WHEEL_VERSION) \ ADDITIONAL_CFLAGS="-I$(STAGING_INSTALL_PREFIX)/$(PYTHON_INC_DIR) $${localCFLAGS[@]}" \ @@ -86,8 +87,8 @@ else ifneq ($(filter 1 ON TRUE,$(WHEELS_PURE_PYTHON_PACKAGING_ENABLE)),) $(RUN) \ PATH="$(abspath $(WORK_DIR)/../../../native/$(PYTHON_PKG_NAME)/work-native/install/usr/local/bin):$(PATH)" \ LD_LIBRARY_PATH="$(abspath $(WORK_DIR)/../../../native/$(PYTHON_PKG_NAME)/work-native/install/usr/local/lib):$(LD_LIBRARY_PATH)" \ - $(MSG) $(PIP_NATIVE) $(PIP_WHEEL_ARGS) $(REQUIREMENT) ; \ - $(PIP_NATIVE) $(PIP_WHEEL_ARGS) $(REQUIREMENT) ; \ + $(MSG) $(PIP_NATIVE) $(PIP_WHEEL_ARGS) $(or $(WHEEL_URL),$(WHEEL_NAME)==$(WHEEL_VERSION)) ; \ + $(PIP_NATIVE) $(PIP_WHEEL_ARGS) $(or $(WHEEL_URL),$(WHEEL_NAME)==$(WHEEL_VERSION)) ; \ fi endif diff --git a/mk/spksrc.wheel-download.mk b/mk/spksrc.wheel-download.mk index 479fa24a024..92c9e2d7c7f 100644 --- a/mk/spksrc.wheel-download.mk +++ b/mk/spksrc.wheel-download.mk @@ -1,16 +1,20 @@ ### Wheel rules -# Download wheels for modules listed in WHEELS. +# Download wheels for modules listed in WHEELS. +# These are being pre-processed thru spksrc.wheel.mk +# along with spksrc.requirement.mk so 1 wheel at +# a time gets submitted to download. # # Targets are executed in the following order: # wheel_download_msg_target # pre_wheel_download_target (override with PRE_WHEEL_DOWNLOAD_TARGET) # wheel_download_target (override with WHEEL_DOWNLOAD_TARGET) # post_wheel_download_target (override with POST_WHEEL_DOWNLOAD_TARGET) +# # Variables: -# REQUIREMENT Requirement formatted wheel information # WHEEL_NAME Name of wheel to process -# WHEEL_VERSION Version of wheel to process (can be empty) # WHEEL_TYPE Type of wheel to process (abi3, crossenv, pure) +# WHEEL_URL URL usually of type git+https:// +# WHEEL_VERSION Version of wheel to process (can be empty) ifeq ($(WHEEL_VERSION),) WHEEL_DOWNLOAD_COOKIE = $(WORK_DIR)/.$(COOKIE_PREFIX)wheel_download-$(WHEEL_NAME)_done @@ -52,7 +56,7 @@ ifeq ($(wildcard $(PIP_CACHE_DIR)),) @mkdir -p $(PIP_CACHE_DIR) endif @$(MSG) Downloading wheel [$(WHEEL_NAME)], version [$(WHEEL_VERSION)] ; \ - if [ "$$(grep -Eo 'http://|https://' <<< $(REQUIREMENT))" ] ; then \ + if [ "$(WHEEL_URL)" ] ; then \ echo "WARNING: Skipping download URL - Downloaded at build time" ; \ elif [ "$(WHEEL_TYPE)" = "pure" ] && [ ! "$(WHEELS_PURE_PYTHON_PACKAGING_ENABLE)" = "1" ]; then \ echo "WARNING: Skipping download - pure python packaging disabled" ; \ diff --git a/mk/spksrc.wheel-install.mk b/mk/spksrc.wheel-install.mk index e72acd2dd28..071c82d3256 100644 --- a/mk/spksrc.wheel-install.mk +++ b/mk/spksrc.wheel-install.mk @@ -6,11 +6,12 @@ # pre_wheel_install_target (override with PRE_WHEEL_INSTALL_TARGET) # wheel_install_target (override with WHEEL_INSTALL_TARGET) # post_wheel_install_target (override with POST_WHEEL_INSTALL_TARGET) +# # Variables: -# REQUIREMENT Requirement formatted wheel information # WHEEL_NAME Name of wheel to process -# WHEEL_VERSION Version of wheel to process (can be empty) # WHEEL_TYPE Type of wheel to process (abi3, crossenv, pure) +# WHEEL_URL URL usually of type git+https:// +# WHEEL_VERSION Version of wheel to process (can be empty) ifeq ($(WHEEL_VERSION),) WHEEL_INSTALL_COOKIE = $(WORK_DIR)/.$(COOKIE_PREFIX)wheel_install-$(WHEEL_NAME)_done @@ -57,7 +58,7 @@ wheel_install_target: pure) $(MSG) Adding $(WHEEL_NAME)==$(WHEEL_VERSION) to wheelhouse/$(WHEELS_PURE_PYTHON) ; \ echo $(WHEEL_NAME)==$(WHEEL_VERSION) | sed -e '/^[[:blank:]]*$$\|^#/d' >> $(WHEELHOUSE)/$(WHEELS_PURE_PYTHON) ; \ ;; \ - *) $(MSG) No type found for wheel [$(REQUIREMENT)] ; \ + *) $(MSG) No type found for wheel [$(WHEEL_NAME)==$(WHEEL_VERSION)] ; \ ;; \ esac @for file in $$(ls -1 $(WHEELHOUSE)/requirements-*.txt) ; do \ diff --git a/mk/spksrc.wheel.mk b/mk/spksrc.wheel.mk index 0ac6a77a13e..956051fff10 100644 --- a/mk/spksrc.wheel.mk +++ b/mk/spksrc.wheel.mk @@ -24,9 +24,6 @@ WHEEL_COOKIE = $(WORK_DIR)/.wheel_done ## python wheel specific configurations include ../../mk/spksrc.wheel-env.mk -## requirement processing routines -include ../../mk/spksrc.requirement.mk - ## python wheel specific configurations include ../../mk/spksrc.crossenv.mk @@ -46,7 +43,7 @@ include ../../mk/spksrc.wheel-install.mk ## -ifneq ($(strip $(REQUIREMENT)),) +ifneq ($(and $(WHEEL_NAME),$(or (WHEEL_VERISON),$(WHEEL_URL))),) download-wheels: wheel_download wheel: wheel_install else @@ -111,5 +108,5 @@ else wheel: ; endif -# endif REQUIREMENT non-empty +# endif $(and $(WHEEL_NAME),$(or (WHEEL_VERISON),$(WHEEL_URL))) non-empty endif From a857aee0c56d4cf415942284a647bd426756cbfc Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 4 Feb 2025 00:52:24 +0000 Subject: [PATCH 05/34] crossenv.mk: Revert to using $$(which ) to ensure full path --- mk/spksrc.crossenv.mk | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mk/spksrc.crossenv.mk b/mk/spksrc.crossenv.mk index f1639e8ba88..bf0d5e5e562 100644 --- a/mk/spksrc.crossenv.mk +++ b/mk/spksrc.crossenv.mk @@ -94,7 +94,7 @@ CROSSENV_CROSS_WHEEL ?= wheel$(if $(CROSSENV_CROSS_WHEEL_VERSION),==$(CROSSENV_C ### crossenv_msg_target: - @$(MSG) "Preparing crossenv for $(NAME)" + @$(MSG) "Preparing crossenv for $(NAME) - [$(WHEEL_NAME)==$(WHEEL_VERSION)]" # Create per-arch caching directory: # PIP_CACHE_DIR defaults to $(WORK_DIR)/pip @@ -184,16 +184,16 @@ endif $(RUN) chmod 755 $(CROSSENV_PATH)/build/get-pip.py @$(MSG) crossenv-$(CROSSENV_WHEEL)/build default packages: $(CROSSENV_BUILD_PIP), $(CROSSENV_BUILD_SETUPTOOLS), $(CROSSENV_BUILD_WHEEL) @. $(CROSSENV_PATH)/bin/activate ; \ - $(MSG) build-python install $(CROSSENV_BUILD_PIP) ; \ - $(RUN) build-python $(CROSSENV_PATH)/build/get-pip.py $(CROSSENV_BUILD_PIP) --no-setuptools --no-wheel --disable-pip-version-check ; \ + $(MSG) $$(which build-python) install $(CROSSENV_BUILD_PIP) ; \ + $(RUN) $(CROSSENV_PATH)/bin/build-python $(CROSSENV_PATH)/build/get-pip.py $(CROSSENV_BUILD_PIP) --no-setuptools --no-wheel --disable-pip-version-check ; \ $(MSG) build-pip Install $(CROSSENV_BUILD_SETUPTOOLS) $(CROSSENV_BUILD_WHEEL) ; \ - $(RUN) build-pip --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install $(CROSSENV_BUILD_SETUPTOOLS) $(CROSSENV_BUILD_WHEEL) + $(RUN) $$(which build-pip) --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install $(CROSSENV_BUILD_SETUPTOOLS) $(CROSSENV_BUILD_WHEEL) @$(MSG) crossenv-$(CROSSENV_WHEEL)/cross default packages: $(CROSSENV_CROSS_PIP), $(CROSSENV_CROSS_SETUPTOOLS), $(CROSSENV_CROSS_WHEEL) @. $(CROSSENV_PATH)/bin/activate ; \ $(MSG) cross-python Install $(CROSSENV_CROSS_PIP) ; \ - $(RUN) cross-python $(CROSSENV_PATH)/build/get-pip.py $(CROSSENV_CROSS_PIP) --no-setuptools --no-wheel --disable-pip-version-check ; \ + $(RUN) $$(which cross-python) $(CROSSENV_PATH)/build/get-pip.py $(CROSSENV_CROSS_PIP) --no-setuptools --no-wheel --disable-pip-version-check ; \ $(MSG) cross-pip Install $(CROSSENV_CROSS_SETUPTOOLS) $(CROSSENV_CROSS_WHEEL) ; \ - $(RUN) cross-pip --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install $(CROSSENV_CROSS_SETUPTOOLS) $(CROSSENV_CROSS_WHEEL) + $(RUN) $$(which cross-pip) --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install $(CROSSENV_CROSS_SETUPTOOLS) $(CROSSENV_CROSS_WHEEL) @$(MSG) $(MAKE) ARCH=$(ARCH) TCVERSION=$(TCVERSION) REQUIREMENT=\"$(CROSSENV_REQUIREMENTS)\" REQUIREMENT_GOAL=\"crossenv-install-$(CROSSENV_WHEEL)\" requirement ; \ MAKEFLAGS= $(MAKE) ARCH=$(ARCH) TCVERSION=$(TCVERSION) REQUIREMENT="$(CROSSENV_REQUIREMENTS)" REQUIREMENT_GOAL="crossenv-install-$(CROSSENV_WHEEL)" requirement @@ -262,10 +262,10 @@ $(CROSSENV_PATH)/build/python-cc.mk: post_crossenv_target: $(CROSSENV_TARGET) $(CROSSENV_PATH)/build/python-cc.mk @$(MSG) "Package list for $(CROSSENV_PATH)/build:" @. $(CROSSENV_PATH)/bin/activate ; \ - $(RUN) build-pip list + $(RUN) $$(which build-pip) list @$(MSG) "Package list for $(CROSSENV_PATH)/cross:" @. $(CROSSENV_PATH)/bin/activate ; \ - $(RUN) cross-pip list + $(RUN) $$(which cross-pip) list ifeq ($(wildcard $(CROSSENV_COOKIE)),) crossenv: $(CROSSENV_COOKIE) From 50276e3f17544e6dc039f3e529ad929dbdfbf864 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 4 Feb 2025 00:54:15 +0000 Subject: [PATCH 06/34] spk.mk: Include from top spk.mk the python-requirement.mk --- mk/{spksrc.requirement.mk => spksrc.python-requirement.mk} | 0 mk/spksrc.spk.mk | 3 +++ 2 files changed, 3 insertions(+) rename mk/{spksrc.requirement.mk => spksrc.python-requirement.mk} (100%) diff --git a/mk/spksrc.requirement.mk b/mk/spksrc.python-requirement.mk similarity index 100% rename from mk/spksrc.requirement.mk rename to mk/spksrc.python-requirement.mk diff --git a/mk/spksrc.spk.mk b/mk/spksrc.spk.mk index 91a4d41de82..6597420c816 100644 --- a/mk/spksrc.spk.mk +++ b/mk/spksrc.spk.mk @@ -102,6 +102,9 @@ include ../../mk/spksrc.cross-env.mk include ../../mk/spksrc.depend.mk +## python wheel requirement processing +include ../../mk/spksrc.python-requirement.mk + copy: depend include ../../mk/spksrc.wheel.mk From dfce1117102e600873f41302d93ea38012acf512 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 4 Feb 2025 00:55:16 +0000 Subject: [PATCH 07/34] py311-312: Convert crossenv requirement files to use build:cross --- .../crossenv/requirements-default.txt | 37 +++++++++---------- .../crossenv/requirements-frozenlist.txt | 15 ++++---- spk/python311/crossenv/requirements-numpy.txt | 16 ++++---- spk/python311/crossenv/requirements-yarl.txt | 15 ++++---- .../crossenv/requirements-default.txt | 37 +++++++++---------- .../crossenv/requirements-frozenlist.txt | 15 ++++---- spk/python312/crossenv/requirements-yarl.txt | 15 ++++---- 7 files changed, 76 insertions(+), 74 deletions(-) diff --git a/spk/python311/crossenv/requirements-default.txt b/spk/python311/crossenv/requirements-default.txt index 20e7bb48754..a6d420a32c9 100644 --- a/spk/python311/crossenv/requirements-default.txt +++ b/spk/python311/crossenv/requirements-default.txt @@ -1,21 +1,20 @@ -pip==24.3.1 -pip-tools==7.4.1 -setuptools==75.8.0 -build==1.2.2 -wheel==0.45.1 +build:pip==24.3.1 +build:setuptools==75.8.0 +build:wheel==0.45.1 # -# keep older version for gcc <= 4.9.x -msgpack==1.0.5 +build:build==1.2.2 +build:Cython==3.0.11 +build:maturin==1.8.1 +build:meson-python==0.17.1 +build:pip-tools==7.4.1 +build:poetry==1.8.5 +build:scikit-build==0.18.1 +build:scikit-build-core==0.10.7 +build:setuptools-rust==1.10.2 +build:setuptools-scm==8.1.0 # -cffi==1.17.1 -cryptography==44.0.0 -Cython==3.0.11 -flit==3.10.1 -maturin==1.8.1 -meson-python==0.17.1 -poetry==1.8.5 -scikit-build==0.18.1 -scikit-build-core==0.10.7 -setuptools-rust==1.10.2 -setuptools-scm==8.1.0 -typing_extensions==4.12.2 +cross:cffi==1.17.1 +cross:cryptography==44.0.0 +cross:flit==3.10.1 +cross:msgpack==1.0.5 # keep older version for gcc <= 4.9.x +cross:typing_extensions==4.12.2 diff --git a/spk/python311/crossenv/requirements-frozenlist.txt b/spk/python311/crossenv/requirements-frozenlist.txt index 4edc3b107fb..90da489a89a 100644 --- a/spk/python311/crossenv/requirements-frozenlist.txt +++ b/spk/python311/crossenv/requirements-frozenlist.txt @@ -1,8 +1,9 @@ -pip==24.3.1 -pip-tools==7.4.1 -setuptools==75.4.0 -build==1.2.2 -wheel==0.45.0 +build:pip==24.3.1 +build:setuptools==75.4.0 +build:wheel==0.45.0 # -Cython==3.0.11 -expandvars==0.12.0 +build:build==1.2.2 +build:Cython==3.0.11 +build:pip-tools==7.4.1 +# +cross:expandvars==0.12.0 diff --git a/spk/python311/crossenv/requirements-numpy.txt b/spk/python311/crossenv/requirements-numpy.txt index b5dc14ee2da..2ac792dd011 100644 --- a/spk/python311/crossenv/requirements-numpy.txt +++ b/spk/python311/crossenv/requirements-numpy.txt @@ -1,9 +1,9 @@ -pip==23.2.1 -setuptools==59.8.0 -wheel==0.41.2 +build:pip==23.2.1 +build:setuptools==59.8.0 +build:wheel==0.41.2 # -Cython==0.29.36 -meson-python==0.17.1 -scikit-build==0.18.1 -scikit-build-core==0.10.7 -setuptools-scm==8.1.0 +build:Cython==0.29.36 +build:meson-python==0.17.1 +build:scikit-build==0.18.1 +build:scikit-build-core==0.10.7 +build:setuptools-scm==8.1.0 diff --git a/spk/python311/crossenv/requirements-yarl.txt b/spk/python311/crossenv/requirements-yarl.txt index 4edc3b107fb..90da489a89a 100644 --- a/spk/python311/crossenv/requirements-yarl.txt +++ b/spk/python311/crossenv/requirements-yarl.txt @@ -1,8 +1,9 @@ -pip==24.3.1 -pip-tools==7.4.1 -setuptools==75.4.0 -build==1.2.2 -wheel==0.45.0 +build:pip==24.3.1 +build:setuptools==75.4.0 +build:wheel==0.45.0 # -Cython==3.0.11 -expandvars==0.12.0 +build:build==1.2.2 +build:Cython==3.0.11 +build:pip-tools==7.4.1 +# +cross:expandvars==0.12.0 diff --git a/spk/python312/crossenv/requirements-default.txt b/spk/python312/crossenv/requirements-default.txt index 20e7bb48754..a6d420a32c9 100644 --- a/spk/python312/crossenv/requirements-default.txt +++ b/spk/python312/crossenv/requirements-default.txt @@ -1,21 +1,20 @@ -pip==24.3.1 -pip-tools==7.4.1 -setuptools==75.8.0 -build==1.2.2 -wheel==0.45.1 +build:pip==24.3.1 +build:setuptools==75.8.0 +build:wheel==0.45.1 # -# keep older version for gcc <= 4.9.x -msgpack==1.0.5 +build:build==1.2.2 +build:Cython==3.0.11 +build:maturin==1.8.1 +build:meson-python==0.17.1 +build:pip-tools==7.4.1 +build:poetry==1.8.5 +build:scikit-build==0.18.1 +build:scikit-build-core==0.10.7 +build:setuptools-rust==1.10.2 +build:setuptools-scm==8.1.0 # -cffi==1.17.1 -cryptography==44.0.0 -Cython==3.0.11 -flit==3.10.1 -maturin==1.8.1 -meson-python==0.17.1 -poetry==1.8.5 -scikit-build==0.18.1 -scikit-build-core==0.10.7 -setuptools-rust==1.10.2 -setuptools-scm==8.1.0 -typing_extensions==4.12.2 +cross:cffi==1.17.1 +cross:cryptography==44.0.0 +cross:flit==3.10.1 +cross:msgpack==1.0.5 # keep older version for gcc <= 4.9.x +cross:typing_extensions==4.12.2 diff --git a/spk/python312/crossenv/requirements-frozenlist.txt b/spk/python312/crossenv/requirements-frozenlist.txt index 4edc3b107fb..90da489a89a 100644 --- a/spk/python312/crossenv/requirements-frozenlist.txt +++ b/spk/python312/crossenv/requirements-frozenlist.txt @@ -1,8 +1,9 @@ -pip==24.3.1 -pip-tools==7.4.1 -setuptools==75.4.0 -build==1.2.2 -wheel==0.45.0 +build:pip==24.3.1 +build:setuptools==75.4.0 +build:wheel==0.45.0 # -Cython==3.0.11 -expandvars==0.12.0 +build:build==1.2.2 +build:Cython==3.0.11 +build:pip-tools==7.4.1 +# +cross:expandvars==0.12.0 diff --git a/spk/python312/crossenv/requirements-yarl.txt b/spk/python312/crossenv/requirements-yarl.txt index 4edc3b107fb..90da489a89a 100644 --- a/spk/python312/crossenv/requirements-yarl.txt +++ b/spk/python312/crossenv/requirements-yarl.txt @@ -1,8 +1,9 @@ -pip==24.3.1 -pip-tools==7.4.1 -setuptools==75.4.0 -build==1.2.2 -wheel==0.45.0 +build:pip==24.3.1 +build:setuptools==75.4.0 +build:wheel==0.45.0 # -Cython==3.0.11 -expandvars==0.12.0 +build:build==1.2.2 +build:Cython==3.0.11 +build:pip-tools==7.4.1 +# +cross:expandvars==0.12.0 From b153e46bde2e3e42345ad5329877920e099c65cb Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 4 Feb 2025 01:34:24 +0000 Subject: [PATCH 08/34] requirement.mk: Move include from spk to wheel-env.mk --- mk/spksrc.spk.mk | 3 --- mk/spksrc.wheel-env.mk | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mk/spksrc.spk.mk b/mk/spksrc.spk.mk index 6597420c816..91a4d41de82 100644 --- a/mk/spksrc.spk.mk +++ b/mk/spksrc.spk.mk @@ -102,9 +102,6 @@ include ../../mk/spksrc.cross-env.mk include ../../mk/spksrc.depend.mk -## python wheel requirement processing -include ../../mk/spksrc.python-requirement.mk - copy: depend include ../../mk/spksrc.wheel.mk diff --git a/mk/spksrc.wheel-env.mk b/mk/spksrc.wheel-env.mk index addf5a2dc41..23421dd8674 100644 --- a/mk/spksrc.wheel-env.mk +++ b/mk/spksrc.wheel-env.mk @@ -2,6 +2,9 @@ # Configuration for python wheel build # +## python wheel requirement processing +include ../../mk/spksrc.python-requirement.mk + ##### rust specific configurations include ../../mk/spksrc.cross-rust-env.mk From fff0d33b37219ea84f6dfd13c30c94db60342bc8 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 4 Feb 2025 12:28:57 +0000 Subject: [PATCH 09/34] crossenv: Allow non-build:cross def and use $* for dep install --- mk/spksrc.crossenv.mk | 16 +++++++++------- mk/spksrc.python-requirement.mk | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/mk/spksrc.crossenv.mk b/mk/spksrc.crossenv.mk index bf0d5e5e562..c9fc4eef4eb 100644 --- a/mk/spksrc.crossenv.mk +++ b/mk/spksrc.crossenv.mk @@ -197,21 +197,22 @@ endif @$(MSG) $(MAKE) ARCH=$(ARCH) TCVERSION=$(TCVERSION) REQUIREMENT=\"$(CROSSENV_REQUIREMENTS)\" REQUIREMENT_GOAL=\"crossenv-install-$(CROSSENV_WHEEL)\" requirement ; \ MAKEFLAGS= $(MAKE) ARCH=$(ARCH) TCVERSION=$(TCVERSION) REQUIREMENT="$(CROSSENV_REQUIREMENTS)" REQUIREMENT_GOAL="crossenv-install-$(CROSSENV_WHEEL)" requirement -### TRAITER le % en $* -### TRAITER le cas de requirement avec juste pip au lien de build:pip -### SI appel via arch-- fail - doit probablement necessiter d'ajouter spksrc.requirement.mk en qque part -### Si cross alors faudrait apeller wheel_download et pointer vers link machin destination + +### +### crossenv-install- +### = $(lastword $(subst -, ,$*)) being -, or default +### crossenv-install-%: - @$(MSG) CROSSENV_PATH: $(CROSSENV_PATH) + @$(MSG) CROSSENV_PATH: $(abspath $(WORK_DIR)/crossenv-$(lastword $(subst -, ,$*))) ifeq ($(WHEEL_TYPE),build) - @. $(CROSSENV_PATH)/bin/activate ; \ + @. $(abspath $(WORK_DIR)/crossenv-$(lastword $(subst -, ,$*)))/bin/activate ; \ $(MSG) build-pip install $(WHEEL_NAME)==$(WHEEL_VERSION) ; \ $(RUN) \ PATH="$(abspath $(WORK_DIR)/../../../native/$(PYTHON_PKG_NAME)/work-native/install/usr/local/bin):$(PATH)" \ LD_LIBRARY_PATH="$(abspath $(WORK_DIR)/../../../native/$(PYTHON_PKG_NAME)/work-native/install/usr/local/lib):$(LD_LIBRARY_PATH)" \ $$(which build-pip) --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install $(WHEEL_NAME)==$(WHEEL_VERSION) else ifeq ($(WHEEL_TYPE),cross) - @. $(CROSSENV_PATH)/bin/activate ; \ + @. $(abspath $(WORK_DIR)/crossenv-$(lastword $(subst -, ,$*)))/bin/activate ; \ $(MSG) cross-pip install $(WHEEL_NAME)==$(WHEEL_VERSION) ; \ $(RUN) \ PATH="$(abspath $(WORK_DIR)/../../../native/$(PYTHON_PKG_NAME)/work-native/install/usr/local/bin):$(PATH)" \ @@ -221,6 +222,7 @@ else $(error Wheel type [$(WHEEL_TYPE)] not recognized) endif + ## ## python-cc.mk ## diff --git a/mk/spksrc.python-requirement.mk b/mk/spksrc.python-requirement.mk index ffb2bd65287..1db0234bb98 100644 --- a/mk/spksrc.python-requirement.mk +++ b/mk/spksrc.python-requirement.mk @@ -73,7 +73,7 @@ else cross:*) type=cross ;; \ crossenv:*) type=crossenv ;; \ pure:*) type=pure ;; \ - *) type=$(WHEEL_DEFAULT_PREFIX) ;; \ + *) [[ "$(REQUIREMENT_GOAL)" == crossenv-install-* ]] && type=cross || type=$(WHEEL_DEFAULT_PREFIX) ;; \ esac ; \ version=$$(echo $${wheel} | grep -oP '(?<=([<>=]=))[^ ]*' || echo "") ; \ if [ "$$(grep -s egg <<< $${requirement})" ]; then \ From 39c9e2aa519122701e026aafbf83e10869db4203 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 4 Feb 2025 12:30:03 +0000 Subject: [PATCH 10/34] py312-313: Move all $(TC_GCC) dependent wheels below python.mk --- spk/python312-wheels/Makefile | 112 +++++++++++++++++----------------- spk/python313-wheels/Makefile | 110 ++++++++++++++++----------------- 2 files changed, 111 insertions(+), 111 deletions(-) diff --git a/spk/python312-wheels/Makefile b/spk/python312-wheels/Makefile index dcad0f72ab1..2700cdc4e94 100644 --- a/spk/python312-wheels/Makefile +++ b/spk/python312-wheels/Makefile @@ -1,7 +1,7 @@ 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_REV = 2 SPK_ICON = src/python3-pip.png # Compiler must support std=c++11 @@ -30,6 +30,61 @@ WHEELS += src/requirements-pure.txt include ../../mk/spksrc.common.mk +# [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 + +# [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)" + +# [Pendulum] +# Needs atomic to build +# Serves as maturin type python-wheel.mk example +ifneq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH)) +DEPENDS += cross/pendulum +endif + +# [Pillow] +DEPENDS += cross/pillow + +# [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 + +# [pydantic-core] +DEPENDS += cross/pydantic-core + +# [PyNaCl] +DEPENDS += cross/libsodium +ENV += SODIUM_INSTALL=system + +# [PyYAML] +DEPENDS += cross/libyaml + +# [rpds-py] +# Version >= 0.22.3 requires rustc >= 1.80 +ifneq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH)) +WHEELS += src/requirements-crossenv-rpds-py.txt +endif + +## +## Addition of requirements files beyond spksrc.python.mk +## will not be taken into consideration for processing +## unless WHEELS has been previously populated. This is due to +## the makefile analysis phase which discard ifeq instructions. +## + +include ../../mk/spksrc.python.mk + # [borgbackup] # Use OpenSSL path as defined by either # spksrc.wheel-env.mk or spksrc.python.mk @@ -44,12 +99,6 @@ ifeq ($(call version_lt, $(TC_GCC), 5.0),1) WHEELS_CFLAGS += [borgbackup] -std=c11 endif -# [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 @@ -83,31 +132,11 @@ ifeq ($(call version_lt, $(TC_GCC), 5.0),1) WHEELS_CFLAGS += [msgpack] -std=c11 endif -# [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)" - # [numpy] ifeq ($(call version_gt, $(TC_GCC), 5.0),1) WHEELS += src/requirements-crossenv-numpy.txt endif -# [Pendulum] -# Needs atomic to build -# Serves as maturin type python-wheel.mk example -ifneq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH)) -DEPENDS += cross/pendulum -endif - -# [Pillow] -DEPENDS += cross/pillow - -# [pycares] -DEPENDS += cross/c-ares -ENV += PYCARES_USE_SYSTEM_LIB=1 - # [pycryptodome] ifeq ($(call version_lt, $(TC_GCC), 5.0),1) WHEELS_CFLAGS += [pycryptodome] -std=c11 @@ -118,36 +147,7 @@ ifeq ($(call version_lt, $(TC_GCC), 5.0),1) WHEELS_CFLAGS += [pycryptodomex] -std=c11 endif -# [pycurl] -DEPENDS += cross/curl -ENV += PYCURL_CURL_CONFIG=$(STAGING_INSTALL_PREFIX)/bin/curl-config - -# [pydantic-core] -DEPENDS += cross/pydantic-core - -# [PyNaCl] -DEPENDS += cross/libsodium -ENV += SODIUM_INSTALL=system - -# [PyYAML] -DEPENDS += cross/libyaml - -# [rpds-py] -# Version >= 0.22.3 requires rustc >= 1.80 -ifneq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH)) -WHEELS += src/requirements-crossenv-rpds-py.txt -endif - # [ruamel.yaml.clib] ifeq ($(call version_lt, $(TC_GCC), 5.0),1) WHEELS_CFLAGS += [ruamel.yaml.clib] -std=c11 endif - -## -## Addition of requirements files beyond spksrc.python.mk -## will not be taken into consideration for processing -## unless WHEELS has been previously populated. This is due to -## the makefile analysis phase which discard ifeq instructions. -## - -include ../../mk/spksrc.python.mk diff --git a/spk/python313-wheels/Makefile b/spk/python313-wheels/Makefile index 69176709a39..1dda3f7d097 100644 --- a/spk/python313-wheels/Makefile +++ b/spk/python313-wheels/Makefile @@ -30,6 +30,61 @@ WHEELS += src/requirements-pure.txt include ../../mk/spksrc.common.mk +# [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 + +# [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)" + +# [Pendulum] +# Needs atomic to build +# Serves as maturin type python-wheel.mk example +ifneq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH)) +DEPENDS += cross/pendulum +endif + +# [Pillow] +DEPENDS += cross/pillow + +# [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 + +# [pydantic-core] +DEPENDS += cross/pydantic-core + +# [PyNaCl] +DEPENDS += cross/libsodium +ENV += SODIUM_INSTALL=system + +# [PyYAML] +DEPENDS += cross/libyaml + +# [rpds-py] +# Version >= 0.22.3 requires rustc >= 1.80 +ifneq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH)) +WHEELS += src/requirements-crossenv-rpds-py.txt +endif + +## +## Addition of requirements files beyond spksrc.python.mk +## will not be taken into consideration for processing +## unless WHEELS has been previously populated. This is due to +## the makefile analysis phase which discard ifeq instructions. +## + +include ../../mk/spksrc.python.mk + # [borgbackup] # Use OpenSSL path as defined by either # spksrc.wheel-env.mk or spksrc.python.mk @@ -44,12 +99,6 @@ ifeq ($(call version_lt, $(TC_GCC), 5.0),1) WHEELS_CFLAGS += [borgbackup] -std=c11 endif -# [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 @@ -80,31 +129,11 @@ ifeq ($(call version_lt, $(TC_GCC), 5.0),1) WHEELS_CFLAGS += [msgpack] -std=c11 endif -# [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)" - # [numpy] ifeq ($(call version_gt, $(TC_GCC), 5.0),1) WHEELS += src/requirements-crossenv-numpy.txt endif -# [Pendulum] -# Needs atomic to build -# Serves as maturin type python-wheel.mk example -ifneq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH)) -DEPENDS += cross/pendulum -endif - -# [Pillow] -DEPENDS += cross/pillow - -# [pycares] -DEPENDS += cross/c-ares -ENV += PYCARES_USE_SYSTEM_LIB=1 - # [pycryptodome] ifeq ($(call version_lt, $(TC_GCC), 5.0),1) WHEELS_CFLAGS += [pycryptodome] -std=c11 @@ -115,36 +144,7 @@ ifeq ($(call version_lt, $(TC_GCC), 5.0),1) WHEELS_CFLAGS += [pycryptodomex] -std=c11 endif -# [pycurl] -DEPENDS += cross/curl -ENV += PYCURL_CURL_CONFIG=$(STAGING_INSTALL_PREFIX)/bin/curl-config - -# [pydantic-core] -DEPENDS += cross/pydantic-core - -# [PyNaCl] -DEPENDS += cross/libsodium -ENV += SODIUM_INSTALL=system - -# [PyYAML] -DEPENDS += cross/libyaml - -# [rpds-py] -# Version >= 0.22.3 requires rustc >= 1.80 -ifneq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH)) -WHEELS += src/requirements-crossenv-rpds-py.txt -endif - # [ruamel.yaml.clib] ifeq ($(call version_lt, $(TC_GCC), 5.0),1) WHEELS_CFLAGS += [ruamel.yaml.clib] -std=c11 endif - -## -## Addition of requirements files beyond spksrc.python.mk -## will not be taken into consideration for processing -## unless WHEELS has been previously populated. This is due to -## the makefile analysis phase which discard ifeq instructions. -## - -include ../../mk/spksrc.python.mk From edbe345ca91460718018478c72e48e61c0e2cab9 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 4 Feb 2025 12:31:14 +0000 Subject: [PATCH 11/34] py311-313: Migrate crossenv definitions files to use build:cross --- .../crossenv/requirements-default.txt | 6 ++-- .../crossenv/requirements-frozenlist.txt | 6 ++-- spk/python311/crossenv/requirements-numpy.txt | 6 ++-- spk/python311/crossenv/requirements-yarl.txt | 6 ++-- .../crossenv/requirements-default.txt | 6 ++-- .../crossenv/requirements-frozenlist.txt | 6 ++-- spk/python312/crossenv/requirements-yarl.txt | 6 ++-- .../crossenv/requirements-default.txt | 31 +++++++++---------- .../crossenv/requirements-frozenlist.txt | 9 +++--- .../crossenv/requirements-pydantic_core.txt | 12 +++---- spk/python313/crossenv/requirements-yarl.txt | 9 +++--- 11 files changed, 52 insertions(+), 51 deletions(-) diff --git a/spk/python311/crossenv/requirements-default.txt b/spk/python311/crossenv/requirements-default.txt index a6d420a32c9..bedce8a87c9 100644 --- a/spk/python311/crossenv/requirements-default.txt +++ b/spk/python311/crossenv/requirements-default.txt @@ -1,6 +1,6 @@ -build:pip==24.3.1 -build:setuptools==75.8.0 -build:wheel==0.45.1 +pip==24.3.1 +setuptools==75.8.0 +wheel==0.45.1 # build:build==1.2.2 build:Cython==3.0.11 diff --git a/spk/python311/crossenv/requirements-frozenlist.txt b/spk/python311/crossenv/requirements-frozenlist.txt index 90da489a89a..1dc9ec5602e 100644 --- a/spk/python311/crossenv/requirements-frozenlist.txt +++ b/spk/python311/crossenv/requirements-frozenlist.txt @@ -1,6 +1,6 @@ -build:pip==24.3.1 -build:setuptools==75.4.0 -build:wheel==0.45.0 +pip==24.3.1 +setuptools==75.4.0 +wheel==0.45.0 # build:build==1.2.2 build:Cython==3.0.11 diff --git a/spk/python311/crossenv/requirements-numpy.txt b/spk/python311/crossenv/requirements-numpy.txt index 2ac792dd011..16791e33c51 100644 --- a/spk/python311/crossenv/requirements-numpy.txt +++ b/spk/python311/crossenv/requirements-numpy.txt @@ -1,6 +1,6 @@ -build:pip==23.2.1 -build:setuptools==59.8.0 -build:wheel==0.41.2 +pip==23.2.1 +setuptools==59.8.0 +wheel==0.41.2 # build:Cython==0.29.36 build:meson-python==0.17.1 diff --git a/spk/python311/crossenv/requirements-yarl.txt b/spk/python311/crossenv/requirements-yarl.txt index 90da489a89a..1dc9ec5602e 100644 --- a/spk/python311/crossenv/requirements-yarl.txt +++ b/spk/python311/crossenv/requirements-yarl.txt @@ -1,6 +1,6 @@ -build:pip==24.3.1 -build:setuptools==75.4.0 -build:wheel==0.45.0 +pip==24.3.1 +setuptools==75.4.0 +wheel==0.45.0 # build:build==1.2.2 build:Cython==3.0.11 diff --git a/spk/python312/crossenv/requirements-default.txt b/spk/python312/crossenv/requirements-default.txt index a6d420a32c9..bedce8a87c9 100644 --- a/spk/python312/crossenv/requirements-default.txt +++ b/spk/python312/crossenv/requirements-default.txt @@ -1,6 +1,6 @@ -build:pip==24.3.1 -build:setuptools==75.8.0 -build:wheel==0.45.1 +pip==24.3.1 +setuptools==75.8.0 +wheel==0.45.1 # build:build==1.2.2 build:Cython==3.0.11 diff --git a/spk/python312/crossenv/requirements-frozenlist.txt b/spk/python312/crossenv/requirements-frozenlist.txt index 90da489a89a..1dc9ec5602e 100644 --- a/spk/python312/crossenv/requirements-frozenlist.txt +++ b/spk/python312/crossenv/requirements-frozenlist.txt @@ -1,6 +1,6 @@ -build:pip==24.3.1 -build:setuptools==75.4.0 -build:wheel==0.45.0 +pip==24.3.1 +setuptools==75.4.0 +wheel==0.45.0 # build:build==1.2.2 build:Cython==3.0.11 diff --git a/spk/python312/crossenv/requirements-yarl.txt b/spk/python312/crossenv/requirements-yarl.txt index 90da489a89a..1dc9ec5602e 100644 --- a/spk/python312/crossenv/requirements-yarl.txt +++ b/spk/python312/crossenv/requirements-yarl.txt @@ -1,6 +1,6 @@ -build:pip==24.3.1 -build:setuptools==75.4.0 -build:wheel==0.45.0 +pip==24.3.1 +setuptools==75.4.0 +wheel==0.45.0 # build:build==1.2.2 build:Cython==3.0.11 diff --git a/spk/python313/crossenv/requirements-default.txt b/spk/python313/crossenv/requirements-default.txt index 20e7bb48754..bedce8a87c9 100644 --- a/spk/python313/crossenv/requirements-default.txt +++ b/spk/python313/crossenv/requirements-default.txt @@ -1,21 +1,20 @@ pip==24.3.1 -pip-tools==7.4.1 setuptools==75.8.0 -build==1.2.2 wheel==0.45.1 # -# keep older version for gcc <= 4.9.x -msgpack==1.0.5 +build:build==1.2.2 +build:Cython==3.0.11 +build:maturin==1.8.1 +build:meson-python==0.17.1 +build:pip-tools==7.4.1 +build:poetry==1.8.5 +build:scikit-build==0.18.1 +build:scikit-build-core==0.10.7 +build:setuptools-rust==1.10.2 +build:setuptools-scm==8.1.0 # -cffi==1.17.1 -cryptography==44.0.0 -Cython==3.0.11 -flit==3.10.1 -maturin==1.8.1 -meson-python==0.17.1 -poetry==1.8.5 -scikit-build==0.18.1 -scikit-build-core==0.10.7 -setuptools-rust==1.10.2 -setuptools-scm==8.1.0 -typing_extensions==4.12.2 +cross:cffi==1.17.1 +cross:cryptography==44.0.0 +cross:flit==3.10.1 +cross:msgpack==1.0.5 # keep older version for gcc <= 4.9.x +cross:typing_extensions==4.12.2 diff --git a/spk/python313/crossenv/requirements-frozenlist.txt b/spk/python313/crossenv/requirements-frozenlist.txt index 4edc3b107fb..1dc9ec5602e 100644 --- a/spk/python313/crossenv/requirements-frozenlist.txt +++ b/spk/python313/crossenv/requirements-frozenlist.txt @@ -1,8 +1,9 @@ pip==24.3.1 -pip-tools==7.4.1 setuptools==75.4.0 -build==1.2.2 wheel==0.45.0 # -Cython==3.0.11 -expandvars==0.12.0 +build:build==1.2.2 +build:Cython==3.0.11 +build:pip-tools==7.4.1 +# +cross:expandvars==0.12.0 diff --git a/spk/python313/crossenv/requirements-pydantic_core.txt b/spk/python313/crossenv/requirements-pydantic_core.txt index aab8e3a040e..c027cab329a 100644 --- a/spk/python313/crossenv/requirements-pydantic_core.txt +++ b/spk/python313/crossenv/requirements-pydantic_core.txt @@ -1,10 +1,10 @@ pip==24.3.1 -pip-tools==7.4.1 setuptools==75.4.0 -build==1.2.2 wheel==0.45.0 # -# [pydantic_core] depends on Cython < 3.x -Cython==0.29.37 -maturin==1.7.4 -typing_extensions==4.12.2 +build:build==1.2.2 +build:Cython==0.29.37 # [pydantic_core] depends on Cython < 3.x +build:maturin==1.7.4 +build:pip-tools==7.4.1 +# +cross:typing_extensions==4.12.2 diff --git a/spk/python313/crossenv/requirements-yarl.txt b/spk/python313/crossenv/requirements-yarl.txt index 4edc3b107fb..667fcd669f3 100644 --- a/spk/python313/crossenv/requirements-yarl.txt +++ b/spk/python313/crossenv/requirements-yarl.txt @@ -1,8 +1,9 @@ pip==24.3.1 -pip-tools==7.4.1 setuptools==75.4.0 -build==1.2.2 wheel==0.45.0 # -Cython==3.0.11 -expandvars==0.12.0 +build:Cython==3.0.11 +build:build==1.2.2 +build:pip-tools==7.4.1 +# +cross:expandvars==0.12.0 From 5b397bfe2cd7f193b0b65fff0312c9791620722f Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Wed, 5 Feb 2025 01:42:07 +0000 Subject: [PATCH 12/34] py312-313: Temporary disable numpy --- spk/python312-wheels/src/requirements-crossenv-numpy.txt | 8 ++++---- spk/python313-wheels/src/requirements-crossenv-numpy.txt | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/spk/python312-wheels/src/requirements-crossenv-numpy.txt b/spk/python312-wheels/src/requirements-crossenv-numpy.txt index 19ed52fba98..49795d628f2 100644 --- a/spk/python312-wheels/src/requirements-crossenv-numpy.txt +++ b/spk/python312-wheels/src/requirements-crossenv-numpy.txt @@ -9,7 +9,7 @@ # - Numpy >= 1.26.x requires: # c++17, meson-python, scikit-build-core # - Older version <= 1.25.x no longer supported -numpy==2.2.2 -numpy==2.1.3 -numpy==2.0.2 -numpy==1.26.4 +#numpy==2.2.2 +#numpy==2.1.3 +#numpy==2.0.2 +#numpy==1.26.4 diff --git a/spk/python313-wheels/src/requirements-crossenv-numpy.txt b/spk/python313-wheels/src/requirements-crossenv-numpy.txt index 19ed52fba98..49795d628f2 100644 --- a/spk/python313-wheels/src/requirements-crossenv-numpy.txt +++ b/spk/python313-wheels/src/requirements-crossenv-numpy.txt @@ -9,7 +9,7 @@ # - Numpy >= 1.26.x requires: # c++17, meson-python, scikit-build-core # - Older version <= 1.25.x no longer supported -numpy==2.2.2 -numpy==2.1.3 -numpy==2.0.2 -numpy==1.26.4 +#numpy==2.2.2 +#numpy==2.1.3 +#numpy==2.0.2 +#numpy==1.26.4 From 17ece54326e21633ea101ba73b12b8b6d848a26a Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Wed, 5 Feb 2025 01:53:53 +0000 Subject: [PATCH 13/34] python*.mk: Fix crossenv PATH definition --- mk/spksrc.crossenv.mk | 6 ++++++ mk/spksrc.python-module.mk | 21 +++++++++++++-------- mk/spksrc.python-requirement.mk | 2 +- mk/spksrc.python-wheel.mk | 13 +++++++------ mk/spksrc.wheel-compile.mk | 21 +++++++++++---------- mk/spksrc.wheel-env.mk | 2 +- 6 files changed, 39 insertions(+), 26 deletions(-) diff --git a/mk/spksrc.crossenv.mk b/mk/spksrc.crossenv.mk index c9fc4eef4eb..7c178899ac8 100644 --- a/mk/spksrc.crossenv.mk +++ b/mk/spksrc.crossenv.mk @@ -16,6 +16,12 @@ # WHEEL_NAME Name of wheel to process # WHEEL_VERSION Version of wheel to process (can be empty) +# include cmake definitions +include ../../mk/spksrc.cross-cmake-env.mk + +# include meson definitions +include ../../mk/spksrc.cross-meson-env.mk + # Defined using PYTHON_PACKAGE_WORK_DIR from spksrc.python.mk or use local work directory PYTHON_WORK_DIR = $(or $(wildcard $(PYTHON_PACKAGE_WORK_DIR)),$(wildcard $(WORK_DIR))) diff --git a/mk/spksrc.python-module.mk b/mk/spksrc.python-module.mk index eb1fb797bd7..c1108f5b5f2 100644 --- a/mk/spksrc.python-module.mk +++ b/mk/spksrc.python-module.mk @@ -28,28 +28,30 @@ prepare_crossenv: compile_python_module: prepare_crossenv $(foreach e,$(shell cat $(CROSSENV_MODULE_PATH)/build/python-cc.mk),$(eval $(e))) $(eval PYTHONPATH = $(PYTHON_SITE_PACKAGES_NATIVE):$(PYTHON_LIB_NATIVE):$(INSTALL_DIR)$(INSTALL_PREFIX)/$(PYTHON_LIB_DIR)/site-packages/) - @if [ -d "$(CROSSENV_PATH)" ] ; then \ - PATH=$(call dedup, $(call merge, $(ENV), PATH, :), :):$(PYTHON_NATIVE_PATH):$(CROSSENV_PATH)/bin:$${PATH} ; \ + @. $(CROSSENV) ; \ + if [ -e "$(CROSSENV)" ] ; then \ + export PATH=$${PATH}:$(CROSSENV_PATH)/build/bin ; \ $(MSG) "crossenv: [$(CROSSENV_PATH)]" ; \ - $(MSG) "pip: [$$(which cross-pip)]" ; \ + $(MSG) "python3: [$$(which cross-python3)]" ; \ $(MSG) "maturin: [$$(which maturin)]" ; \ else \ echo "ERROR: crossenv not found!" ; \ exit 2 ; \ fi ; \ - $(MSG) PYTHONPATH=$(PYTHONPATH) cross-python3 setup.py build_ext \ + $(MSG) PYTHONPATH=$(PYTHONPATH) $$(which cross-python3) setup.py build_ext \ -I $(STAGING_INSTALL_PREFIX)/include \ -L $(STAGING_INSTALL_PREFIX)/lib $(BUILD_ARGS) ; \ - $(RUN) PYTHONPATH=$(PYTHONPATH) cross-python3 setup.py build_ext \ + $(RUN) PYTHONPATH=$(PYTHONPATH) $$(which cross-python3) setup.py build_ext \ -I $(STAGING_INSTALL_PREFIX)/include \ -L $(STAGING_INSTALL_PREFIX)/lib $(BUILD_ARGS) install_python_module: - @PATH=$(call dedup, $(call merge, $(ENV), PATH, :), :):$(PYTHON_NATIVE_PATH):$(CROSSENV_PATH)/bin:$${PATH} ; \ - $(MSG) PYTHONPATH=$(PYTHONPATH) cross-python3 setup.py install \ + @. $(CROSSENV) ; \ + export PATH=$${PATH}:$(CROSSENV_PATH)/build/bin ; \ + $(MSG) PYTHONPATH=$(PYTHONPATH) $$(which cross-python3) setup.py install \ --root $(INSTALL_DIR) \ --prefix $(INSTALL_PREFIX) $(INSTALL_ARGS) ; \ - $(RUN) PYTHONPATH=$(PYTHONPATH) cross-python3 setup.py install \ + $(RUN) PYTHONPATH=$(PYTHONPATH) $$(which cross-python3) setup.py install \ --root $(INSTALL_DIR) \ --prefix $(INSTALL_PREFIX) $(INSTALL_ARGS) @@ -69,3 +71,6 @@ all: install fix_shebang_python_module # Allow generating per-wheel crossenv include ../../mk/spksrc.crossenv.mk + +## python wheel specific configurations +include ../../mk/spksrc.wheel-env.mk diff --git a/mk/spksrc.python-requirement.mk b/mk/spksrc.python-requirement.mk index 1db0234bb98..0cfb01e2ad7 100644 --- a/mk/spksrc.python-requirement.mk +++ b/mk/spksrc.python-requirement.mk @@ -73,7 +73,7 @@ else cross:*) type=cross ;; \ crossenv:*) type=crossenv ;; \ pure:*) type=pure ;; \ - *) [[ "$(REQUIREMENT_GOAL)" == crossenv-install-* ]] && type=cross || type=$(WHEEL_DEFAULT_PREFIX) ;; \ + *) [[ "$(REQUIREMENT_GOAL)" == crossenv-install-* ]] && type=build || type=$(WHEEL_DEFAULT_PREFIX) ;; \ esac ; \ version=$$(echo $${wheel} | grep -oP '(?<=([<>=]=))[^ ]*' || echo "") ; \ if [ "$$(grep -s egg <<< $${requirement})" ]; then \ diff --git a/mk/spksrc.python-wheel.mk b/mk/spksrc.python-wheel.mk index d7bdae40302..9e00185c42a 100644 --- a/mk/spksrc.python-wheel.mk +++ b/mk/spksrc.python-wheel.mk @@ -36,19 +36,20 @@ prepare_crossenv: build_python_wheel_target: prepare_crossenv $(foreach e,$(shell cat $(CROSSENV_WHEEL_PATH)/build/python-cc.mk),$(eval $(e))) - @if [ -d "$(CROSSENV_PATH)" ] ; then \ - PATH=$(call dedup, $(call merge, $(ENV), PATH, :), :):$(PYTHON_NATIVE_PATH):$(CROSSENV_PATH)/bin:$${PATH} ; \ - $(MSG) "crossenv: [$(CROSSENV_PATH)]" ; \ - $(MSG) "pip: [$$(which cross-pip)]" ; \ + @. $(CROSSENV) ; \ + if [ -e "$(CROSSENV)" ] ; then \ + export PATH=$${PATH}:$(CROSSENV_PATH)/build/bin ; \ + $(MSG) "crossenv: [$(CROSSENV)]" ; \ + $(MSG) "python3: [$$(which cross-python3)]" ; \ $(MSG) "maturin: [$$(which maturin)]" ; \ else \ echo "ERROR: crossenv not found!" ; \ exit 2 ; \ fi ; \ - $(MSG) _PYTHON_HOST_PLATFORM=$(TC_TARGET) cross-python3 -m build $(BUILD_ARGS) \ + $(MSG) _PYTHON_HOST_PLATFORM=$(TC_TARGET) $$(which cross-python3) -m build $(BUILD_ARGS) \ --wheel $(WHEELS_BUILD_ARGS) \ --outdir $(WHEELHOUSE) ; \ - $(RUN) _PYTHON_HOST_PLATFORM=$(TC_TARGET) cross-python3 -m build $(BUILD_ARGS) \ + $(RUN) _PYTHON_HOST_PLATFORM=$(TC_TARGET) $$(which cross-python3) -m build $(BUILD_ARGS) \ --wheel $(WHEELS_BUILD_ARGS) \ --outdir $(WHEELHOUSE) diff --git a/mk/spksrc.wheel-compile.mk b/mk/spksrc.wheel-compile.mk index 797cb1b1b8e..d864896283b 100644 --- a/mk/spksrc.wheel-compile.mk +++ b/mk/spksrc.wheel-compile.mk @@ -103,10 +103,11 @@ endif cross-compile-wheel-%: SHELL:=/bin/bash cross-compile-wheel-%: $(foreach e,$(shell cat $(CROSSENV_WHEEL_PATH)/build/python-cc.mk),$(eval $(e))) - @if [ -d "$(CROSSENV_PATH)" ] ; then \ - PATH=$(call dedup, $(call merge, $(ENV), PATH, :), :):$(PYTHON_NATIVE_PATH):$(CROSSENV_PATH)/bin:$${PATH} ; \ - $(MSG) "crossenv: [$(CROSSENV_PATH)]" ; \ - $(MSG) "pip: [$$(which cross-pip)]" ; \ + @. $(CROSSENV) ; \ + if [ -e "$(CROSSENV)" ] ; then \ + export PATH=$${PATH}:$(CROSSENV_PATH)/build/bin ; \ + $(MSG) "crossenv: [$(CROSSENV)]" ; \ + $(MSG) "python3: [$$(which cross-python3)]" ; \ $(MSG) "maturin: [$$(which maturin)]" ; \ else \ echo "ERROR: crossenv not found!" ; \ @@ -119,9 +120,9 @@ cross-compile-wheel-%: $(RUN) $(MSG) \ _PYTHON_HOST_PLATFORM=\"$(TC_TARGET)\" \ PATH=$${PATH} \ - CMAKE_TOOLCHAIN_FILE=$${CMAKE_TOOLCHAIN_FILE} \ - MESON_CROSS_FILE=$${MESON_CROSS_FILE} \ - cross-pip \ + CMAKE_TOOLCHAIN_FILE=$(CMAKE_TOOLCHAIN_FILE) \ + MESON_CROSS_FILE=$(MESON_CROSS_FILE) \ + $$(which cross-python3) -m pip \ $(PIP_WHEEL_ARGS_CROSSENV) \ $${pip_global_option} \ --no-build-isolation \ @@ -130,9 +131,9 @@ cross-compile-wheel-%: $(RUN) \ _PYTHON_HOST_PLATFORM="$(TC_TARGET)" \ PATH=$${PATH} \ - CMAKE_TOOLCHAIN_FILE=$${CMAKE_TOOLCHAIN_FILE} \ - MESON_CROSS_FILE=$${MESON_CROSS_FILE} \ - cross-pip \ + CMAKE_TOOLCHAIN_FILE=$(CMAKE_TOOLCHAIN_FILE) \ + MESON_CROSS_FILE=$(MESON_CROSS_FILE) \ + $$(which cross-python3) -m pip \ $(PIP_WHEEL_ARGS_CROSSENV) \ $${pip_global_option} \ --no-build-isolation \ diff --git a/mk/spksrc.wheel-env.mk b/mk/spksrc.wheel-env.mk index 23421dd8674..77c305fcf06 100644 --- a/mk/spksrc.wheel-env.mk +++ b/mk/spksrc.wheel-env.mk @@ -2,7 +2,7 @@ # Configuration for python wheel build # -## python wheel requirement processing +### python wheel requirement processing include ../../mk/spksrc.python-requirement.mk ##### rust specific configurations From 87e4d1e3a82dcd369795b326f2320c452efb0d90 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Thu, 6 Feb 2025 23:41:59 +0000 Subject: [PATCH 14/34] python: Remove dependencies to native/python3* pip environment --- mk/spksrc.crossenv.mk | 27 ++++++++++----------------- mk/spksrc.python-module.mk | 10 +++++----- mk/spksrc.python-wheel.mk | 6 +++--- mk/spksrc.wheel-compile.mk | 25 ++++++++++++++++--------- native/python310/Makefile | 3 --- native/python311/Makefile | 3 --- native/python312/Makefile | 3 --- native/python313/Makefile | 3 --- 8 files changed, 34 insertions(+), 46 deletions(-) diff --git a/mk/spksrc.crossenv.mk b/mk/spksrc.crossenv.mk index 7c178899ac8..89036540f76 100644 --- a/mk/spksrc.crossenv.mk +++ b/mk/spksrc.crossenv.mk @@ -209,24 +209,17 @@ endif ### = $(lastword $(subst -, ,$*)) being -, or default ### crossenv-install-%: - @$(MSG) CROSSENV_PATH: $(abspath $(WORK_DIR)/crossenv-$(lastword $(subst -, ,$*))) -ifeq ($(WHEEL_TYPE),build) @. $(abspath $(WORK_DIR)/crossenv-$(lastword $(subst -, ,$*)))/bin/activate ; \ - $(MSG) build-pip install $(WHEEL_NAME)==$(WHEEL_VERSION) ; \ - $(RUN) \ - PATH="$(abspath $(WORK_DIR)/../../../native/$(PYTHON_PKG_NAME)/work-native/install/usr/local/bin):$(PATH)" \ - LD_LIBRARY_PATH="$(abspath $(WORK_DIR)/../../../native/$(PYTHON_PKG_NAME)/work-native/install/usr/local/lib):$(LD_LIBRARY_PATH)" \ - $$(which build-pip) --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install $(WHEEL_NAME)==$(WHEEL_VERSION) -else ifeq ($(WHEEL_TYPE),cross) - @. $(abspath $(WORK_DIR)/crossenv-$(lastword $(subst -, ,$*)))/bin/activate ; \ - $(MSG) cross-pip install $(WHEEL_NAME)==$(WHEEL_VERSION) ; \ - $(RUN) \ - PATH="$(abspath $(WORK_DIR)/../../../native/$(PYTHON_PKG_NAME)/work-native/install/usr/local/bin):$(PATH)" \ - LD_LIBRARY_PATH="$(abspath $(WORK_DIR)/../../../native/$(PYTHON_PKG_NAME)/work-native/install/usr/local/lib):$(LD_LIBRARY_PATH)" \ - $$(which cross-pip) --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install $(WHEEL_NAME)==$(WHEEL_VERSION) -else - $(error Wheel type [$(WHEEL_TYPE)] not recognized) -endif + if [ -e "$(abspath $(WORK_DIR)/crossenv-$(lastword $(subst -, ,$*)))/bin/activate" ] ; then \ + export PATH=$${PATH}:$(abspath $(WORK_DIR)/crossenv-$(lastword $(subst -, ,$*)))/build/bin ; \ + $(MSG) "crossenv: [$(abspath $(WORK_DIR)/crossenv-$(lastword $(subst -, ,$*)))/bin/activate]" ; \ + $(MSG) "pip: [$$(which $(WHEEL_TYPE)-pip)]" ; \ + else \ + echo "ERROR: crossenv not found!" ; \ + exit 2 ; \ + fi ; \ + $(MSG) $$(which $(WHEEL_TYPE)-pip) install $(WHEEL_NAME)==$(WHEEL_VERSION) ; \ + $(RUN) $$(which $(WHEEL_TYPE)-pip) --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install $(WHEEL_NAME)==$(WHEEL_VERSION) ## diff --git a/mk/spksrc.python-module.mk b/mk/spksrc.python-module.mk index c1108f5b5f2..99b9d71a21f 100644 --- a/mk/spksrc.python-module.mk +++ b/mk/spksrc.python-module.mk @@ -32,26 +32,26 @@ compile_python_module: prepare_crossenv if [ -e "$(CROSSENV)" ] ; then \ export PATH=$${PATH}:$(CROSSENV_PATH)/build/bin ; \ $(MSG) "crossenv: [$(CROSSENV_PATH)]" ; \ - $(MSG) "python3: [$$(which cross-python3)]" ; \ + $(MSG) "python: [$$(which cross-python)]" ; \ $(MSG) "maturin: [$$(which maturin)]" ; \ else \ echo "ERROR: crossenv not found!" ; \ exit 2 ; \ fi ; \ - $(MSG) PYTHONPATH=$(PYTHONPATH) $$(which cross-python3) setup.py build_ext \ + $(MSG) PYTHONPATH=$(PYTHONPATH) $$(which cross-python) setup.py build_ext \ -I $(STAGING_INSTALL_PREFIX)/include \ -L $(STAGING_INSTALL_PREFIX)/lib $(BUILD_ARGS) ; \ - $(RUN) PYTHONPATH=$(PYTHONPATH) $$(which cross-python3) setup.py build_ext \ + $(RUN) PYTHONPATH=$(PYTHONPATH) $$(which cross-python) setup.py build_ext \ -I $(STAGING_INSTALL_PREFIX)/include \ -L $(STAGING_INSTALL_PREFIX)/lib $(BUILD_ARGS) install_python_module: @. $(CROSSENV) ; \ export PATH=$${PATH}:$(CROSSENV_PATH)/build/bin ; \ - $(MSG) PYTHONPATH=$(PYTHONPATH) $$(which cross-python3) setup.py install \ + $(MSG) PYTHONPATH=$(PYTHONPATH) $$(which cross-python) setup.py install \ --root $(INSTALL_DIR) \ --prefix $(INSTALL_PREFIX) $(INSTALL_ARGS) ; \ - $(RUN) PYTHONPATH=$(PYTHONPATH) $$(which cross-python3) setup.py install \ + $(RUN) PYTHONPATH=$(PYTHONPATH) $$(which cross-python) setup.py install \ --root $(INSTALL_DIR) \ --prefix $(INSTALL_PREFIX) $(INSTALL_ARGS) diff --git a/mk/spksrc.python-wheel.mk b/mk/spksrc.python-wheel.mk index 9e00185c42a..d201e6144c3 100644 --- a/mk/spksrc.python-wheel.mk +++ b/mk/spksrc.python-wheel.mk @@ -40,16 +40,16 @@ build_python_wheel_target: prepare_crossenv if [ -e "$(CROSSENV)" ] ; then \ export PATH=$${PATH}:$(CROSSENV_PATH)/build/bin ; \ $(MSG) "crossenv: [$(CROSSENV)]" ; \ - $(MSG) "python3: [$$(which cross-python3)]" ; \ + $(MSG) "python: [$$(which cross-python)]" ; \ $(MSG) "maturin: [$$(which maturin)]" ; \ else \ echo "ERROR: crossenv not found!" ; \ exit 2 ; \ fi ; \ - $(MSG) _PYTHON_HOST_PLATFORM=$(TC_TARGET) $$(which cross-python3) -m build $(BUILD_ARGS) \ + $(MSG) _PYTHON_HOST_PLATFORM=$(TC_TARGET) $$(which cross-python) -m build $(BUILD_ARGS) \ --wheel $(WHEELS_BUILD_ARGS) \ --outdir $(WHEELHOUSE) ; \ - $(RUN) _PYTHON_HOST_PLATFORM=$(TC_TARGET) $$(which cross-python3) -m build $(BUILD_ARGS) \ + $(RUN) _PYTHON_HOST_PLATFORM=$(TC_TARGET) $$(which cross-python) -m build $(BUILD_ARGS) \ --wheel $(WHEELS_BUILD_ARGS) \ --outdir $(WHEELHOUSE) diff --git a/mk/spksrc.wheel-compile.mk b/mk/spksrc.wheel-compile.mk index d864896283b..7c0548e99d0 100644 --- a/mk/spksrc.wheel-compile.mk +++ b/mk/spksrc.wheel-compile.mk @@ -82,13 +82,20 @@ ifneq ($(WHEEL_TYPE),pure) $(MAKE) --no-print-directory \ cross-compile-wheel-$(WHEEL_NAME)-$(WHEEL_VERSION) else ifneq ($(filter 1 ON TRUE,$(WHEELS_PURE_PYTHON_PACKAGING_ENABLE)),) + $(foreach e,$(shell cat $(CROSSENV_WHEEL_PATH)/build/python-cc.mk),$(eval $(e))) @if [ -s "$(WHEELHOUSE)/$(WHEELS_PURE_PYTHON)" ]; then \ - export LD= LDSHARED= CPP= NM= CC= AS= RANLIB= CXX= AR= STRIP= OBJDUMP= OBJCOPY= READELF= CFLAGS= CPPFLAGS= CXXFLAGS= LDFLAGS= && \ - $(RUN) \ - PATH="$(abspath $(WORK_DIR)/../../../native/$(PYTHON_PKG_NAME)/work-native/install/usr/local/bin):$(PATH)" \ - LD_LIBRARY_PATH="$(abspath $(WORK_DIR)/../../../native/$(PYTHON_PKG_NAME)/work-native/install/usr/local/lib):$(LD_LIBRARY_PATH)" \ - $(MSG) $(PIP_NATIVE) $(PIP_WHEEL_ARGS) $(or $(WHEEL_URL),$(WHEEL_NAME)==$(WHEEL_VERSION)) ; \ - $(PIP_NATIVE) $(PIP_WHEEL_ARGS) $(or $(WHEEL_URL),$(WHEEL_NAME)==$(WHEEL_VERSION)) ; \ + . $(CROSSENV) ; \ + if [ -e "$(CROSSENV)" ] ; then \ + export LD= LDSHARED= CPP= NM= CC= AS= RANLIB= CXX= AR= STRIP= OBJDUMP= OBJCOPY= READELF= CFLAGS= CPPFLAGS= CXXFLAGS= LDFLAGS= ; \ + export PATH=$${PATH}:$(CROSSENV_PATH)/build/bin ; \ + $(MSG) "crossenv: [$(CROSSENV)]" ; \ + $(MSG) "pip: [$$(which build-pip)]" ; \ + else \ + echo "ERROR: crossenv not found!" ; \ + exit 2 ; \ + fi ; \ + $(MSG) $$(which build-pip) $(PIP_WHEEL_ARGS) $(or $(WHEEL_URL),$(WHEEL_NAME)==$(WHEEL_VERSION)) ; \ + $(RUN) $$(which build-pip) $(PIP_WHEEL_ARGS) $(or $(WHEEL_URL),$(WHEEL_NAME)==$(WHEEL_VERSION)) ; \ fi endif @@ -107,7 +114,7 @@ cross-compile-wheel-%: if [ -e "$(CROSSENV)" ] ; then \ export PATH=$${PATH}:$(CROSSENV_PATH)/build/bin ; \ $(MSG) "crossenv: [$(CROSSENV)]" ; \ - $(MSG) "python3: [$$(which cross-python3)]" ; \ + $(MSG) "python: [$$(which cross-python)]" ; \ $(MSG) "maturin: [$$(which maturin)]" ; \ else \ echo "ERROR: crossenv not found!" ; \ @@ -122,7 +129,7 @@ cross-compile-wheel-%: PATH=$${PATH} \ CMAKE_TOOLCHAIN_FILE=$(CMAKE_TOOLCHAIN_FILE) \ MESON_CROSS_FILE=$(MESON_CROSS_FILE) \ - $$(which cross-python3) -m pip \ + $$(which cross-python) -m pip \ $(PIP_WHEEL_ARGS_CROSSENV) \ $${pip_global_option} \ --no-build-isolation \ @@ -133,7 +140,7 @@ cross-compile-wheel-%: PATH=$${PATH} \ CMAKE_TOOLCHAIN_FILE=$(CMAKE_TOOLCHAIN_FILE) \ MESON_CROSS_FILE=$(MESON_CROSS_FILE) \ - $$(which cross-python3) -m pip \ + $$(which cross-python) -m pip \ $(PIP_WHEEL_ARGS_CROSSENV) \ $${pip_global_option} \ --no-build-isolation \ diff --git a/native/python310/Makefile b/native/python310/Makefile index ee3fc05f7b2..08227049619 100644 --- a/native/python310/Makefile +++ b/native/python310/Makefile @@ -33,10 +33,7 @@ PIP_NATIVE = $(WORK_DIR)/../../../native/$(PKG_NAME)/work-native/install/usr/loc PIP_VERSION = "24.3.1" PIP_WHEELS = setuptools==75.6.0 -PIP_WHEELS += setuptools-rust==1.10.2 -PIP_WHEELS += maturin==1.7.7 PIP_WHEELS += wheel==0.45.1 -PIP_WHEELS += cffi==1.17.1 PIP_WHEELS += crossenv==1.5.0 .PHONY: python310_native_post_install diff --git a/native/python311/Makefile b/native/python311/Makefile index 45224b81f70..b75d8525e8b 100644 --- a/native/python311/Makefile +++ b/native/python311/Makefile @@ -31,10 +31,7 @@ PIP_NATIVE = $(WORK_DIR)/../../../native/$(PKG_NAME)/work-native/install/usr/loc PIP_VERSION = "24.3.1" PIP_WHEELS = setuptools==75.8.0 -PIP_WHEELS += setuptools-rust==1.10.2 -PIP_WHEELS += maturin==1.8.1 PIP_WHEELS += wheel==0.45.1 -PIP_WHEELS += cffi==1.17.1 PIP_WHEELS += crossenv==1.5.0 .PHONY: python311_native_post_install diff --git a/native/python312/Makefile b/native/python312/Makefile index 769717d5749..12564d7c123 100644 --- a/native/python312/Makefile +++ b/native/python312/Makefile @@ -31,10 +31,7 @@ PIP_NATIVE = $(WORK_DIR)/../../../native/$(PKG_NAME)/work-native/install/usr/loc PIP_VERSION = "24.3.1" PIP_WHEELS = setuptools==75.8.0 -PIP_WHEELS += setuptools-rust==1.10.2 -PIP_WHEELS += maturin==1.8.1 PIP_WHEELS += wheel==0.45.1 -PIP_WHEELS += cffi==1.17.1 PIP_WHEELS += crossenv==1.5.0 .PHONY: python312_native_post_install diff --git a/native/python313/Makefile b/native/python313/Makefile index 88ba9f5eb6b..d44b4bd1f73 100644 --- a/native/python313/Makefile +++ b/native/python313/Makefile @@ -31,10 +31,7 @@ PIP_NATIVE = $(WORK_DIR)/../../../native/$(PKG_NAME)/work-native/install/usr/loc PIP_VERSION = "24.3.1" PIP_WHEELS = setuptools==75.8.0 -PIP_WHEELS += setuptools-rust==1.10.2 -PIP_WHEELS += maturin==1.8.1 PIP_WHEELS += wheel==0.45.1 -PIP_WHEELS += cffi==1.17.1 PIP_WHEELS += crossenv==1.5.0 .PHONY: python313_native_post_install From aa8b0d61cbed6a9037e949309868963844f10220 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Fri, 7 Feb 2025 00:06:53 +0000 Subject: [PATCH 15/34] python313-wheels: greenlet < 3.1 no longer supported --- spk/python313-wheels/src/requirements-crossenv-greenlet-v3.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spk/python313-wheels/src/requirements-crossenv-greenlet-v3.txt b/spk/python313-wheels/src/requirements-crossenv-greenlet-v3.txt index 837c343884b..1e48c9116dd 100644 --- a/spk/python313-wheels/src/requirements-crossenv-greenlet-v3.txt +++ b/spk/python313-wheels/src/requirements-crossenv-greenlet-v3.txt @@ -5,7 +5,6 @@ ## # [greenlet] -# - Mandatory require full c++11 support -greenlet==3.0.3 +# - v3.0 no longer builds with python 3.13 # - Mandatory require full c++20 support added with gcc >= 8 greenlet==3.1.1 From b9883bafdee5cfb8577662af5ba69a73ce7c5e53 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Fri, 7 Feb 2025 02:30:29 +0000 Subject: [PATCH 16/34] crossenv|wheel-compile.mk: Adjust PATH to handle ENV and duplicates --- mk/spksrc.crossenv.mk | 13 ++++++++++--- mk/spksrc.wheel-compile.mk | 13 +++++++------ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/mk/spksrc.crossenv.mk b/mk/spksrc.crossenv.mk index 89036540f76..b6d7b4ebf95 100644 --- a/mk/spksrc.crossenv.mk +++ b/mk/spksrc.crossenv.mk @@ -213,13 +213,20 @@ crossenv-install-%: if [ -e "$(abspath $(WORK_DIR)/crossenv-$(lastword $(subst -, ,$*)))/bin/activate" ] ; then \ export PATH=$${PATH}:$(abspath $(WORK_DIR)/crossenv-$(lastword $(subst -, ,$*)))/build/bin ; \ $(MSG) "crossenv: [$(abspath $(WORK_DIR)/crossenv-$(lastword $(subst -, ,$*)))/bin/activate]" ; \ - $(MSG) "pip: [$$(which $(WHEEL_TYPE)-pip)]" ; \ + $(MSG) "python: [$$(which $(WHEEL_TYPE)-python)]" ; \ else \ echo "ERROR: crossenv not found!" ; \ exit 2 ; \ fi ; \ - $(MSG) $$(which $(WHEEL_TYPE)-pip) install $(WHEEL_NAME)==$(WHEEL_VERSION) ; \ - $(RUN) $$(which $(WHEEL_TYPE)-pip) --cache-dir $(PIP_CACHE_DIR) --disable-pip-version-check install $(WHEEL_NAME)==$(WHEEL_VERSION) + $(MSG) \ + $$(which $(WHEEL_TYPE)-python) -m pip \ + install $(WHEEL_NAME)==$(WHEEL_VERSION) ; \ + $(RUN) \ + PATH=$${PATH} \ + $$(which $(WHEEL_TYPE)-python) -m pip \ + --cache-dir $(PIP_CACHE_DIR) \ + --disable-pip-version-check \ + install $(WHEEL_NAME)==$(WHEEL_VERSION) ## diff --git a/mk/spksrc.wheel-compile.mk b/mk/spksrc.wheel-compile.mk index 7c0548e99d0..341c2da43a3 100644 --- a/mk/spksrc.wheel-compile.mk +++ b/mk/spksrc.wheel-compile.mk @@ -63,7 +63,7 @@ ifneq ($(WHEEL_TYPE),pure) localLDFLAGS=($$(echo $(WHEELS_LDFLAGS) | sed -e 's/ \[/\n\[/g' | grep -i $(WHEEL_NAME) | cut -f2 -d] | xargs)) ; \ localCPPFLAGS=($$(echo $(WHEELS_CPPFLAGS) | sed -e 's/ \[/\n\[/g' | grep -i $(WHEEL_NAME) | cut -f2 -d] | xargs)) ; \ localCXXFLAGS=($$(echo $(WHEELS_CXXFLAGS) | sed -e 's/ \[/\n\[/g' | grep -i $(WHEEL_NAME) | cut -f2 -d] | xargs)) ; \ - $(MSG) pip build [$(WHEEL_NAME)], version: [$(WHEEL_VERSION)] \ + $(MSG) python -m pip build [$(WHEEL_NAME)], version: [$(WHEEL_VERSION)] \ $$([ "$$(echo $${localCFLAGS[@]})" ] && echo "CFLAGS=\"$${localCFLAGS[@]}\" ") \ $$([ "$$(echo $${localCPPFLAGS[@]})" ] && echo "CPPFLAGS=\"$${localCPPFLAGS[@]}\" ") \ $$([ "$$(echo $${localCXXFLAGS[@]})" ] && echo "CXXFLAGS=\"$${localCXXFLAGS[@]}\" ") \ @@ -89,13 +89,13 @@ else ifneq ($(filter 1 ON TRUE,$(WHEELS_PURE_PYTHON_PACKAGING_ENABLE)),) export LD= LDSHARED= CPP= NM= CC= AS= RANLIB= CXX= AR= STRIP= OBJDUMP= OBJCOPY= READELF= CFLAGS= CPPFLAGS= CXXFLAGS= LDFLAGS= ; \ export PATH=$${PATH}:$(CROSSENV_PATH)/build/bin ; \ $(MSG) "crossenv: [$(CROSSENV)]" ; \ - $(MSG) "pip: [$$(which build-pip)]" ; \ + $(MSG) "python: [$$(which build-python)]" ; \ else \ echo "ERROR: crossenv not found!" ; \ exit 2 ; \ fi ; \ - $(MSG) $$(which build-pip) $(PIP_WHEEL_ARGS) $(or $(WHEEL_URL),$(WHEEL_NAME)==$(WHEEL_VERSION)) ; \ - $(RUN) $$(which build-pip) $(PIP_WHEEL_ARGS) $(or $(WHEEL_URL),$(WHEEL_NAME)==$(WHEEL_VERSION)) ; \ + $(MSG) $$(which build-python) -m pip $(PIP_WHEEL_ARGS) $(or $(WHEEL_URL),$(WHEEL_NAME)==$(WHEEL_VERSION)) ; \ + $(RUN) $$(which build-python) -m pip $(PIP_WHEEL_ARGS) $(or $(WHEEL_URL),$(WHEEL_NAME)==$(WHEEL_VERSION)) ; \ fi endif @@ -112,7 +112,8 @@ cross-compile-wheel-%: $(foreach e,$(shell cat $(CROSSENV_WHEEL_PATH)/build/python-cc.mk),$(eval $(e))) @. $(CROSSENV) ; \ if [ -e "$(CROSSENV)" ] ; then \ - export PATH=$${PATH}:$(CROSSENV_PATH)/build/bin ; \ + export PATH=$$(echo $${PATH}:$(call merge, $(ENV), PATH, :):$(CROSSENV_PATH)/build/bin | awk -v RS=':' '!seen[$$0]++' | paste -sd ':') ; \ + $(MSG) "PATH: [$${PATH}]" ; \ $(MSG) "crossenv: [$(CROSSENV)]" ; \ $(MSG) "python: [$$(which cross-python)]" ; \ $(MSG) "maturin: [$$(which maturin)]" ; \ @@ -124,7 +125,7 @@ cross-compile-wheel-%: pip_global_option=$$(echo $(PIP_GLOBAL_OPTION) | sed 's/=\([^ ]*\)/="\1"/g; s/[^ ]*/--global-option=&/g') ; \ pip_global_option=$${pip_global_option}" --no-use-pep517" ; \ fi ; \ - $(RUN) $(MSG) \ + $(MSG) \ _PYTHON_HOST_PLATFORM=\"$(TC_TARGET)\" \ PATH=$${PATH} \ CMAKE_TOOLCHAIN_FILE=$(CMAKE_TOOLCHAIN_FILE) \ From c2748e0d347cded3232cbe71bf83f74779068ba5 Mon Sep 17 00:00:00 2001 From: hgy59 Date: Fri, 7 Feb 2025 13:06:32 +0100 Subject: [PATCH 17/34] update comment related to WHEELS initialization --- spk/python311-wheels/Makefile | 10 +++------- spk/python312-wheels/Makefile | 10 +++------- spk/python313-wheels/Makefile | 10 +++------- 3 files changed, 9 insertions(+), 21 deletions(-) diff --git a/spk/python311-wheels/Makefile b/spk/python311-wheels/Makefile index f86df32cac7..d194f56d3c1 100644 --- a/spk/python311-wheels/Makefile +++ b/spk/python311-wheels/Makefile @@ -26,6 +26,9 @@ LICENSE = PSF # Enable debug_info symgols #GCC_DEBUG_INFO := 1 +# IMPORTANT: WHEELS must be initialized before include of spksrc.python.mk +# later additions are ok, but WHEELS must not be empty at this point, +# otherwise the build of WHEELS is skipped WHEELS = src/requirements-abi3.txt WHEELS += src/requirements-crossenv.txt WHEELS += src/requirements-pure.txt @@ -95,13 +98,6 @@ ifneq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) WHEELS += src/requirements-crossenv-rpds-py.txt endif -## -## Addition of requirements files beyond spksrc.python.mk -## will not be taken into consideration for processing -## unless WHEELS has been previously populated. This is due to -## the makefile analysis phase which discard ifeq instructions. -## - include ../../mk/spksrc.python.mk # [greenlet] diff --git a/spk/python312-wheels/Makefile b/spk/python312-wheels/Makefile index 2700cdc4e94..11c597b4a7e 100644 --- a/spk/python312-wheels/Makefile +++ b/spk/python312-wheels/Makefile @@ -24,6 +24,9 @@ LICENSE = PSF # Enable debug_info symgols #GCC_DEBUG_INFO := 1 +# IMPORTANT: WHEELS must be initialized before include of spksrc.python.mk +# later additions are ok, but WHEELS must not be empty at this point, +# otherwise the build of WHEELS is skipped WHEELS = src/requirements-abi3.txt WHEELS += src/requirements-crossenv.txt WHEELS += src/requirements-pure.txt @@ -76,13 +79,6 @@ ifneq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH)) WHEELS += src/requirements-crossenv-rpds-py.txt endif -## -## Addition of requirements files beyond spksrc.python.mk -## will not be taken into consideration for processing -## unless WHEELS has been previously populated. This is due to -## the makefile analysis phase which discard ifeq instructions. -## - include ../../mk/spksrc.python.mk # [borgbackup] diff --git a/spk/python313-wheels/Makefile b/spk/python313-wheels/Makefile index 1dda3f7d097..aeca90c2629 100644 --- a/spk/python313-wheels/Makefile +++ b/spk/python313-wheels/Makefile @@ -24,6 +24,9 @@ LICENSE = PSF # Enable debug_info symgols #GCC_DEBUG_INFO := 1 +# IMPORTANT: WHEELS must be initialized before include of spksrc.python.mk +# later additions are ok, but WHEELS must not be empty at this point, +# otherwise the build of WHEELS is skipped WHEELS = src/requirements-abi3.txt WHEELS += src/requirements-crossenv.txt WHEELS += src/requirements-pure.txt @@ -76,13 +79,6 @@ ifneq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH)) WHEELS += src/requirements-crossenv-rpds-py.txt endif -## -## Addition of requirements files beyond spksrc.python.mk -## will not be taken into consideration for processing -## unless WHEELS has been previously populated. This is due to -## the makefile analysis phase which discard ifeq instructions. -## - include ../../mk/spksrc.python.mk # [borgbackup] From 5c83ee9d646fa2893d5a5f4a924e143b8fa1db24 Mon Sep 17 00:00:00 2001 From: hgy59 Date: Fri, 7 Feb 2025 15:08:04 +0100 Subject: [PATCH 18/34] fix build of llfuse wheel - add llfuse to python312-wheels and python313-wheels - use -std=gnu11 for gcc < 5 --- spk/python312-wheels/Makefile | 2 +- spk/python312-wheels/src/requirements-crossenv.txt | 4 +++- spk/python313-wheels/Makefile | 2 +- spk/python313-wheels/src/requirements-crossenv.txt | 4 +++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/spk/python312-wheels/Makefile b/spk/python312-wheels/Makefile index 11c597b4a7e..9e0f4470ced 100644 --- a/spk/python312-wheels/Makefile +++ b/spk/python312-wheels/Makefile @@ -113,7 +113,7 @@ endif # [llfuse] ifeq ($(call version_lt, $(TC_GCC), 5.0),1) -WHEELS_CFLAGS += [llfuse] -std=c11 +WHEELS_CFLAGS += [llfuse] -std=gnu11 endif # [lxml] diff --git a/spk/python312-wheels/src/requirements-crossenv.txt b/spk/python312-wheels/src/requirements-crossenv.txt index d420ff3d02d..7ca2b07e59a 100644 --- a/spk/python312-wheels/src/requirements-crossenv.txt +++ b/spk/python312-wheels/src/requirements-crossenv.txt @@ -27,7 +27,9 @@ cffi==1.17.1 borgbackup==1.4.0 charset_normalizer==3.4.1 immutables==0.21 -### llfuse==1.5.0 # fails to find "clock_gettime" +# [llfuse] +# gcc < 5 requires -std=gnu11 to find "clock_gettime" +llfuse==1.5.0 MarkupSafe==3.0.2 msgpack==1.1.0 # used compiled verrsion for performance msgpack_python==0.5.6 diff --git a/spk/python313-wheels/Makefile b/spk/python313-wheels/Makefile index aeca90c2629..6001d309106 100644 --- a/spk/python313-wheels/Makefile +++ b/spk/python313-wheels/Makefile @@ -110,7 +110,7 @@ endif # [llfuse] ifeq ($(call version_lt, $(TC_GCC), 5.0),1) -WHEELS_CFLAGS += [llfuse] -std=c11 +WHEELS_CFLAGS += [llfuse] -std=gnu11 endif # [lxml] diff --git a/spk/python313-wheels/src/requirements-crossenv.txt b/spk/python313-wheels/src/requirements-crossenv.txt index d420ff3d02d..7ca2b07e59a 100644 --- a/spk/python313-wheels/src/requirements-crossenv.txt +++ b/spk/python313-wheels/src/requirements-crossenv.txt @@ -27,7 +27,9 @@ cffi==1.17.1 borgbackup==1.4.0 charset_normalizer==3.4.1 immutables==0.21 -### llfuse==1.5.0 # fails to find "clock_gettime" +# [llfuse] +# gcc < 5 requires -std=gnu11 to find "clock_gettime" +llfuse==1.5.0 MarkupSafe==3.0.2 msgpack==1.1.0 # used compiled verrsion for performance msgpack_python==0.5.6 From 9b330d49a3216fb0fb3b207f2a3f61a33cfa285a Mon Sep 17 00:00:00 2001 From: hgy59 Date: Fri, 7 Feb 2025 15:08:59 +0100 Subject: [PATCH 19/34] python312: update to v3.12.9 --- cross/python312/Makefile | 2 +- cross/python312/digests | 6 +++--- native/python312/Makefile | 2 +- native/python312/digests | 6 +++--- spk/python312/Makefile | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cross/python312/Makefile b/cross/python312/Makefile index 0a9193237f8..ea7830af568 100644 --- a/cross/python312/Makefile +++ b/cross/python312/Makefile @@ -1,5 +1,5 @@ PKG_NAME = python312 -PKG_VERS = 3.12.8 +PKG_VERS = 3.12.9 PKG_VERS_MAJOR_MINOR = $(word 1,$(subst ., ,$(PKG_VERS))).$(word 2,$(subst ., ,$(PKG_VERS))) PKG_EXT = tar.xz PKG_DIST_NAME = Python-$(PKG_VERS).$(PKG_EXT) diff --git a/cross/python312/digests b/cross/python312/digests index bbc77569f89..08017a1d2b8 100644 --- a/cross/python312/digests +++ b/cross/python312/digests @@ -1,3 +1,3 @@ -Python-3.12.8.tar.xz SHA1 8872c7a124c6970833e0bde4f25d6d7d61c6af6e -Python-3.12.8.tar.xz SHA256 c909157bb25ec114e5869124cc2a9c4a4d4c1e957ca4ff553f1edc692101154e -Python-3.12.8.tar.xz MD5 d46e5bf9f2e596a3ba45fc0b3c053dd2 +Python-3.12.9.tar.xz SHA1 465d8a664e63dc5aa1f0d90cd1d0000a970ee2fb +Python-3.12.9.tar.xz SHA256 7220835d9f90b37c006e9842a8dff4580aaca4318674f947302b8d28f3f81112 +Python-3.12.9.tar.xz MD5 880942124f7d5c01e7b65cbad62dc873 diff --git a/native/python312/Makefile b/native/python312/Makefile index 12564d7c123..6e4d5eb6938 100644 --- a/native/python312/Makefile +++ b/native/python312/Makefile @@ -1,5 +1,5 @@ PKG_NAME = python312 -PKG_VERS = 3.12.8 +PKG_VERS = 3.12.9 PKG_EXT = tar.xz PKG_DIST_NAME = Python-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://www.python.org/ftp/python/$(PKG_VERS) diff --git a/native/python312/digests b/native/python312/digests index bbc77569f89..08017a1d2b8 100644 --- a/native/python312/digests +++ b/native/python312/digests @@ -1,3 +1,3 @@ -Python-3.12.8.tar.xz SHA1 8872c7a124c6970833e0bde4f25d6d7d61c6af6e -Python-3.12.8.tar.xz SHA256 c909157bb25ec114e5869124cc2a9c4a4d4c1e957ca4ff553f1edc692101154e -Python-3.12.8.tar.xz MD5 d46e5bf9f2e596a3ba45fc0b3c053dd2 +Python-3.12.9.tar.xz SHA1 465d8a664e63dc5aa1f0d90cd1d0000a970ee2fb +Python-3.12.9.tar.xz SHA256 7220835d9f90b37c006e9842a8dff4580aaca4318674f947302b8d28f3f81112 +Python-3.12.9.tar.xz MD5 880942124f7d5c01e7b65cbad62dc873 diff --git a/spk/python312/Makefile b/spk/python312/Makefile index fea0f1d29b4..f0a4c1d31ca 100644 --- a/spk/python312/Makefile +++ b/spk/python312/Makefile @@ -1,7 +1,7 @@ SPK_NAME = python312 -SPK_VERS = 3.12.8 +SPK_VERS = 3.12.9 SPK_VERS_MAJOR_MINOR = $(word 1,$(subst ., ,$(SPK_VERS))).$(word 2,$(subst ., ,$(SPK_VERS))) -SPK_REV = 1 +SPK_REV = 2 SPK_ICON = src/python3.png # Compiler must support std=c++11 From cab3b5e616169458a88bb1f353820ca631728169 Mon Sep 17 00:00:00 2001 From: hgy59 Date: Fri, 7 Feb 2025 15:09:30 +0100 Subject: [PATCH 20/34] python313: update to v3.13.2 --- cross/python313/Makefile | 2 +- cross/python313/digests | 6 +++--- native/python313/Makefile | 2 +- native/python313/digests | 6 +++--- spk/python313/Makefile | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cross/python313/Makefile b/cross/python313/Makefile index 6076b1a2ef7..d03014cc35a 100644 --- a/cross/python313/Makefile +++ b/cross/python313/Makefile @@ -1,5 +1,5 @@ PKG_NAME = python313 -PKG_VERS = 3.13.1 +PKG_VERS = 3.13.2 PKG_VERS_MAJOR_MINOR = $(word 1,$(subst ., ,$(PKG_VERS))).$(word 2,$(subst ., ,$(PKG_VERS))) PKG_EXT = tar.xz PKG_DIST_NAME = Python-$(PKG_VERS).$(PKG_EXT) diff --git a/cross/python313/digests b/cross/python313/digests index 35979854910..fedc4e80cb2 100644 --- a/cross/python313/digests +++ b/cross/python313/digests @@ -1,3 +1,3 @@ -Python-3.13.1.tar.xz SHA1 4b0c2a49a848c3c5d611416099636262a0b9090f -Python-3.13.1.tar.xz SHA256 9cf9427bee9e2242e3877dd0f6b641c1853ca461f39d6503ce260a59c80bf0d9 -Python-3.13.1.tar.xz MD5 80c16badb94ffe235280d4d9a099b8bc +Python-3.13.2.tar.xz SHA1 e4949d999f28d6ad941e766b7dac09a74efbc912 +Python-3.13.2.tar.xz SHA256 d984bcc57cd67caab26f7def42e523b1c015bbc5dc07836cf4f0b63fa159eb56 +Python-3.13.2.tar.xz MD5 4c2d9202ab4db02c9d0999b14655dfe5 diff --git a/native/python313/Makefile b/native/python313/Makefile index d44b4bd1f73..270a248bbff 100644 --- a/native/python313/Makefile +++ b/native/python313/Makefile @@ -1,5 +1,5 @@ PKG_NAME = python313 -PKG_VERS = 3.13.1 +PKG_VERS = 3.13.2 PKG_EXT = tar.xz PKG_DIST_NAME = Python-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://www.python.org/ftp/python/$(PKG_VERS) diff --git a/native/python313/digests b/native/python313/digests index 35979854910..fedc4e80cb2 100644 --- a/native/python313/digests +++ b/native/python313/digests @@ -1,3 +1,3 @@ -Python-3.13.1.tar.xz SHA1 4b0c2a49a848c3c5d611416099636262a0b9090f -Python-3.13.1.tar.xz SHA256 9cf9427bee9e2242e3877dd0f6b641c1853ca461f39d6503ce260a59c80bf0d9 -Python-3.13.1.tar.xz MD5 80c16badb94ffe235280d4d9a099b8bc +Python-3.13.2.tar.xz SHA1 e4949d999f28d6ad941e766b7dac09a74efbc912 +Python-3.13.2.tar.xz SHA256 d984bcc57cd67caab26f7def42e523b1c015bbc5dc07836cf4f0b63fa159eb56 +Python-3.13.2.tar.xz MD5 4c2d9202ab4db02c9d0999b14655dfe5 diff --git a/spk/python313/Makefile b/spk/python313/Makefile index dbbe8d6dbc1..7f6c7c13dd4 100644 --- a/spk/python313/Makefile +++ b/spk/python313/Makefile @@ -1,7 +1,7 @@ SPK_NAME = python313 -SPK_VERS = 3.13.1 +SPK_VERS = 3.13.2 SPK_VERS_MAJOR_MINOR = $(word 1,$(subst ., ,$(SPK_VERS))).$(word 2,$(subst ., ,$(SPK_VERS))) -SPK_REV = 1 +SPK_REV = 2 SPK_ICON = src/python3.png # Compiler must support std=c++11 From 0a0b59829d4da384d71fd35a25091cf30947018d Mon Sep 17 00:00:00 2001 From: hgy59 Date: Fri, 7 Feb 2025 18:03:51 +0100 Subject: [PATCH 21/34] exclude llfuse for python313 - llfuse wheel fails to build with python313 --- spk/python313-wheels/src/requirements-crossenv.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/spk/python313-wheels/src/requirements-crossenv.txt b/spk/python313-wheels/src/requirements-crossenv.txt index 7ca2b07e59a..1e900a55d1d 100644 --- a/spk/python313-wheels/src/requirements-crossenv.txt +++ b/spk/python313-wheels/src/requirements-crossenv.txt @@ -27,9 +27,7 @@ cffi==1.17.1 borgbackup==1.4.0 charset_normalizer==3.4.1 immutables==0.21 -# [llfuse] -# gcc < 5 requires -std=gnu11 to find "clock_gettime" -llfuse==1.5.0 +### llfuse==1.5.0 MarkupSafe==3.0.2 msgpack==1.1.0 # used compiled verrsion for performance msgpack_python==0.5.6 From b95b9aa3f889e1fb2605d5553c0f41d95f0e10c3 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 11 Feb 2025 02:03:41 +0000 Subject: [PATCH 22/34] python: Enable crossenv|wheel logs and avoid renaming manylinux --- .gitignore | 2 ++ mk/spksrc.crossenv.mk | 15 ++++++++++++--- mk/spksrc.wheel-compile.mk | 2 +- mk/spksrc.wheel-install.mk | 8 +++++--- mk/spksrc.wheel.mk | 2 +- 5 files changed, 21 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 9c30aabe191..9e7c90b4a91 100644 --- a/.gitignore +++ b/.gitignore @@ -8,8 +8,10 @@ cross/*/status* kernel/*/work* spk/*/work* spk/*/build* +spk/*/crossenv* spk/*/publish* spk/*/status* +spk/*/wheel* diyspk/*/work* diyspk/*/build* diyspk/*/status* diff --git a/mk/spksrc.crossenv.mk b/mk/spksrc.crossenv.mk index b6d7b4ebf95..c347c0ded0c 100644 --- a/mk/spksrc.crossenv.mk +++ b/mk/spksrc.crossenv.mk @@ -42,6 +42,11 @@ CROSSENV_CONFIG_PATH = $(abspath $(PYTHON_WORK_DIR)/../crossenv) CROSSENV_CONFIG_DEFAULT = $(CROSSENV_CONFIG_PATH)/requirements-default.txt CROSSENV_PATH = $(abspath $(WORK_DIR)/crossenv-$(CROSSENV_WHEEL)/) +# manylinux2014 enablement for older archs +ifneq ($(or $(findstring $(ARCH),comcerto2k), $(findstring 1,$(call version_lt, $(TCVERSION), 7.0))),) +MANYLINUX = --manylinux manylinux2014 +endif + ### ifeq ($(strip $(PRE_CROSSENV_TARGET)),) @@ -100,7 +105,11 @@ CROSSENV_CROSS_WHEEL ?= wheel$(if $(CROSSENV_CROSS_WHEEL_VERSION),==$(CROSSENV_C ### crossenv_msg_target: +ifneq ($(WHEEL_NAME),) @$(MSG) "Preparing crossenv for $(NAME) - [$(WHEEL_NAME)==$(WHEEL_VERSION)]" +else + @$(MSG) "Preparing crossenv for $(NAME) - [default]" +endif # Create per-arch caching directory: # PIP_CACHE_DIR defaults to $(WORK_DIR)/pip @@ -113,7 +122,7 @@ pre_crossenv_target: crossenv_msg_target crossenv-%: @$(MSG) $(MAKE) ARCH=\"$(firstword $(subst -, ,$*))\" TCVERSION=\"$(lastword $(subst -, ,$*))\" WHEEL_NAME=\"$(WHEEL_NAME)\" WHEEL_VERSION=\"$(WHEEL_VERSION)\" WHEEL_DEPENDENCY=\"$(WHEEL_DEPENDENCY)\" crossenv - @MAKEFLAGS= $(MAKE) ARCH="$(firstword $(subst -, ,$*))" TCVERSION="$(lastword $(subst -, ,$*))" WHEEL_NAME="$(WHEEL_NAME)" WHEEL_VERSION="$(WHEEL_VERSION)" WHEEL_DEPENDENCY=\"$(WHEEL_DEPENDENCY)\" crossenv --no-print-directory + @MAKEFLAGS= $(MAKE) ARCH="$(firstword $(subst -, ,$*))" TCVERSION="$(lastword $(subst -, ,$*))" WHEEL_NAME="$(WHEEL_NAME)" WHEEL_VERSION="$(WHEEL_VERSION)" WHEEL_DEPENDENCY=\"$(WHEEL_DEPENDENCY)\" crossenv --no-print-directory | tee --append $(CURDIR)/crossenv-$(firstword $(subst -, ,$*))-$(lastword $(subst -, ,$*)).log #### @@ -171,7 +180,7 @@ build_crossenv_target: pre_crossenv_target --ar $(TC_PATH)$(TC_PREFIX)ar \ --sysroot $(TC_SYSROOT) \ --env LIBRARY_PATH= \ - --manylinux manylinux2014 \ + $(MANYLINUX) \ "$(CROSSENV_PATH)" @$(RUN) $(PYTHON_NATIVE) -m crossenv $(abspath $(PYTHON_WORK_DIR)/install/$(PYTHON_INSTALL_PREFIX)/bin/python$(PYTHON_PKG_VERS_MAJOR_MINOR)) \ --cc $(TC_PATH)$(TC_PREFIX)gcc \ @@ -179,7 +188,7 @@ build_crossenv_target: pre_crossenv_target --ar $(TC_PATH)$(TC_PREFIX)ar \ --sysroot $(TC_SYSROOT) \ --env LIBRARY_PATH= \ - --manylinux manylinux2014 \ + $(MANYLINUX) \ "$(CROSSENV_PATH)" ifeq ($(CROSSENV_WHEEL),default) @$(MSG) Setting default crossenv $(CROSSENV_PATH) diff --git a/mk/spksrc.wheel-compile.mk b/mk/spksrc.wheel-compile.mk index 341c2da43a3..c4dd2529a28 100644 --- a/mk/spksrc.wheel-compile.mk +++ b/mk/spksrc.wheel-compile.mk @@ -54,9 +54,9 @@ ifeq ($(wildcard $(WHEELHOUSE)),) @mkdir -p $(WHEELHOUSE) endif @$(MSG) Compiling wheel [$(WHEEL_NAME)], version [$(WHEEL_VERSION)], type [$(WHEEL_TYPE)] -ifneq ($(WHEEL_TYPE),pure) @$(MSG) $(MAKE) WHEEL_NAME=\"$(WHEEL_NAME)\" WHEEL_VERSION=\"$(WHEEL_VERSION)\" crossenv-$(ARCH)-$(TCVERSION) @MAKEFLAGS= $(MAKE) WHEEL_NAME="$(WHEEL_NAME)" WHEEL_VERSION="$(WHEEL_VERSION)" crossenv-$(ARCH)-$(TCVERSION) --no-print-directory +ifneq ($(WHEEL_TYPE),pure) @[ "$(WHEEL_TYPE)" = "$(WHEELS_LIMITED_API)" ] && abi3="--build-option=--py-limited-api=$(PYTHON_LIMITED_API)" || abi3="" ; \ global_options=$$(echo $(WHEELS_BUILD_ARGS) | sed -e 's/ \[/\n\[/g' | grep -i $(WHEEL_NAME) | cut -f2 -d] | xargs) ; \ localCFLAGS=($$(echo $(WHEELS_CFLAGS) | sed -e 's/ \[/\n\[/g' | grep -i $(WHEEL_NAME) | cut -f2 -d] | xargs)) ; \ diff --git a/mk/spksrc.wheel-install.mk b/mk/spksrc.wheel-install.mk index 071c82d3256..390f7e742a1 100644 --- a/mk/spksrc.wheel-install.mk +++ b/mk/spksrc.wheel-install.mk @@ -79,13 +79,15 @@ install_python_wheel: fi ; \ if stat -t *.whl >/dev/null 2>&1; then \ for w in *.whl; do \ - if echo $${w} | grep -iq "-none-any\.whl" ; then \ + if echo $${w} | grep -Eiq 'manylinux.*\.whl' ; then \ + _new_name=$${w} ; \ + elif echo $${w} | grep -iq "-none-any\.whl" ; then \ _new_name=$$(echo $$w | cut -d"-" -f -3)-none-any.whl ; \ else \ _new_name=$$(echo $$w | sed -E "s/(.*-).*(linux_).*(\.whl)/\1\2$(PYTHON_ARCH)\3/") ; \ fi ; \ - $(MSG) Copying to wheelhouse: $$_new_name ; \ - cp -f $$w $(STAGING_INSTALL_WHEELHOUSE)/$$_new_name ; \ + $(MSG) "Copying to wheelhouse: $${w} -> share/wheelhouse/$${_new_name}" ; \ + cp -f $${w} $(STAGING_INSTALL_WHEELHOUSE)/$${_new_name} ; \ done ; \ fi ; \ fi diff --git a/mk/spksrc.wheel.mk b/mk/spksrc.wheel.mk index 956051fff10..c097dc14118 100644 --- a/mk/spksrc.wheel.mk +++ b/mk/spksrc.wheel.mk @@ -72,7 +72,7 @@ pre_wheel_target: wheel_msg_target wheel-%: ifneq ($(strip $(WHEELS)),) @$(MSG) $(MAKE) ARCH=$(firstword $(subst -, ,$*)) TCVERSION=$(lastword $(subst -, ,$*)) WHEELS=\"$(WHEELS)\" wheel - @MAKEFLAGS= $(MAKE) ARCH=$(firstword $(subst -, ,$*)) TCVERSION=$(lastword $(subst -, ,$*)) WHEELS="$(WHEELS)" wheel --no-print-directory + @MAKEFLAGS= $(MAKE) ARCH=$(firstword $(subst -, ,$*)) TCVERSION=$(lastword $(subst -, ,$*)) WHEELS="$(WHEELS)" wheel --no-print-directory | tee --append $(CURDIR)/wheel-$(firstword $(subst -, ,$*))-$(lastword $(subst -, ,$*)).log else $(error No python wheel to process) endif From 601e93bf2bd6af8725a2efa2e9f2141245e872c0 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 11 Feb 2025 11:14:28 +0000 Subject: [PATCH 23/34] crossenv.mk: Remove the manylinux2014 option as unecessary --- mk/spksrc.crossenv.mk | 7 ------- 1 file changed, 7 deletions(-) diff --git a/mk/spksrc.crossenv.mk b/mk/spksrc.crossenv.mk index c347c0ded0c..e686e9b4d90 100644 --- a/mk/spksrc.crossenv.mk +++ b/mk/spksrc.crossenv.mk @@ -42,11 +42,6 @@ CROSSENV_CONFIG_PATH = $(abspath $(PYTHON_WORK_DIR)/../crossenv) CROSSENV_CONFIG_DEFAULT = $(CROSSENV_CONFIG_PATH)/requirements-default.txt CROSSENV_PATH = $(abspath $(WORK_DIR)/crossenv-$(CROSSENV_WHEEL)/) -# manylinux2014 enablement for older archs -ifneq ($(or $(findstring $(ARCH),comcerto2k), $(findstring 1,$(call version_lt, $(TCVERSION), 7.0))),) -MANYLINUX = --manylinux manylinux2014 -endif - ### ifeq ($(strip $(PRE_CROSSENV_TARGET)),) @@ -180,7 +175,6 @@ build_crossenv_target: pre_crossenv_target --ar $(TC_PATH)$(TC_PREFIX)ar \ --sysroot $(TC_SYSROOT) \ --env LIBRARY_PATH= \ - $(MANYLINUX) \ "$(CROSSENV_PATH)" @$(RUN) $(PYTHON_NATIVE) -m crossenv $(abspath $(PYTHON_WORK_DIR)/install/$(PYTHON_INSTALL_PREFIX)/bin/python$(PYTHON_PKG_VERS_MAJOR_MINOR)) \ --cc $(TC_PATH)$(TC_PREFIX)gcc \ @@ -188,7 +182,6 @@ build_crossenv_target: pre_crossenv_target --ar $(TC_PATH)$(TC_PREFIX)ar \ --sysroot $(TC_SYSROOT) \ --env LIBRARY_PATH= \ - $(MANYLINUX) \ "$(CROSSENV_PATH)" ifeq ($(CROSSENV_WHEEL),default) @$(MSG) Setting default crossenv $(CROSSENV_PATH) From bf163fe8e517cf24245f6f99573d99e3693a3e09 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 11 Feb 2025 21:05:26 +0000 Subject: [PATCH 24/34] wheel-install.mk: No longer manage manylinux --- mk/spksrc.wheel-install.mk | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mk/spksrc.wheel-install.mk b/mk/spksrc.wheel-install.mk index 390f7e742a1..e7773458835 100644 --- a/mk/spksrc.wheel-install.mk +++ b/mk/spksrc.wheel-install.mk @@ -79,9 +79,7 @@ install_python_wheel: fi ; \ if stat -t *.whl >/dev/null 2>&1; then \ for w in *.whl; do \ - if echo $${w} | grep -Eiq 'manylinux.*\.whl' ; then \ - _new_name=$${w} ; \ - elif echo $${w} | grep -iq "-none-any\.whl" ; then \ + if echo $${w} | grep -iq "-none-any\.whl" ; then \ _new_name=$$(echo $$w | cut -d"-" -f -3)-none-any.whl ; \ else \ _new_name=$$(echo $$w | sed -E "s/(.*-).*(linux_).*(\.whl)/\1\2$(PYTHON_ARCH)\3/") ; \ From bbeafcaaf94494b43ee68d4999021281c90cc965 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Wed, 12 Feb 2025 00:57:58 +0000 Subject: [PATCH 25/34] wheel+crossenv: Fix log redirection for crossenv and wheel builds --- mk/spksrc.common.mk | 6 ++++++ mk/spksrc.crossenv.mk | 6 ++++-- mk/spksrc.python-module.mk | 21 +++++++++++++------ mk/spksrc.python-requirement.mk | 36 +++++++++++++++++++++++++++++++-- mk/spksrc.python-wheel.mk | 20 +++++++++++------- mk/spksrc.wheel-install.mk | 17 ++++++++++------ mk/spksrc.wheel.mk | 8 ++++---- 7 files changed, 87 insertions(+), 27 deletions(-) diff --git a/mk/spksrc.common.mk b/mk/spksrc.common.mk index abbb8d8cd85..c6fc8fc9f36 100644 --- a/mk/spksrc.common.mk +++ b/mk/spksrc.common.mk @@ -123,11 +123,17 @@ endif # Always send PSTAT output to proper log file # independantly from active Makefile location ifeq ($(filter cross diyspk spk,$(shell basename $(dir $(abspath $(dir $$PWD))))),) +CROSSENV_LOG = $(shell pwdx $$(ps -o ppid= $$(echo $$PPID)) | cut -f2 -d:)/crossenv-$(ARCH)-$(TCVERSION).log PSTAT_LOG = $(shell pwdx $$(ps -o ppid= $$(echo $$PPID)) | cut -f2 -d:)/status-build.log +WHEEL_LOG = $(shell pwdx $$(ps -o ppid= $$(echo $$PPID)) | cut -f2 -d:)/wheel-$(ARCH)-$(TCVERSION).log else ifneq ($(wildcard $(WORK_DIR)),) +CROSSENV_LOG = $(WORK_DIR)/../crossenv-$(ARCH)-$(TCVERSION).log PSTAT_LOG = $(WORK_DIR)/../status-build.log +WHEEL_LOG = $(WORK_DIR)/../wheel-$(ARCH)-$(TCVERSION).log else +CROSSENV_LOG = $(CURDIR)/crossenv-$(ARCH)-$(TCVERSION).log PSTAT_LOG = $(CURDIR)/status-build.log +WHEEL_LOG = $(CURDIR)/wheel-$(ARCH)-$(TCVERSION).log endif # Terminal colors diff --git a/mk/spksrc.crossenv.mk b/mk/spksrc.crossenv.mk index e686e9b4d90..03fdc5bd6f7 100644 --- a/mk/spksrc.crossenv.mk +++ b/mk/spksrc.crossenv.mk @@ -115,9 +115,11 @@ pre_crossenv_target: crossenv_msg_target ### +crossenv-%: SHELL:=/bin/bash crossenv-%: - @$(MSG) $(MAKE) ARCH=\"$(firstword $(subst -, ,$*))\" TCVERSION=\"$(lastword $(subst -, ,$*))\" WHEEL_NAME=\"$(WHEEL_NAME)\" WHEEL_VERSION=\"$(WHEEL_VERSION)\" WHEEL_DEPENDENCY=\"$(WHEEL_DEPENDENCY)\" crossenv - @MAKEFLAGS= $(MAKE) ARCH="$(firstword $(subst -, ,$*))" TCVERSION="$(lastword $(subst -, ,$*))" WHEEL_NAME="$(WHEEL_NAME)" WHEEL_VERSION="$(WHEEL_VERSION)" WHEEL_DEPENDENCY=\"$(WHEEL_DEPENDENCY)\" crossenv --no-print-directory | tee --append $(CURDIR)/crossenv-$(firstword $(subst -, ,$*))-$(lastword $(subst -, ,$*)).log + @$(MSG) $(MAKE) ARCH=\"$(firstword $(subst -, ,$*))\" TCVERSION=\"$(lastword $(subst -, ,$*))\" WHEEL_NAME=\"$(WHEEL_NAME)\" WHEEL_VERSION=\"$(WHEEL_VERSION)\" WHEEL_DEPENDENCY=\"$(WHEEL_DEPENDENCY)\" crossenv | tee --append $(CROSSENV_LOG) + @MAKEFLAGS= $(MAKE) ARCH="$(firstword $(subst -, ,$*))" TCVERSION="$(lastword $(subst -, ,$*))" WHEEL_NAME="$(WHEEL_NAME)" WHEEL_VERSION="$(WHEEL_VERSION)" WHEEL_DEPENDENCY=\"$(WHEEL_DEPENDENCY)\" crossenv --no-print-directory | tee --append $(CROSSENV_LOG) ; \ + [ $${PIPESTATUS[0]} -eq 0 ] || false #### diff --git a/mk/spksrc.python-module.mk b/mk/spksrc.python-module.mk index 99b9d71a21f..f9f3da24dbd 100644 --- a/mk/spksrc.python-module.mk +++ b/mk/spksrc.python-module.mk @@ -25,10 +25,12 @@ prepare_crossenv: @MAKEFLAGS= $(MAKE) WHEEL_NAME="$(PKG_NAME)" WHEEL_VERSION="$(PKG_VERS)" crossenv-$(ARCH)-$(TCVERSION) --no-print-directory ### Python extension module rules +compile_python_module: SHELL:=/bin/bash compile_python_module: prepare_crossenv $(foreach e,$(shell cat $(CROSSENV_MODULE_PATH)/build/python-cc.mk),$(eval $(e))) $(eval PYTHONPATH = $(PYTHON_SITE_PACKAGES_NATIVE):$(PYTHON_LIB_NATIVE):$(INSTALL_DIR)$(INSTALL_PREFIX)/$(PYTHON_LIB_DIR)/site-packages/) - @. $(CROSSENV) ; \ + @set -o pipefail; { \ + . $(CROSSENV) ; \ if [ -e "$(CROSSENV)" ] ; then \ export PATH=$${PATH}:$(CROSSENV_PATH)/build/bin ; \ $(MSG) "crossenv: [$(CROSSENV_PATH)]" ; \ @@ -43,27 +45,34 @@ compile_python_module: prepare_crossenv -L $(STAGING_INSTALL_PREFIX)/lib $(BUILD_ARGS) ; \ $(RUN) PYTHONPATH=$(PYTHONPATH) $$(which cross-python) setup.py build_ext \ -I $(STAGING_INSTALL_PREFIX)/include \ - -L $(STAGING_INSTALL_PREFIX)/lib $(BUILD_ARGS) + -L $(STAGING_INSTALL_PREFIX)/lib $(BUILD_ARGS) ; \ + } > >(tee --append $(WHEEL_LOG)) 2>&1 ; [ $${PIPESTATUS[0]} -eq 0 ] || false +install_python_module: SHELL:=/bin/bash install_python_module: - @. $(CROSSENV) ; \ + @set -o pipefail; { \ + . $(CROSSENV) ; \ export PATH=$${PATH}:$(CROSSENV_PATH)/build/bin ; \ $(MSG) PYTHONPATH=$(PYTHONPATH) $$(which cross-python) setup.py install \ --root $(INSTALL_DIR) \ --prefix $(INSTALL_PREFIX) $(INSTALL_ARGS) ; \ $(RUN) PYTHONPATH=$(PYTHONPATH) $$(which cross-python) setup.py install \ --root $(INSTALL_DIR) \ - --prefix $(INSTALL_PREFIX) $(INSTALL_ARGS) + --prefix $(INSTALL_PREFIX) $(INSTALL_ARGS) ; \ + } > >(tee --append $(WHEEL_LOG)) 2>&1 ; [ $${PIPESTATUS[0]} -eq 0 ] || false +fix_shebang_python_module: SHELL:=/bin/bash fix_shebang_python_module: - @cat PLIST | sed 's/:/ /' | while read type file ; do \ + @set -o pipefail; { \ + cat PLIST | sed 's/:/ /' | while read type file ; do \ for script in $(INSTALL_DIR)$(INSTALL_PREFIX)/$${file} ; do \ if file $${script} | grep -iq "python script" ; then \ echo -n "Fixing shebang for $${script} ... " ; \ sed -i -e '1 s|^#!.*$$|#!$(PYTHON_INTERPRETER)|g' $${script} > /dev/null 2>&1 && echo "ok" || echo "failed!" ; \ fi ; \ done ; \ - done + done ; \ + } > >(tee --append $(WHEEL_LOG)) 2>&1 ; [ $${PIPESTATUS[0]} -eq 0 ] || false all: install fix_shebang_python_module diff --git a/mk/spksrc.python-requirement.mk b/mk/spksrc.python-requirement.mk index 0cfb01e2ad7..575347a9b85 100644 --- a/mk/spksrc.python-requirement.mk +++ b/mk/spksrc.python-requirement.mk @@ -94,8 +94,40 @@ else query+=" | awk -F'-' '{print \$$2}'" ; \ version=$$(eval $${query} 2>/dev/null) ; \ fi ; \ - $(MSG) $(MAKE) ARCH=$(ARCH) TCVERSION=$(TCVERSION) WHEEL_NAME=\"$${name}\" WHEEL_VERSION=\"$${version}\" WHEEL_TYPE=\"$(or $(WHEEL_TYPE),$${type})\" WHEEL_URL=\"$${wheel_url}\" $(REQUIREMENT_GOAL) ; \ - MAKEFLAGS= $(MAKE) ARCH="$(ARCH)" TCVERSION="$(TCVERSION)" WHEEL_NAME="$${name}" WHEEL_VERSION="$${version}" WHEEL_TYPE="$(or $(WHEEL_TYPE),$${type})" WHEEL_URL="$${wheel_url}" $(REQUIREMENT_GOAL) --no-print-directory ; \ + if [ "$(REQUIREMENT_GOAL)" = "wheel" ]; then \ + $(MSG) $(MAKE) ARCH=\"$(ARCH)\" \ + TCVERSION=\"$(TCVERSION)\" \ + WHEEL_NAME=\"$${name}\" \ + WHEEL_VERSION=\"$${version}\" \ + WHEEL_TYPE=\"$(or $(WHEEL_TYPE),$${type})\" \ + WHEEL_URL=\"$${wheel_url}\" \ + $(REQUIREMENT_GOAL) | tee --append $(WHEEL_LOG) ; \ + MAKEFLAGS= $(MAKE) ARCH="$(ARCH)" \ + TCVERSION="$(TCVERSION)" \ + WHEEL_NAME="$${name}" \ + WHEEL_VERSION="$${version}" \ + WHEEL_TYPE="$(or $(WHEEL_TYPE),$${type})" \ + WHEEL_URL="$${wheel_url}" \ + $(REQUIREMENT_GOAL) \ + --no-print-directory | tee --append $(WHEEL_LOG) ; \ + [ $${PIPESTATUS[0]} -eq 0 ] || false ; \ + else \ + $(MSG) $(MAKE) ARCH=\"$(ARCH)\" \ + TCVERSION=\"$(TCVERSION)\" \ + WHEEL_NAME=\"$${name}\" \ + WHEEL_VERSION=\"$${version}\" \ + WHEEL_TYPE=\"$(or $(WHEEL_TYPE),$${type})\" \ + WHEEL_URL=\"$${wheel_url}\" \ + $(REQUIREMENT_GOAL) ; \ + MAKEFLAGS= $(MAKE) ARCH="$(ARCH)" \ + TCVERSION="$(TCVERSION)" \ + WHEEL_NAME="$${name}" \ + WHEEL_VERSION="$${version}" \ + WHEEL_TYPE="$(or $(WHEEL_TYPE),$${type})" \ + WHEEL_URL="$${wheel_url}" \ + $(REQUIREMENT_GOAL) \ + --no-print-directory ; \ + fi ; \ done endif diff --git a/mk/spksrc.python-wheel.mk b/mk/spksrc.python-wheel.mk index d201e6144c3..34021634390 100644 --- a/mk/spksrc.python-wheel.mk +++ b/mk/spksrc.python-wheel.mk @@ -34,9 +34,11 @@ prepare_crossenv: @$(MSG) $(MAKE) WHEEL_NAME=\"$(PKG_NAME)\" WHEEL_VERSION=\"$(PKG_VERS)\" crossenv-$(ARCH)-$(TCVERSION) @MAKEFLAGS= $(MAKE) WHEEL_NAME="$(PKG_NAME)" WHEEL_VERSION="$(PKG_VERS)" crossenv-$(ARCH)-$(TCVERSION) --no-print-directory +build_python_wheel_target: SHELL:=/bin/bash build_python_wheel_target: prepare_crossenv $(foreach e,$(shell cat $(CROSSENV_WHEEL_PATH)/build/python-cc.mk),$(eval $(e))) - @. $(CROSSENV) ; \ + @set -o pipefail; { \ + . $(CROSSENV) ; \ if [ -e "$(CROSSENV)" ] ; then \ export PATH=$${PATH}:$(CROSSENV_PATH)/build/bin ; \ $(MSG) "crossenv: [$(CROSSENV)]" ; \ @@ -51,20 +53,24 @@ build_python_wheel_target: prepare_crossenv --outdir $(WHEELHOUSE) ; \ $(RUN) _PYTHON_HOST_PLATFORM=$(TC_TARGET) $$(which cross-python) -m build $(BUILD_ARGS) \ --wheel $(WHEELS_BUILD_ARGS) \ - --outdir $(WHEELHOUSE) + --outdir $(WHEELHOUSE) ; \ + } > >(tee --append $(WHEEL_LOG)) 2>&1 ; [ $${PIPESTATUS[0]} -eq 0 ] || false -install_python_wheel_target: - @$(MSG) $(MAKE) REQUIREMENT=\"$(PKG_NAME)==$(PKG_VERS)\" \ +install_python_wheel_target: SHELL:=/bin/bash +install_python_wheel_target: + @set -o pipefail; { \ + $(MSG) $(MAKE) REQUIREMENT=\"$(PKG_NAME)==$(PKG_VERS)\" \ WHEEL_NAME=\"$(PKG_NAME)\" \ WHEEL_VERSION=\"$(PKG_VERS)\" \ WHEEL_TYPE=\"cross\" \ - wheel_install - @MAKEFLAGS= $(MAKE) REQUIREMENT="$(PKG_NAME)==$(PKG_VERS)" \ + wheel_install ; \ + MAKEFLAGS= $(MAKE) REQUIREMENT="$(PKG_NAME)==$(PKG_VERS)" \ WHEEL_NAME="$(PKG_NAME)" \ WHEEL_VERSION="$(PKG_VERS)" \ WHEEL_TYPE="cross" \ --no-print-directory \ - wheel_install + wheel_install ; \ + } > >(tee --append $(WHEEL_LOG)) 2>&1 ; [ $${PIPESTATUS[0]} -eq 0 ] || false ### diff --git a/mk/spksrc.wheel-install.mk b/mk/spksrc.wheel-install.mk index e7773458835..9c09f6aa830 100644 --- a/mk/spksrc.wheel-install.mk +++ b/mk/spksrc.wheel-install.mk @@ -44,7 +44,8 @@ pre_wheel_install_target: wheel_install_msg_target wheel_install_target: SHELL:=/bin/bash wheel_install_target: - @$(MSG) Installing wheel [$(WHEEL_NAME)], version [$(WHEEL_VERSION)], type [$(WHEEL_TYPE)] ; \ + @set -o pipefail; { \ + $(MSG) Installing wheel [$(WHEEL_NAME)], version [$(WHEEL_VERSION)], type [$(WHEEL_TYPE)] ; \ case $(WHEEL_TYPE) in \ abi3) $(MSG) Adding $(WHEEL_NAME)==$(WHEEL_VERSION) to wheelhouse/$(WHEELS_LIMITED_API) ; \ echo $(WHEEL_NAME)==$(WHEEL_VERSION) | sed -e '/^[[:blank:]]*$$\|^#/d' >> $(WHEELHOUSE)/$(WHEELS_LIMITED_API) ; \ @@ -60,13 +61,16 @@ wheel_install_target: ;; \ *) $(MSG) No type found for wheel [$(WHEEL_NAME)==$(WHEEL_VERSION)] ; \ ;; \ - esac - @for file in $$(ls -1 $(WHEELHOUSE)/requirements-*.txt) ; do \ + esac ; \ + for file in $$(ls -1 $(WHEELHOUSE)/requirements-*.txt) ; do \ sort -u -o $${file}{,} ; \ - done + done ; \ + } > >(tee --append $(WHEEL_LOG)) 2>&1 ; [ $${PIPESTATUS[0]} -eq 0 ] || false +install_python_wheel: SHELL:=/bin/bash install_python_wheel: - @if [ -d "$(WHEELHOUSE)" ] ; then \ + @set -o pipefail; { \ + if [ -d "$(WHEELHOUSE)" ] ; then \ mkdir -p $(STAGING_INSTALL_WHEELHOUSE) ; \ cd $(WHEELHOUSE) ; \ if stat -t requirements*.txt >/dev/null 2>&1; then \ @@ -88,7 +92,8 @@ install_python_wheel: cp -f $${w} $(STAGING_INSTALL_WHEELHOUSE)/$${_new_name} ; \ done ; \ fi ; \ - fi + fi ; \ + } > >(tee --append $(WHEEL_LOG)) 2>&1 ; [ $${PIPESTATUS[0]} -eq 0 ] || false post_wheel_install_target: $(WHEEL_INSTALL_TARGET) diff --git a/mk/spksrc.wheel.mk b/mk/spksrc.wheel.mk index c097dc14118..638a42478bb 100644 --- a/mk/spksrc.wheel.mk +++ b/mk/spksrc.wheel.mk @@ -71,8 +71,8 @@ pre_wheel_target: wheel_msg_target wheel-%: ifneq ($(strip $(WHEELS)),) - @$(MSG) $(MAKE) ARCH=$(firstword $(subst -, ,$*)) TCVERSION=$(lastword $(subst -, ,$*)) WHEELS=\"$(WHEELS)\" wheel - @MAKEFLAGS= $(MAKE) ARCH=$(firstword $(subst -, ,$*)) TCVERSION=$(lastword $(subst -, ,$*)) WHEELS="$(WHEELS)" wheel --no-print-directory | tee --append $(CURDIR)/wheel-$(firstword $(subst -, ,$*))-$(lastword $(subst -, ,$*)).log + @$(MSG) $(MAKE) ARCH=$(firstword $(subst -, ,$*)) TCVERSION=$(lastword $(subst -, ,$*)) WHEELS=\"$(WHEELS)\" wheel | tee --append $(WHEEL_LOG) + @MAKEFLAGS= $(MAKE) ARCH=$(firstword $(subst -, ,$*)) TCVERSION=$(lastword $(subst -, ,$*)) WHEELS="$(WHEELS)" wheel --no-print-directory || false else $(error No python wheel to process) endif @@ -83,13 +83,13 @@ ifneq ($(wildcard $(abspath $(addprefix $(WORK_DIR)/../,$(WHEELS)))),) @set -e ; \ for requirement in $(wildcard $(abspath $(addprefix $(WORK_DIR)/../,$(WHEELS)))) ; do \ $(MSG) $(MAKE) ARCH=$(ARCH) TCVERSION=$(TCVERSION) REQUIREMENT=\"$${requirement}\" REQUIREMENT_GOAL=\"$(WHEEL_GOAL)\" requirement ; \ - MAKEFLAGS= $(MAKE) ARCH="$(ARCH)" TCVERSION="$(TCVERSION)" REQUIREMENT="$${requirement}" REQUIREMENT_GOAL="$(WHEEL_GOAL)" requirement --no-print-directory || exit 1 ; \ + MAKEFLAGS= $(MAKE) ARCH="$(ARCH)" TCVERSION="$(TCVERSION)" REQUIREMENT="$${requirement}" REQUIREMENT_GOAL="$(WHEEL_GOAL)" requirement --no-print-directory || false ; \ done else @set -e ; \ for requirement in $(filter-out $(addprefix src/,$(notdir $(wildcard $(abspath $(addprefix $(WORK_DIR)/../,$(WHEELS)))))),$(WHEELS)) ; do \ $(MSG) $(MAKE) ARCH=$(ARCH) TCVERSION=$(TCVERSION) REQUIREMENT=\"$${requirement}\" REQUIREMENT_GOAL=\"$(WHEEL_GOAL)\" requirement ; \ - MAKEFLAGS= $(MAKE) ARCH="$(ARCH)" TCVERSION="$(TCVERSION)" REQUIREMENT="$${requirement}" REQUIREMENT_GOAL="$(WHEEL_GOAL)" requirement --no-print-directory || exit 1 ; \ + MAKEFLAGS= $(MAKE) ARCH="$(ARCH)" TCVERSION="$(TCVERSION)" REQUIREMENT="$${requirement}" REQUIREMENT_GOAL="$(WHEEL_GOAL)" requirement --no-print-directory || false ; \ done endif From 1f083e3304fd7775d0250e646c296d82ff19bed7 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Wed, 12 Feb 2025 01:32:44 +0000 Subject: [PATCH 26/34] deluge+python312-wheels: Remove package bump --- spk/deluge/Makefile | 2 +- spk/python312-wheels/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spk/deluge/Makefile b/spk/deluge/Makefile index 6dcf5e29d74..70b5699fc52 100644 --- a/spk/deluge/Makefile +++ b/spk/deluge/Makefile @@ -1,6 +1,6 @@ SPK_NAME = deluge SPK_VERS = 2.1.1.127 -SPK_REV = 25 +SPK_REV = 24 SPK_ICON = src/deluge.png PYTHON_PACKAGE = python311 diff --git a/spk/python312-wheels/Makefile b/spk/python312-wheels/Makefile index 9e0f4470ced..6a8b5ea6dbf 100644 --- a/spk/python312-wheels/Makefile +++ b/spk/python312-wheels/Makefile @@ -1,7 +1,7 @@ SPK_NAME = python312-wheels SPK_VERS = 1.0 SPK_VERS_MAJOR_MINOR = $(word 1,$(subst ., ,$(SPK_VERS))).$(word 2,$(subst ., ,$(SPK_VERS))) -SPK_REV = 2 +SPK_REV = 1 SPK_ICON = src/python3-pip.png # Compiler must support std=c++11 From 014a9835ea9d96dd8f0274dddc796928eddd90c6 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Wed, 12 Feb 2025 01:34:06 +0000 Subject: [PATCH 27/34] python311-wheels: Remove package bump --- spk/python311-wheels/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spk/python311-wheels/Makefile b/spk/python311-wheels/Makefile index d194f56d3c1..e9c62abec28 100644 --- a/spk/python311-wheels/Makefile +++ b/spk/python311-wheels/Makefile @@ -1,7 +1,7 @@ SPK_NAME = python311-wheels SPK_VERS = 1.0 SPK_VERS_MAJOR_MINOR = $(word 1,$(subst ., ,$(SPK_VERS))).$(word 2,$(subst ., ,$(SPK_VERS))) -SPK_REV = 2 +SPK_REV = 1 SPK_ICON = src/python3-pip.png # Platform "powerpc-none-linux-gnuspe" with compiler "gcc" is not supported by the From 921f67c5fd8fd9a66fc7674aff785f9f6d8f65d2 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Thu, 13 Feb 2025 00:16:48 +0000 Subject: [PATCH 28/34] wheel-compile.mk: Fix issue of first pure-python wheel being skipped --- mk/spksrc.python-requirement.mk | 2 +- mk/spksrc.wheel-compile.mk | 51 +++++++++++++++++++-------------- 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/mk/spksrc.python-requirement.mk b/mk/spksrc.python-requirement.mk index 575347a9b85..59726be53fb 100644 --- a/mk/spksrc.python-requirement.mk +++ b/mk/spksrc.python-requirement.mk @@ -65,7 +65,7 @@ ifneq ($(wildcard $(REQUIREMENT)),) done < <(grep -svH -e "^\#" -e "^\$$" $(wildcard $(REQUIREMENT)) | sed 's/\s* #.*//') else @for requirement in $(REQUIREMENT) ; do \ - $(MSG) Processing requirement unit [$${requirement}] ; \ + $(MSG) Processing requirement [$${requirement}] ; \ wheel=$$(echo $${requirement} | sed -E "s/^(abi3|build|cross|crossenv|pure)://") ; \ case $${requirement} in \ abi3:*) type=abi3 ;; \ diff --git a/mk/spksrc.wheel-compile.mk b/mk/spksrc.wheel-compile.mk index c4dd2529a28..786492d6ade 100644 --- a/mk/spksrc.wheel-compile.mk +++ b/mk/spksrc.wheel-compile.mk @@ -46,16 +46,15 @@ wheel_compile_msg_target: @$(MSG) "Processing wheels of $(NAME)" pre_wheel_compile_target: wheel_compile_msg_target - -wheel_compile_target: SHELL:=/bin/bash -wheel_compile_target: ifeq ($(wildcard $(WHEELHOUSE)),) @$(MSG) Creating wheelhouse directory: $(WHEELHOUSE) @mkdir -p $(WHEELHOUSE) endif - @$(MSG) Compiling wheel [$(WHEEL_NAME)], version [$(WHEEL_VERSION)], type [$(WHEEL_TYPE)] @$(MSG) $(MAKE) WHEEL_NAME=\"$(WHEEL_NAME)\" WHEEL_VERSION=\"$(WHEEL_VERSION)\" crossenv-$(ARCH)-$(TCVERSION) @MAKEFLAGS= $(MAKE) WHEEL_NAME="$(WHEEL_NAME)" WHEEL_VERSION="$(WHEEL_VERSION)" crossenv-$(ARCH)-$(TCVERSION) --no-print-directory + +wheel_compile_target: SHELL:=/bin/bash +wheel_compile_target: pre_wheel_compile_target ifneq ($(WHEEL_TYPE),pure) @[ "$(WHEEL_TYPE)" = "$(WHEELS_LIMITED_API)" ] && abi3="--build-option=--py-limited-api=$(PYTHON_LIMITED_API)" || abi3="" ; \ global_options=$$(echo $(WHEELS_BUILD_ARGS) | sed -e 's/ \[/\n\[/g' | grep -i $(WHEEL_NAME) | cut -f2 -d] | xargs) ; \ @@ -82,33 +81,26 @@ ifneq ($(WHEEL_TYPE),pure) $(MAKE) --no-print-directory \ cross-compile-wheel-$(WHEEL_NAME)-$(WHEEL_VERSION) else ifneq ($(filter 1 ON TRUE,$(WHEELS_PURE_PYTHON_PACKAGING_ENABLE)),) - $(foreach e,$(shell cat $(CROSSENV_WHEEL_PATH)/build/python-cc.mk),$(eval $(e))) - @if [ -s "$(WHEELHOUSE)/$(WHEELS_PURE_PYTHON)" ]; then \ - . $(CROSSENV) ; \ - if [ -e "$(CROSSENV)" ] ; then \ - export LD= LDSHARED= CPP= NM= CC= AS= RANLIB= CXX= AR= STRIP= OBJDUMP= OBJCOPY= READELF= CFLAGS= CPPFLAGS= CXXFLAGS= LDFLAGS= ; \ - export PATH=$${PATH}:$(CROSSENV_PATH)/build/bin ; \ - $(MSG) "crossenv: [$(CROSSENV)]" ; \ - $(MSG) "python: [$$(which build-python)]" ; \ - else \ - echo "ERROR: crossenv not found!" ; \ - exit 2 ; \ - fi ; \ - $(MSG) $$(which build-python) -m pip $(PIP_WHEEL_ARGS) $(or $(WHEEL_URL),$(WHEEL_NAME)==$(WHEEL_VERSION)) ; \ - $(RUN) $$(which build-python) -m pip $(PIP_WHEEL_ARGS) $(or $(WHEEL_URL),$(WHEEL_NAME)==$(WHEEL_VERSION)) ; \ - fi + @REQUIREMENT=$(or $(WHEEL_URL),$(WHEEL_NAME)==$(WHEEL_VERSION)) \ + WHEEL_NAME=$(WHEEL_NAME) \ + WHEEL_VERSION=$(WHEEL_VERSION) \ + $(MAKE) --no-print-directory \ + pure-build-wheel-$(WHEEL_NAME)-$(WHEEL_VERSION) +else + $(error No wheel to process) endif ## ## crossenv PATH environment requires a combination of: -## 1) unique PATH variable from $(ENV) -> using merge + dedup macros +## 1) unique PATH variable from $(ENV) -> using merge macro + awk to dedup ## Note: Multiple declarations of ENV += PATH=bla creates confusion in its interpretation. ## Solution implemented fetches all PATH from ENV and combine them in reversed order. -## 2) access to maturin from native/python/.../bin -> ${PYTHON_NATIVE_PATH}/bin +## 2) access to maturin from crossenv/build/bin -> ${CROSSENV_PATH}/build/bin ## 3) access to crossenv/bin/cross* tools, mainly cross-pip -> ${CROSSENV_PATH}/bin ## cross-compile-wheel-%: SHELL:=/bin/bash cross-compile-wheel-%: + @$(MSG) Cross-compiling Python wheel [$(WHEEL_NAME)], version [$(WHEEL_VERSION)], type [$(WHEEL_TYPE)] $(foreach e,$(shell cat $(CROSSENV_WHEEL_PATH)/build/python-cc.mk),$(eval $(e))) @. $(CROSSENV) ; \ if [ -e "$(CROSSENV)" ] ; then \ @@ -148,6 +140,23 @@ cross-compile-wheel-%: $(ABI3) \ $(REQUIREMENT) +pure-build-wheel-%: SHELL:=/bin/bash +pure-build-wheel-%: + @$(MSG) Building pure Python wheel [$(WHEEL_NAME)], version [$(WHEEL_VERSION)], type [$(WHEEL_TYPE)] + $(foreach e,$(shell cat $(CROSSENV_WHEEL_PATH)/build/python-cc.mk),$(eval $(e))) + @. $(CROSSENV) ; \ + if [ -e "$(CROSSENV)" ] ; then \ + export LD= LDSHARED= CPP= NM= CC= AS= RANLIB= CXX= AR= STRIP= OBJDUMP= OBJCOPY= READELF= CFLAGS= CPPFLAGS= CXXFLAGS= LDFLAGS= ; \ + export PATH=$${PATH}:$(CROSSENV_PATH)/build/bin ; \ + $(MSG) "crossenv: [$(CROSSENV)]" ; \ + $(MSG) "python: [$$(which build-python)]" ; \ + else \ + echo "ERROR: crossenv not found!" ; \ + exit 2 ; \ + fi ; \ + $(MSG) $$(which build-python) -m pip $(PIP_WHEEL_ARGS) $(or $(WHEEL_URL),$(WHEEL_NAME)==$(WHEEL_VERSION)) ; \ + $(RUN) $$(which build-python) -m pip $(PIP_WHEEL_ARGS) $(or $(WHEEL_URL),$(WHEEL_NAME)==$(WHEEL_VERSION)) + post_wheel_compile_target: $(WHEEL_COMPILE_TARGET) ifeq ($(wildcard $(WHEEL_COMPILE_COOKIE)),) From a386c3c6261bca269ca3209590e580e6f789a5b7 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Thu, 13 Feb 2025 01:41:49 +0000 Subject: [PATCH 29/34] py312-313: Add atom with its crossenv definition --- spk/python312-wheels/src/requirements-crossenv.txt | 7 +++++++ spk/python312/crossenv/requirements-atom.txt | 7 +++++++ spk/python313-wheels/src/requirements-crossenv.txt | 7 +++++++ spk/python313/crossenv/requirements-atom.txt | 7 +++++++ 4 files changed, 28 insertions(+) create mode 100644 spk/python312/crossenv/requirements-atom.txt create mode 100644 spk/python313/crossenv/requirements-atom.txt diff --git a/spk/python312-wheels/src/requirements-crossenv.txt b/spk/python312-wheels/src/requirements-crossenv.txt index 7ca2b07e59a..560bd32f311 100644 --- a/spk/python312-wheels/src/requirements-crossenv.txt +++ b/spk/python312-wheels/src/requirements-crossenv.txt @@ -24,6 +24,13 @@ cffi==1.17.1 # All tested and can be enabled but may conflict # with local python apps requirements +# [atom] +# Requires +# - build:setuptools-scm +# - cross:cppy +atom==0.10.5 +atom==0.11.0 + borgbackup==1.4.0 charset_normalizer==3.4.1 immutables==0.21 diff --git a/spk/python312/crossenv/requirements-atom.txt b/spk/python312/crossenv/requirements-atom.txt new file mode 100644 index 00000000000..eea9bcfcc18 --- /dev/null +++ b/spk/python312/crossenv/requirements-atom.txt @@ -0,0 +1,7 @@ +pip==24.3.1 +setuptools==75.8.0 +wheel==0.45.1 +# +build:setuptools-scm==8.1.0 +# +cross:cppy==1.3.1 diff --git a/spk/python313-wheels/src/requirements-crossenv.txt b/spk/python313-wheels/src/requirements-crossenv.txt index 1e900a55d1d..fd4e2aca03c 100644 --- a/spk/python313-wheels/src/requirements-crossenv.txt +++ b/spk/python313-wheels/src/requirements-crossenv.txt @@ -24,6 +24,13 @@ cffi==1.17.1 # All tested and can be enabled but may conflict # with local python apps requirements +# [atom] +# Requires +# - build:setuptools-scm +# - cross:cppy +atom==0.10.5 +atom==0.11.0 + borgbackup==1.4.0 charset_normalizer==3.4.1 immutables==0.21 diff --git a/spk/python313/crossenv/requirements-atom.txt b/spk/python313/crossenv/requirements-atom.txt new file mode 100644 index 00000000000..eea9bcfcc18 --- /dev/null +++ b/spk/python313/crossenv/requirements-atom.txt @@ -0,0 +1,7 @@ +pip==24.3.1 +setuptools==75.8.0 +wheel==0.45.1 +# +build:setuptools-scm==8.1.0 +# +cross:cppy==1.3.1 From 362e78e0c0991bf2f91006b4159d7da5d932d7b0 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Thu, 13 Feb 2025 02:31:32 +0000 Subject: [PATCH 30/34] crossenv.mk: Add --machine flag to fix poetry resulting filemame --- mk/spksrc.crossenv.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mk/spksrc.crossenv.mk b/mk/spksrc.crossenv.mk index 03fdc5bd6f7..e161186939c 100644 --- a/mk/spksrc.crossenv.mk +++ b/mk/spksrc.crossenv.mk @@ -177,6 +177,7 @@ build_crossenv_target: pre_crossenv_target --ar $(TC_PATH)$(TC_PREFIX)ar \ --sysroot $(TC_SYSROOT) \ --env LIBRARY_PATH= \ + --machine $(PYTHON_ARCH)-linux-gnu \ "$(CROSSENV_PATH)" @$(RUN) $(PYTHON_NATIVE) -m crossenv $(abspath $(PYTHON_WORK_DIR)/install/$(PYTHON_INSTALL_PREFIX)/bin/python$(PYTHON_PKG_VERS_MAJOR_MINOR)) \ --cc $(TC_PATH)$(TC_PREFIX)gcc \ @@ -184,6 +185,7 @@ build_crossenv_target: pre_crossenv_target --ar $(TC_PATH)$(TC_PREFIX)ar \ --sysroot $(TC_SYSROOT) \ --env LIBRARY_PATH= \ + --machine $(PYTHON_ARCH)-linux-gnu \ "$(CROSSENV_PATH)" ifeq ($(CROSSENV_WHEEL),default) @$(MSG) Setting default crossenv $(CROSSENV_PATH) From eae68d58c33447202c045ae322ceb2de7fd75723 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Thu, 13 Feb 2025 02:33:07 +0000 Subject: [PATCH 31/34] py313: Remove atom==0.10.5 as not compatible --- spk/python313-wheels/src/requirements-crossenv.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/spk/python313-wheels/src/requirements-crossenv.txt b/spk/python313-wheels/src/requirements-crossenv.txt index fd4e2aca03c..0bd4e914d87 100644 --- a/spk/python313-wheels/src/requirements-crossenv.txt +++ b/spk/python313-wheels/src/requirements-crossenv.txt @@ -28,7 +28,6 @@ cffi==1.17.1 # Requires # - build:setuptools-scm # - cross:cppy -atom==0.10.5 atom==0.11.0 borgbackup==1.4.0 From b67a58c840bbd6b52835af6ad6560b63d49073a0 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Thu, 13 Feb 2025 12:34:29 +0000 Subject: [PATCH 32/34] wheel-compile.mk: Manage false-positive relatively to crossenv --- mk/spksrc.wheel-compile.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mk/spksrc.wheel-compile.mk b/mk/spksrc.wheel-compile.mk index 786492d6ade..1ef47469d49 100644 --- a/mk/spksrc.wheel-compile.mk +++ b/mk/spksrc.wheel-compile.mk @@ -50,8 +50,10 @@ ifeq ($(wildcard $(WHEELHOUSE)),) @$(MSG) Creating wheelhouse directory: $(WHEELHOUSE) @mkdir -p $(WHEELHOUSE) endif +ifneq ($(or $(filter-out pure,$(WHEEL_TYPE)),$(filter 1 ON TRUE,$(WHEELS_PURE_PYTHON_PACKAGING_ENABLE))),) @$(MSG) $(MAKE) WHEEL_NAME=\"$(WHEEL_NAME)\" WHEEL_VERSION=\"$(WHEEL_VERSION)\" crossenv-$(ARCH)-$(TCVERSION) @MAKEFLAGS= $(MAKE) WHEEL_NAME="$(WHEEL_NAME)" WHEEL_VERSION="$(WHEEL_VERSION)" crossenv-$(ARCH)-$(TCVERSION) --no-print-directory +endif wheel_compile_target: SHELL:=/bin/bash wheel_compile_target: pre_wheel_compile_target @@ -86,6 +88,8 @@ else ifneq ($(filter 1 ON TRUE,$(WHEELS_PURE_PYTHON_PACKAGING_ENABLE)),) WHEEL_VERSION=$(WHEEL_VERSION) \ $(MAKE) --no-print-directory \ pure-build-wheel-$(WHEEL_NAME)-$(WHEEL_VERSION) +else ifeq ($(filter 1 ON TRUE,$(WHEELS_PURE_PYTHON_PACKAGING_ENABLE)),) + @echo "WARNING: Skipping building pure Python wheel [$(WHEEL_NAME)], version [$(WHEEL_VERSION)], type [$(WHEEL_TYPE)] - pure python packaging disabled" else $(error No wheel to process) endif From d22dbbe0dbdc68d0da5c80b128c67de2a7c95e85 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Fri, 14 Feb 2025 01:22:37 +0000 Subject: [PATCH 33/34] crossenv.mk: Use TC_TARGET official arch definition triplet This allows for example to declare using gnuspe for using SPE (Signal Processing Engine) for instance for qoriq. --- mk/spksrc.crossenv.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mk/spksrc.crossenv.mk b/mk/spksrc.crossenv.mk index e161186939c..ba5eb93e017 100644 --- a/mk/spksrc.crossenv.mk +++ b/mk/spksrc.crossenv.mk @@ -177,7 +177,7 @@ build_crossenv_target: pre_crossenv_target --ar $(TC_PATH)$(TC_PREFIX)ar \ --sysroot $(TC_SYSROOT) \ --env LIBRARY_PATH= \ - --machine $(PYTHON_ARCH)-linux-gnu \ + --machine $(TC_TARGET) \ "$(CROSSENV_PATH)" @$(RUN) $(PYTHON_NATIVE) -m crossenv $(abspath $(PYTHON_WORK_DIR)/install/$(PYTHON_INSTALL_PREFIX)/bin/python$(PYTHON_PKG_VERS_MAJOR_MINOR)) \ --cc $(TC_PATH)$(TC_PREFIX)gcc \ @@ -185,7 +185,7 @@ build_crossenv_target: pre_crossenv_target --ar $(TC_PATH)$(TC_PREFIX)ar \ --sysroot $(TC_SYSROOT) \ --env LIBRARY_PATH= \ - --machine $(PYTHON_ARCH)-linux-gnu \ + --machine $(TC_TARGET) \ "$(CROSSENV_PATH)" ifeq ($(CROSSENV_WHEEL),default) @$(MSG) Setting default crossenv $(CROSSENV_PATH) From 1f1d1ab4e350e6c3a7eb51af917550f943429806 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Fri, 14 Feb 2025 10:36:50 +0000 Subject: [PATCH 34/34] common.mk: Rename crossenv and wheel build logs for proper sorting --- mk/spksrc.common.mk | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mk/spksrc.common.mk b/mk/spksrc.common.mk index c6fc8fc9f36..a3e2753f764 100644 --- a/mk/spksrc.common.mk +++ b/mk/spksrc.common.mk @@ -123,17 +123,17 @@ endif # Always send PSTAT output to proper log file # independantly from active Makefile location ifeq ($(filter cross diyspk spk,$(shell basename $(dir $(abspath $(dir $$PWD))))),) -CROSSENV_LOG = $(shell pwdx $$(ps -o ppid= $$(echo $$PPID)) | cut -f2 -d:)/crossenv-$(ARCH)-$(TCVERSION).log +CROSSENV_LOG = $(shell pwdx $$(ps -o ppid= $$(echo $$PPID)) | cut -f2 -d:)/build-$(ARCH)-$(TCVERSION)-crossenv.log PSTAT_LOG = $(shell pwdx $$(ps -o ppid= $$(echo $$PPID)) | cut -f2 -d:)/status-build.log -WHEEL_LOG = $(shell pwdx $$(ps -o ppid= $$(echo $$PPID)) | cut -f2 -d:)/wheel-$(ARCH)-$(TCVERSION).log +WHEEL_LOG = $(shell pwdx $$(ps -o ppid= $$(echo $$PPID)) | cut -f2 -d:)/build-$(ARCH)-$(TCVERSION)-wheel.log else ifneq ($(wildcard $(WORK_DIR)),) -CROSSENV_LOG = $(WORK_DIR)/../crossenv-$(ARCH)-$(TCVERSION).log +CROSSENV_LOG = $(WORK_DIR)/../build-$(ARCH)-$(TCVERSION)-crossenv.log PSTAT_LOG = $(WORK_DIR)/../status-build.log -WHEEL_LOG = $(WORK_DIR)/../wheel-$(ARCH)-$(TCVERSION).log +WHEEL_LOG = $(WORK_DIR)/../build-$(ARCH)-$(TCVERSION)-wheel.log else -CROSSENV_LOG = $(CURDIR)/crossenv-$(ARCH)-$(TCVERSION).log +CROSSENV_LOG = $(CURDIR)/build-$(ARCH)-$(TCVERSION)-crossenv.log PSTAT_LOG = $(CURDIR)/status-build.log -WHEEL_LOG = $(CURDIR)/wheel-$(ARCH)-$(TCVERSION).log +WHEEL_LOG = $(CURDIR)/build-$(ARCH)-$(TCVERSION)-wheel.log endif # Terminal colors