From d49340917b05e2ac4590db49539f49eb9e6421ad Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Fri, 21 Jul 2017 15:34:16 +0000 Subject: [PATCH] make: Add py-defs.mk py-mod.mk py-run.mk Signed-off-by: Jan Lindemann --- make/defs-dev.mk | 6 ++++++ make/defs-dist.mk | 6 ++++++ make/py-defs.mk | 36 ++++++++++++++++++++++++++++++++++++ make/py-mod.mk | 30 ++++++++++++++++++++++++++++++ make/py-run.mk | 13 +++++++++++++ 5 files changed, 91 insertions(+) create mode 100644 make/py-defs.mk create mode 100644 make/py-mod.mk create mode 100644 make/py-run.mk diff --git a/make/defs-dev.mk b/make/defs-dev.mk index df3640fc..c5114a92 100644 --- a/make/defs-dev.mk +++ b/make/defs-dev.mk @@ -88,6 +88,12 @@ SCRIPTMODE ?= $(EXEMODE) SCRIPTDIROWNER ?= $(EXEDIROWNER) SCRIPTDIRGROUP ?= $(EXEDIRGROUP) SCRIPTDIRMODE ?= $(EXEDIRMODE) +PYMODOWNER ?= $(shell id -un) +PYMODGROUP ?= $(shell id -gn) +PYMODMODE ?= 644 +PYMODDIROWNER ?= $(shell id -un) +PYMODDIRGROUP ?= $(shell id -gn) +PYMODDIRMODE ?= 755 INITOWNER ?= $(EXEOWNER) INITGROUP ?= $(EXEGROUP) INITMODE ?= $(EXEMODE) diff --git a/make/defs-dist.mk b/make/defs-dist.mk index 42376eb2..2409f835 100644 --- a/make/defs-dist.mk +++ b/make/defs-dist.mk @@ -88,6 +88,12 @@ SCRIPTMODE ?= $(EXEMODE) SCRIPTDIROWNER ?= $(EXEDIROWNER) SCRIPTDIRGROUP ?= $(EXEDIRGROUP) SCRIPTDIRMODE ?= $(EXEDIRMODE) +PYMODOWNER ?= root +PYMODGROUP ?= root +PYMODMODE ?= 644 +PYMODDIROWNER ?= root +PYMODDIRGROUP ?= root +PYMODDIRMODE ?= 755 INITDIRMODE ?= $(EXEDIRMODE) INITOWNER ?= $(EXEOWNER) INITGROUP ?= $(EXEGROUP) diff --git a/make/py-defs.mk b/make/py-defs.mk new file mode 100644 index 00000000..71e1e658 --- /dev/null +++ b/make/py-defs.mk @@ -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) diff --git a/make/py-mod.mk b/make/py-mod.mk new file mode 100644 index 00000000..2d9382b5 --- /dev/null +++ b/make/py-mod.mk @@ -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 $@ diff --git a/make/py-run.mk b/make/py-run.mk new file mode 100644 index 00000000..0dc2c731 --- /dev/null +++ b/make/py-run.mk @@ -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) +