ENV_PYTHONPATH := $(PYTHONPATH) # note: This is redundant to projects.mk ifneq ($(PYTHON_VERSION),) PYTHON := /usr/bin/python$(PYTHON_VERSION) else ifeq ($(PYTHON),) PYTHON := $(lastword $(shell /bin/bash -O extglob -c "ls -v /usr/bin/python[0-9].+([0-9])")) endif PYTHON_VERSION ?= $(patsubst python%,%,$(notdir $(PYTHON))) endif PYTHON_MAJOR = $(basename $(PYTHON_VERSION)) ifeq ($(DEVELOPMENT),true) PY_SITE_PACKAGES_PATH := $(PREFIX)/python$(PYTHON_VERSION)/site-packages else PY_SITE_PACKAGES_PATH := $(shell $(PYTHON) -c "import site; print([d for d in site.getsitepackages() if d.find('/local/') == -1][0])") endif ifndef PY_PREREQ_BUILD PY_PREREQ_BUILD := $(shell $(proj_query_cmd) pkg-requires --subsections jw -d ' ' -p --no-version build $(PROJECT)) endif ifndef PY_PREREQ_BUILD_DIRS PY_PREREQ_BUILD_DIRS := $(shell $(proj_query_cmd) proj-dir $(PY_PREREQ_BUILD)) endif PY_MYPY ?= mypy --ignore-missing-imports --no-namespace-packages PY_SRC_PY ?= $(wildcard *.py) PY_ALL_PY = $(PY_SRC_PY) ifneq ($(PYTHON_MAJOR),3) PY_PYC = $(patsubst %.py,%.pyc,$(PY_ALL_PY)) else PY_CPYTHON_PREFIX := $(shell $(PYTHON) -c "import sys; print('cpython-{}{}'.format(sys.version_info[0],sys.version_info[1]))") PY_PYC = $(patsubst %.py,__pycache__/%.$(PY_CPYTHON_PREFIX).pyc,$(PY_ALL_PY)) endif ifneq ($(PY_INSTALL_DIR),) PY_INSTALL_DIR_PY ?= $(PY_INSTALL_DIR) endif # deduce PY_INSTALL_DIR_PY from working directory below .. python/ ifeq ($(PY_INSTALL_DIR_PY),) PY_INSTALL_PKG_MOD ?= $(shell $(ECHO) $(CWD) | $(SED) 's%.*/python/%%; s%/.*%%') PY_INSTALL_SUB_MOD ?= $(shell $(ECHO) $(CWD) | $(SED) "s%.*/$(PY_INSTALL_PKG_MOD)\(/\|$$\)%%") ifneq ($(PY_INSTALL_SUB_MOD),) PY_INSTALL_MOD ?= $(PY_INSTALL_PKG_MOD)/$(PY_INSTALL_SUB_MOD) else PY_INSTALL_MOD ?= $(PY_INSTALL_PKG_MOD) endif PY_MOD ?= $(subst /,.,$(PY_INSTALL_MOD)) PY_ALL_PY += __init__.py PY_INSTALL_DIR_PY ?= $(ENV_PREFIX)$(PY_SITE_PACKAGES_PATH)/$(patsubst .,/,$(PY_INSTALL_MOD)) else ifeq ($(PY_INSTALL_DIR_PY),) $(error PY_INSTALL_DIR_PY is undefined) endif endif ifeq ($(PYTHON_MAJOR),3) PY_INSTALL_DIR_PYC ?= $(PY_INSTALL_DIR_PY)/__pycache__ else PY_INSTALL_DIR_PYC ?= $(PY_INSTALL_DIR_PY) endif PY_INSTALL_DIRS ?= $(sort $(PY_INSTALL_DIR_PY) $(PY_INSTALL_DIR_PYC)) PY_INSTALLED_PY = $(addprefix $(PY_INSTALL_DIR_PY)/,$(sort $(PY_ALL_PY))) PY_INSTALLED_PYC = $(addprefix $(PY_INSTALL_DIR_PY)/,$(PY_PYC)) PY_INSTALLED_REG = $(PY_INSTALLED_PY) $(PY_INSTALLED_PYC) PYTHONPATH ?= $(call proj_query, pythonpath $(PROJECT) $(PY_PREREQ_RUN)) #PYTHONPATH = $(subst $(space),,$(ENV_PYTHONPATH)$(foreach d,$(PY_MODULE_DIRS),:$(d))) MYPYPATH = $(PYTHONPATH) export PYTHONPATH MYPYPATH # not used anywhere #PY_PROJ_MODULE_DIRS ?= $(wildcard $(foreach subdir,/tools/python /src/python,$(addsuffix $(subdir),$(TOPDIR) $(PY_PREREQ_BUILD_DIRS)))) #PY_MODULE_DIRS ?= $(PY_PROJ_MODULE_DIRS) #PY_MODULES ?= $(PY_PROJ_MODULES) #PY_PROJ_MODULES += $(dir $(wildcard $(PY_MODULE_DIRS)/*/__init__.py)) ifneq ($(PY_DEFS_MK_INCLUDED),true) all: clean: pyc.clean echo-py: @echo "PY_INSTALL_DIR_PY = $(PY_INSTALL_DIR_PY)" @echo "PROJECT = $(PROJECT)" @echo "PY_SITE_PACKAGES_PATH = $(PY_SITE_PACKAGES_PATH)" @echo "PY_MODULES = $(PY_MODULES)" @echo "PYTHONPATH = $(PYTHONPATH)" @echo "MYPYPATH = $(MYPYPATH)" @echo "PY_INSTALL_MOD = $(PY_INSTALL_MOD)" @echo "PY_INSTALL_SUB_MOD = $(PY_INSTALL_SUB_MOD)" # not used anywhere" #@echo "PY_PROJ_MODULE_DIRS = $(PY_PROJ_MODULE_DIRS)" #@echo "PY_MODULE_DIRS = $(PY_MODULE_DIRS)" pyc.clean: $(RM) -rf $(wildcard *.pyc) __pycache__ libpath: py-libpath py-libpath: @echo export PYTHONPATH=$(PYTHONPATH) @echo export MYPYPATH=$(MYPYPATH) endif PY_DEFS_MK_INCLUDED := true include $(JWBDIR)/make/ldlibpath.mk