make: Add py-defs.mk py-mod.mk py-run.mk

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2017-07-21 15:34:16 +00:00
commit d49340917b
5 changed files with 91 additions and 0 deletions

View file

@ -88,6 +88,12 @@ SCRIPTMODE ?= $(EXEMODE)
SCRIPTDIROWNER ?= $(EXEDIROWNER) SCRIPTDIROWNER ?= $(EXEDIROWNER)
SCRIPTDIRGROUP ?= $(EXEDIRGROUP) SCRIPTDIRGROUP ?= $(EXEDIRGROUP)
SCRIPTDIRMODE ?= $(EXEDIRMODE) SCRIPTDIRMODE ?= $(EXEDIRMODE)
PYMODOWNER ?= $(shell id -un)
PYMODGROUP ?= $(shell id -gn)
PYMODMODE ?= 644
PYMODDIROWNER ?= $(shell id -un)
PYMODDIRGROUP ?= $(shell id -gn)
PYMODDIRMODE ?= 755
INITOWNER ?= $(EXEOWNER) INITOWNER ?= $(EXEOWNER)
INITGROUP ?= $(EXEGROUP) INITGROUP ?= $(EXEGROUP)
INITMODE ?= $(EXEMODE) INITMODE ?= $(EXEMODE)

View file

@ -88,6 +88,12 @@ SCRIPTMODE ?= $(EXEMODE)
SCRIPTDIROWNER ?= $(EXEDIROWNER) SCRIPTDIROWNER ?= $(EXEDIROWNER)
SCRIPTDIRGROUP ?= $(EXEDIRGROUP) SCRIPTDIRGROUP ?= $(EXEDIRGROUP)
SCRIPTDIRMODE ?= $(EXEDIRMODE) SCRIPTDIRMODE ?= $(EXEDIRMODE)
PYMODOWNER ?= root
PYMODGROUP ?= root
PYMODMODE ?= 644
PYMODDIROWNER ?= root
PYMODDIRGROUP ?= root
PYMODDIRMODE ?= 755
INITDIRMODE ?= $(EXEDIRMODE) INITDIRMODE ?= $(EXEDIRMODE)
INITOWNER ?= $(EXEOWNER) INITOWNER ?= $(EXEOWNER)
INITGROUP ?= $(EXEGROUP) INITGROUP ?= $(EXEGROUP)

36
make/py-defs.mk Normal file
View file

@ -0,0 +1,36 @@
include $(MODDIR)/make/defs.mk
ifneq ($(DEVELOPMENT),true)
PY_SITE_PACKAGES_PATH = $(shell python -c "import site; print site.getsitepackages()[0]")
else
PY_SITE_PACKAGES_PATH = $(PREFIX)/python/site-packages
endif
PY_PROJ_MODULES_DIR ?= $(TOPDIR)/tools/python
PY_MODULES_DIR ?= $(PY_PROJ_MODULES_DIR)
PY_PROJ_MODULES += $(dir $(wildcard $(PY_MODULES_DIR)/*/__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_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)
else
PY_INSTALL_DIR = $(ENV_PREFIX)$(PY_SITE_PACKAGES_PATH)/$(PY_INSTALL_MOD)
endif
PY_INSTALLED_REG = $(addprefix $(PY_INSTALL_DIR)/,$(PY_SRC_PY) $(PY_PYC))
#PYTHONPATH := $(PYTHONPATH)$(foreach p,$(PY_MODULES),:$(p))
PYTHONPATH := $(PYTHONPATH):$(PY_MODULES_DIR)
export PYTHONPATH
all:
echo-py:
@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)

30
make/py-mod.mk Normal file
View file

@ -0,0 +1,30 @@
include $(MODDIR)/make/py-defs.mk
include $(MODDIR)/make/dirs.mk
all: $(PY_PYC)
install: install-dirs.done install-reg.done
clean: py.clean
distclean:
py.clean:
rm -f *.done *.pyc
if [ ! -s __init__.py ]; then /bin/bash $(MOD_SCRIPT_DIR)/scm.sh clean -f __init__.py; fi
install-dirs.done:
$(INSTALL) -d -m $(PYMODDIRMODE) -o $(PYMODDIROWNER) -g $(PYMODDIRGROUP) $(PY_INSTALL_DIR)
touch $@
install-reg.done: install-dirs.done $(PY_INSTALLED_REG)
touch $@
%.pyc: %.py
python -c "import py_compile; py_compile.compile(\"$<\")"
$(PY_INSTALL_DIR)/%.py: %.py
$(INSTALL) -m $(PYMODMODE) -o $(PYMODOWNER) -g $(PYMODGROUP) $< $@
$(PY_INSTALL_DIR)/%.pyc: %.pyc
$(INSTALL) -m $(PYMODMODE) -o $(PYMODOWNER) -g $(PYMODGROUP) $< $@
__init__.py:
touch $@

13
make/py-run.mk Normal file
View file

@ -0,0 +1,13 @@
include $(MODDIR)/make/py-defs.mk
EXE ?= $(firstword $(wildcard main.py runme.py *.py))
EXE_ARGS ?=
all:
install:
clean:
distclean:
run:
/usr/bin/python $(EXE) $(EXE_ARGS)