py-xxx.mk: Some variable housekeeping #81

Merged
Jan Lindemann merged 2 commits from jan/fix/20260824-py-defs-mk-some-variable-housekeeping into master 2026-08-24 18:23:01 +02:00 AGit
3 changed files with 24 additions and 16 deletions

View file

@ -3,14 +3,14 @@ include $(JWBDIR)/make/py-version.mk
PY_INSTALL_INIT_PY ?= true PY_INSTALL_INIT_PY ?= true
PY_UPDATE_INIT_PY ?= true PY_UPDATE_INIT_PY ?= true
PY_INSTALL ?= true PY_INSTALL ?= true
PY_INSTALL_REG ?= true PY_DO_INSTALL_REG ?= true
ifneq ($(PY_INSTALL),true) ifneq ($(PY_INSTALL),true)
PY_INSTALL_REG = false PY_DO_INSTALL_REG = false
endif endif
PY_INSTALL_PYC ?= true PY_DO_INSTALL_PYC ?= true
ifneq ($(PY_INSTALL_REG),true) ifneq ($(PY_DO_INSTALL_REG),true)
PY_INSTALL_PYC = false PY_DO_INSTALL_PYC = false
endif endif
ifeq ($(DEVELOPMENT),true) ifeq ($(DEVELOPMENT),true)
@ -20,13 +20,16 @@ else
endif endif
PY_SRC_PY ?= $(wildcard *.py) PY_SRC_PY ?= $(wildcard *.py)
PY_ALL_PY = $(filter-out __init__.py,$(PY_SRC_PY)) PY_LOCAL_PY = $(PY_SRC_PY)
PY_INSTALL_PY = $(filter-out __init__.py,$(PY_SRC_PY))
ifneq ($(PYTHON_MAJOR),3) ifneq ($(PYTHON_MAJOR),3)
PY_PYC = $(patsubst %.py,%.pyc,$(PY_ALL_PY)) PY_LOCAL_PYC = $(patsubst %.py,%.pyc,$(PY_LOCAL_PY))
PY_INSTALL_PYC = $(patsubst %.py,%.pyc,$(PY_INSTALL_PY))
else else
PY_CPYTHON_PREFIX := $(shell $(PYTHON) -c "import sys; print('cpython-{}{}'.format(sys.version_info[0],sys.version_info[1]))") 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)) PY_LOCAL_PYC = $(patsubst %.py,__pycache__/%.$(PY_CPYTHON_PREFIX).pyc,$(PY_LOCAL_PY))
PY_INSTALL_PYC = $(patsubst %.py,__pycache__/%.$(PY_CPYTHON_PREFIX).pyc,$(PY_INSTALL_PY))
endif endif
ifneq ($(PY_INSTALL_DIR),) ifneq ($(PY_INSTALL_DIR),)
@ -46,7 +49,10 @@ ifeq ($(PY_INSTALL_DIR_PY),)
endif endif
PY_MOD ?= $(subst /,.,$(PY_INSTALL_MOD)) PY_MOD ?= $(subst /,.,$(PY_INSTALL_MOD))
ifeq ($(PY_INSTALL_INIT_PY),true) ifeq ($(PY_INSTALL_INIT_PY),true)
PY_ALL_PY += __init__.py PY_INSTALL_PY += __init__.py
PY_LOCAL_PY += __init__.py
else ifeq ($(PY_UPDATE_INIT_PY),true)
PY_LOCAL_PY += __init__.py
endif endif
PY_INSTALL_DIR_PY ?= $(ENV_PREFIX)$(PY_SITE_PACKAGES_PATH)/$(patsubst .,/,$(PY_INSTALL_MOD)) PY_INSTALL_DIR_PY ?= $(ENV_PREFIX)$(PY_SITE_PACKAGES_PATH)/$(patsubst .,/,$(PY_INSTALL_MOD))
else else
@ -62,12 +68,12 @@ else
endif endif
PY_INSTALL_DIRS ?= $(sort $(PY_INSTALL_DIR_PY) $(PY_INSTALL_DIR_PYC)) 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_PY = $(addprefix $(PY_INSTALL_DIR_PY)/,$(sort $(PY_INSTALL_PY)))
PY_INSTALLED_PY_TYPED = $(addprefix $(PY_INSTALL_DIR_PY)/,$(wildcard py.typed)) PY_INSTALLED_PY_TYPED = $(addprefix $(PY_INSTALL_DIR_PY)/,$(wildcard py.typed))
ifeq ($(PY_INSTALL_PYC),true) ifeq ($(PY_DO_INSTALL_PYC),true)
PY_INSTALLED_PYC = $(addprefix $(PY_INSTALL_DIR_PY)/,$(PY_PYC)) PY_INSTALLED_PYC = $(addprefix $(PY_INSTALL_DIR_PY)/,$(PY_INSTALL_PYC))
endif endif
ifeq ($(PY_INSTALL_REG),true) ifeq ($(PY_DO_INSTALL_REG),true)
PY_INSTALLED_REG = $(PY_INSTALLED_PY) $(PY_INSTALLED_PYC) $(PY_INSTALLED_PY_TYPED) PY_INSTALLED_REG = $(PY_INSTALLED_PY) $(PY_INSTALLED_PYC) $(PY_INSTALLED_PY_TYPED)
endif endif

