2019-03-03 18:12:28 +00:00
|
|
|
ENV_PYTHONPATH := $(PYTHONPATH)
|
2019-06-11 08:31:11 +00:00
|
|
|
|
2022-10-04 11:05:24 +00:00
|
|
|
# note: This is redundant to projects.mk
|
2020-05-16 13:22:51 +00:00
|
|
|
ifneq ($(PYTHON_VERSION),)
|
|
|
|
|
PYTHON := /usr/bin/python$(PYTHON_VERSION)
|
2019-06-02 12:28:13 +00:00
|
|
|
else
|
2020-05-16 13:22:51 +00:00
|
|
|
ifeq ($(PYTHON),)
|
2022-10-04 11:05:24 +00:00
|
|
|
PYTHON := $(lastword $(shell /bin/bash -O extglob -c "ls -v /usr/bin/python[0-9].+([0-9])"))
|
2020-05-16 13:22:51 +00:00
|
|
|
endif
|
2019-06-02 12:28:13 +00:00
|
|
|
PYTHON_VERSION ?= $(patsubst python%,%,$(notdir $(PYTHON)))
|
|
|
|
|
endif
|
2020-05-16 13:09:16 +00:00
|
|
|
PYTHON_MAJOR = $(basename $(PYTHON_VERSION))
|
2017-07-21 15:34:16 +00:00
|
|
|
|
2019-06-11 08:31:11 +00:00
|
|
|
ifeq ($(DEVELOPMENT),true)
|
2019-06-02 12:28:13 +00:00
|
|
|
PY_SITE_PACKAGES_PATH := $(PREFIX)/python$(PYTHON_VERSION)/site-packages
|
2019-06-11 08:31:11 +00:00
|
|
|
else
|
2019-11-13 12:49:27 +00:00
|
|
|
PY_SITE_PACKAGES_PATH := $(shell $(PYTHON) -c "import site; print([d for d in site.getsitepackages() if d.find('/local/') == -1][0])")
|
2019-06-11 08:31:11 +00:00
|
|
|
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))
|
2017-07-21 15:34:16 +00:00
|
|
|
endif
|
|
|
|
|
|
2020-04-10 12:13:12 +00:00
|
|
|
PY_MYPY ?= mypy --ignore-missing-imports
|
|
|
|
|
|
2019-03-03 18:12:28 +00:00
|
|
|
PY_SRC_PY ?= $(wildcard *.py)
|
2019-06-11 08:31:11 +00:00
|
|
|
PY_ALL_PY = $(PY_SRC_PY)
|
|
|
|
|
|
2020-05-16 13:09:16 +00:00
|
|
|
ifneq ($(PYTHON_MAJOR),3)
|
2019-03-12 11:35:49 +00:00
|
|
|
PY_PYC = $(patsubst %.py,%.pyc,$(PY_ALL_PY))
|
|
|
|
|
else
|
2019-06-11 08:47:46 +00:00
|
|
|
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))
|
2019-03-12 11:35:49 +00:00
|
|
|
endif
|
2019-03-03 18:12:28 +00:00
|
|
|
|
2019-06-11 08:31:11 +00:00
|
|
|
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))
|
2017-07-21 15:34:16 +00:00
|
|
|
else
|
2019-06-11 08:31:11 +00:00
|
|
|
ifeq ($(PY_INSTALL_DIR_PY),)
|
|
|
|
|
$(error PY_INSTALL_DIR_PY is undefined)
|
|
|
|
|
endif
|
2017-07-21 15:34:16 +00:00
|
|
|
endif
|
2019-06-11 08:31:11 +00:00
|
|
|
|
2020-05-16 13:09:16 +00:00
|
|
|
ifeq ($(PYTHON_MAJOR),3)
|
2019-03-12 11:35:49 +00:00
|
|
|
PY_INSTALL_DIR_PYC ?= $(PY_INSTALL_DIR_PY)/__pycache__
|
2019-06-11 08:31:11 +00:00
|
|
|
else
|
|
|
|
|
PY_INSTALL_DIR_PYC ?= $(PY_INSTALL_DIR_PY)
|
2019-03-12 11:35:49 +00:00
|
|
|
endif
|
2019-06-11 08:31:11 +00:00
|
|
|
|
|
|
|
|
PY_INSTALL_DIRS ?= $(sort $(PY_INSTALL_DIR_PY) $(PY_INSTALL_DIR_PYC))
|
|
|
|
|
PY_INSTALLED_PY = $(addprefix $(PY_INSTALL_DIR_PY)/,$(sort $(PY_ALL_PY)))
|
2019-03-12 11:35:49 +00:00
|
|
|
PY_INSTALLED_PYC = $(addprefix $(PY_INSTALL_DIR_PY)/,$(PY_PYC))
|
|
|
|
|
PY_INSTALLED_REG = $(PY_INSTALLED_PY) $(PY_INSTALLED_PYC)
|
2019-03-03 18:12:28 +00:00
|
|
|
|
2020-04-05 12:51:08 +00:00
|
|
|
PYTHONPATH ?= $(call proj_query, pythonpath $(PROJECT) $(PY_PREREQ_RUN))
|
2019-03-03 18:12:28 +00:00
|
|
|
#PYTHONPATH = $(subst $(space),,$(ENV_PYTHONPATH)$(foreach d,$(PY_MODULE_DIRS),:$(d)))
|
2020-04-10 12:13:12 +00:00
|
|
|
MYPYPATH = $(PYTHONPATH)
|
|
|
|
|
export PYTHONPATH MYPYPATH
|
2017-07-21 15:34:16 +00:00
|
|
|
|
2019-06-11 08:31:11 +00:00
|
|
|
# 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))
|
|
|
|
|
|
2017-11-23 08:41:46 +00:00
|
|
|
ifneq ($(PY_DEFS_MK_INCLUDED),true)
|
2017-07-21 15:34:16 +00:00
|
|
|
all:
|
2017-10-30 12:02:43 +00:00
|
|
|
clean: pyc.clean
|
|
|
|
|
|
2017-07-21 15:34:16 +00:00
|
|
|
echo-py:
|
2019-06-11 08:31:11 +00:00
|
|
|
@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)"
|
2020-04-10 12:13:12 +00:00
|
|
|
@echo "MYPYPATH = $(MYPYPATH)"
|
2019-06-11 08:31:11 +00:00
|
|
|
@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)"
|
2017-07-24 10:59:08 +00:00
|
|
|
|
2017-10-30 12:02:43 +00:00
|
|
|
pyc.clean:
|
2019-10-28 12:20:50 +00:00
|
|
|
$(RM) -rf $(wildcard *.pyc) __pycache__
|
2017-07-24 10:59:08 +00:00
|
|
|
libpath: py-libpath
|
|
|
|
|
py-libpath:
|
|
|
|
|
@echo export PYTHONPATH=$(PYTHONPATH)
|
2020-04-26 19:04:18 +00:00
|
|
|
@echo export MYPYPATH=$(MYPYPATH)
|
2017-11-23 08:41:46 +00:00
|
|
|
endif
|
2017-08-01 21:53:36 +00:00
|
|
|
|
2019-10-28 12:20:50 +00:00
|
|
|
PY_DEFS_MK_INCLUDED := true
|
|
|
|
|
|
2019-06-29 21:34:18 +00:00
|
|
|
include $(JWBDIR)/make/ldlibpath.mk
|