Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Review content of crossenv to respect build vs cross. #6437

Open
wants to merge 33 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
5fee872
spksrc.requirement.mk: Unified method to process requirements files
th0ma7 Feb 2, 2025
5703977
Bump pakage versions to enforce github-action build processing
th0ma7 Feb 2, 2025
2e15b37
crossenv.mk: Basic unit testing functional - will fail to build
th0ma7 Feb 3, 2025
92c3988
spksrc.wheel-*.mk: Complete REQUIREMENT removal to use WHEEL_URL
th0ma7 Feb 4, 2025
a857aee
crossenv.mk: Revert to using $$(which ) to ensure full path
th0ma7 Feb 4, 2025
50276e3
spk.mk: Include from top spk.mk the python-requirement.mk
th0ma7 Feb 4, 2025
dfce111
py311-312: Convert crossenv requirement files to use build:cross
th0ma7 Feb 4, 2025
b153e46
requirement.mk: Move include from spk to wheel-env.mk
th0ma7 Feb 4, 2025
fff0d33
crossenv: Allow non-build:cross def and use $* for dep install
th0ma7 Feb 4, 2025
39c9e2a
py312-313: Move all $(TC_GCC) dependent wheels below python.mk
th0ma7 Feb 4, 2025
edbe345
py311-313: Migrate crossenv definitions files to use build:cross
th0ma7 Feb 4, 2025
5b397bf
py312-313: Temporary disable numpy
th0ma7 Feb 5, 2025
17ece54
python*.mk: Fix crossenv PATH definition
th0ma7 Feb 5, 2025
87e4d1e
python: Remove dependencies to native/python3* pip environment
th0ma7 Feb 6, 2025
aa8b0d6
python313-wheels: greenlet < 3.1 no longer supported
th0ma7 Feb 7, 2025
b9883ba
crossenv|wheel-compile.mk: Adjust PATH to handle ENV and duplicates
th0ma7 Feb 7, 2025
c2748e0
update comment related to WHEELS initialization
hgy59 Feb 7, 2025
5c83ee9
fix build of llfuse wheel
hgy59 Feb 7, 2025
9b330d4
python312: update to v3.12.9
hgy59 Feb 7, 2025
cab3b5e
python313: update to v3.13.2
hgy59 Feb 7, 2025
0a0b598
exclude llfuse for python313
hgy59 Feb 7, 2025
b95b9aa
python: Enable crossenv|wheel logs and avoid renaming manylinux
th0ma7 Feb 11, 2025
601e93b
crossenv.mk: Remove the manylinux2014 option as unecessary
th0ma7 Feb 11, 2025
bf163fe
wheel-install.mk: No longer manage manylinux
th0ma7 Feb 11, 2025
bbeafca
wheel+crossenv: Fix log redirection for crossenv and wheel builds
th0ma7 Feb 12, 2025
1f083e3
deluge+python312-wheels: Remove package bump
th0ma7 Feb 12, 2025
014a983
python311-wheels: Remove package bump
th0ma7 Feb 12, 2025
921f67c
wheel-compile.mk: Fix issue of first pure-python wheel being skipped
th0ma7 Feb 13, 2025
a386c3c
py312-313: Add atom with its crossenv definition
th0ma7 Feb 13, 2025
362e78e
crossenv.mk: Add --machine flag to fix poetry resulting filemame
th0ma7 Feb 13, 2025
eae68d5
py313: Remove atom==0.10.5 as not compatible
th0ma7 Feb 13, 2025
b67a58c
wheel-compile.mk: Manage false-positive relatively to crossenv
th0ma7 Feb 13, 2025
d22dbbe
crossenv.mk: Use TC_TARGET official arch definition triplet
th0ma7 Feb 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -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*
Expand Down
2 changes: 1 addition & 1 deletion cross/python312/Makefile
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
6 changes: 3 additions & 3 deletions cross/python312/digests
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion cross/python313/Makefile
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
6 changes: 3 additions & 3 deletions cross/python313/digests
Original file line number Diff line number Diff line change
@@ -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
6 changes: 6 additions & 0 deletions mk/spksrc.common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I expected to name the new log files

  • build-crossenv-*.log
  • build-wheel-*.log

without the build- prefix, I guess some clean* targets need an update.

but this can be done later...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried that first but the ordering wasn't optimal. Using build-<arch>-<tcversion>-crossenv.log and build-<arch>-<tcversion>-wheel.log would make things orderred when listing log files.

I suggest either using proposal above or trying current for a little while and reconvene later?

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
Expand Down
166 changes: 97 additions & 69 deletions mk/spksrc.crossenv.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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)))

Expand All @@ -34,7 +40,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)/)

###

Expand All @@ -58,50 +64,47 @@ endif

# Check for <wheel>-<x.y>, then fallback to <wheel>, 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/.*[<>=]=//')
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
# 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_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))

###

crossenv_msg_target:
@$(MSG) "Preparing crossenv for $(NAME)"
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
Expand All @@ -110,13 +113,13 @@ pre_crossenv_target: crossenv_msg_target
mkdir -p $(PIP_CACHE_DIR) ; \
fi; \

post_crossenv_target: $(CROSSENV_TARGET)

###

crossenv-%: SHELL:=/bin/bash
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 | 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

####

Expand Down Expand Up @@ -162,11 +165,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)) \
Expand All @@ -175,48 +177,63 @@ build_crossenv_target: pre_crossenv_target $(CROSSENV_PATH)/build/python-cc.mk
--ar $(TC_PATH)$(TC_PREFIX)ar \
--sysroot $(TC_SYSROOT) \
--env LIBRARY_PATH= \
--manylinux manylinux2014 \
--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 \
--cxx $(TC_PATH)$(TC_PREFIX)c++ \
--ar $(TC_PATH)$(TC_PREFIX)ar \
--sysroot $(TC_SYSROOT) \
--env LIBRARY_PATH= \
--manylinux manylinux2014 \
--machine $(TC_TARGET) \
"$(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
@. $(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)
@. $(CROSSENV_PATH)/bin/activate ; \
$(MSG) build-pip install -r $(CROSSENV_BUILD_REQUIREMENTS) ; \
$(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) ; \
$(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)
$(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) $$(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) "Package list for $(CROSSENV_PATH):" ; \
$(RUN) $$(which cross-pip) list
$(MSG) cross-python Install $(CROSSENV_CROSS_PIP) ; \
$(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) $$(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


###
### crossenv-install-<crossenv>
### <crossenv> = $(lastword $(subst -, ,$*)) being <wheel>-<version>, <wheel> or default
###
crossenv-install-%:
@. $(abspath $(WORK_DIR)/crossenv-$(lastword $(subst -, ,$*)))/bin/activate ; \
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) "python: [$$(which $(WHEEL_TYPE)-python)]" ; \
else \
echo "ERROR: crossenv not found!" ; \
exit 2 ; \
fi ; \
$(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)


##
## python-cc.mk
Expand Down Expand Up @@ -248,10 +265,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) $$(which build-pip) list
@$(MSG) "Package list for $(CROSSENV_PATH)/cross:"
@. $(CROSSENV_PATH)/bin/activate ; \
$(RUN) $$(which cross-pip) list

ifeq ($(wildcard $(CROSSENV_COOKIE)),)
crossenv: $(CROSSENV_COOKIE)
Expand Down
Loading
Loading