py-defs.mk, py-mod.mk, python-tools.sh: Improve python module handling

- Fix superflous dots in module names
- Generate PYTHONPATH in projects.py
- Add support for __init__.py.tmpl

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2017-07-24 10:59:08 +00:00
commit 55f9b50562
3 changed files with 35 additions and 19 deletions

View file

@ -8,34 +8,41 @@ endif
PY_PREREQ_BUILD ?= $(shell $(proj_query_cmd) pkg-requires --subsections jw -d ' ' -p --no-version build $(PROJECT))
PY_PREREQ_BUILD_DIRS ?= $(shell $(proj_query_cmd) proj-dir $(PY_PREREQ_BUILD))
PY_PROJ_MODULES_DIRS ?= $(wildcard $(foreach subdir,/tools/python /src/python,$(addsuffix $(subdir),$(PY_PREREQ_BUILD_DIRS))))
PY_MODULES_DIRS ?= $(PY_PROJ_MODULES_DIRS)
PY_PROJ_MODULES += $(dir $(wildcard $(PY_MODULES_DIRS)/*/__init__.py))
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_PROJ_MODULES += $(dir $(wildcard $(PY_MODULE_DIRS)/*/__init__.py))
PY_MODULES ?= $(PY_PROJ_MODULES)
PY_INSTALL_MOD ?= $(shell pwd | sed 's%.*/python/%%; s%/.*%%')
PY_INSTALL_SUBMOD ?= $(shell pwd | sed "s%.*/$(PY_INSTALL_MOD)\(/\|$$\)%%")
PY_MOD ?= $(patsubst /,.,$(PY_INSTALL_MOD).$(PY_INSTALL_SUBMOD))
PY_SRC_PY = $(sort $(wildcard *.py) __init__.py)
PY_PYC = $(patsubst %.py,%.pyc,$(PY_SRC_PY))
ifneq ($(PY_INSTALL_SUBMOD),)
PY_INSTALL_DIR = $(ENV_PREFIX)$(PY_SITE_PACKAGES_PATH)/$(PY_INSTALL_MOD)/$(PY_INSTALL_SUBMOD)
PY_INSTALL_PKG_MOD ?= $(shell pwd | sed 's%.*/python/%%; s%/.*%%')
PY_INSTALL_SUB_MOD ?= $(shell pwd | 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_DIR = $(ENV_PREFIX)$(PY_SITE_PACKAGES_PATH)/$(PY_INSTALL_MOD)
PY_INSTALL_MOD ?= $(PY_INSTALL_PKG_MOD)
endif
PY_MOD ?= $(subst /,.,$(PY_INSTALL_MOD))
PY_INSTALL_DIR = $(ENV_PREFIX)$(PY_SITE_PACKAGES_PATH)/$(patsubst .,/,$(PY_INSTALL_MOD))
PY_INSTALLED_REG = $(addprefix $(PY_INSTALL_DIR)/,$(PY_SRC_PY) $(PY_PYC))
PYTHONPATH = $(ENV_PYTHONPATH)$(foreach d,$(PY_MODULES_DIRS),:$(d))
empty :=
space := $(empty) $(empty)
PYTHONPATH ?= $(call proj_query, pythonpath $(PROJECT))
#PYTHONPATH = $(subst $(space),,$(ENV_PYTHONPATH)$(foreach d,$(PY_MODULE_DIRS),:$(d)))
export PYTHONPATH
all:
echo-py:
@echo PROJECT = $(PROJECT)
@echo PY_PROJ_MODULES_DIRS = $(PY_PROJ_MODULES_DIRS)
@echo PY_MODULES_DIRS = $(PY_MODULES_DIRS)
@echo PY_PROJ_MODULE_DIRS = $(PY_PROJ_MODULE_DIRS)
@echo PY_MODULE_DIRS = $(PY_MODULE_DIRS)
@echo PY_SITE_PACKAGES_PATH = $(PY_SITE_PACKAGES_PATH)
@echo PY_MODULES = $(PY_MODULES)
@echo PYTHONPATH = $(PYTHONPATH)
@echo PY_INSTALL_MOD = $(PY_INSTALL_MOD)
@echo PY_INSTALL_SUBMOD = $(PY_INSTALL_SUBMOD)
@echo PY_INSTALL_SUB_MOD = $(PY_INSTALL_SUB_MOD)
libpath: py-libpath
py-libpath:
@echo export PYTHONPATH=$(PYTHONPATH)