View file

@ -23,7 +23,7 @@ endif
#leftparen := ( #leftparen := (
#PY_EXPORT ?= $(shell sed '/\(class\|def\) ..*\# *export/ !d; s/\(class\|def\) *//; s/[$(leftparen):].*//' $(PY_SRC_PY)) #PY_EXPORT ?= $(shell sed '/\(class\|def\) ..*\# *export/ !d; s/\(class\|def\) *//; s/[$(leftparen):].*//' $(PY_SRC_PY))
all: $(PY_PYC) all: $(PY_LOCAL_PYC)
install: install-dirs.done install-reg.done install: install-dirs.done install-reg.done
clean: invalidate-testability py.clean clean: invalidate-testability py.clean
distclean: distclean:
@ -34,6 +34,6 @@ ifeq ($(PY_UPDATE_INIT_PY),true)
__init__.py: $(PY_INIT_TMPL) $(filter-out __init__.py,$(PY_SRC_PY)) __init__.py: $(PY_INIT_TMPL) $(filter-out __init__.py,$(PY_SRC_PY))
if [ "$(PY_INIT_TMPL)" ]; then cat "$(PY_INIT_TMPL)" > $@.tmp; else > $@.tmp; fi if [ "$(PY_INIT_TMPL)" ]; then cat "$(PY_INIT_TMPL)" > $@.tmp; else > $@.tmp; fi
set -e -o pipefail; $(PY_GENERATE_INIT_PY) \ set -e -o pipefail; $(PY_GENERATE_INIT_PY) \
$(filter-out __init__.py,$(PY_ALL_PY)) $(SUBDIRS_TO_ITERATE) | $(PY_INIT_FILTER) | tee -a $@.tmp $(filter-out __init__.py,$(PY_LOCAL_PY)) $(SUBDIRS_TO_ITERATE) | $(PY_INIT_FILTER) | tee -a $@.tmp
mv $@.tmp $@ mv $@.tmp $@
endif endif

View file

@ -2,8 +2,10 @@ all:
py.clean: py.clean:
$(RM) -f *.done *.pyc *.rep $(RM) -f *.done *.pyc *.rep
/bin/bash $(JWB_SCRIPT_DIR)/scm.sh clean -f __init__.py
$(RM) -rf __pycache__ .mypy_cache $(RM) -rf __pycache__ .mypy_cache
ifeq ($(PY_UPDATE_INIT_PY),true)
/bin/bash $(JWB_SCRIPT_DIR)/scm.sh clean -f __init__.py
endif
install-dirs.done: install-dirs.done:
$(INSTALL) -d -m $(PYJWBDIRMODE) -o $(PYJWBDIROWNER) -g $(PYJWBDIRGROUP) $(PY_INSTALL_DIRS) $(INSTALL) -d -m $(PYJWBDIRMODE) -o $(PYJWBDIROWNER) -g $(PYJWBDIRGROUP) $(PY_INSTALL_DIRS)