-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
78 lines (70 loc) · 2.96 KB
/
Copy pathMakefile
File metadata and controls
78 lines (70 loc) · 2.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
APPNAME = fancymonitor
APPNAMESPACE = carcano
PACKAGENAME = ${APPNAMESPACE}_${APPNAME}
ROOT ?=
DISTDIR ?= dist
PREFIX ?= ${HOME}/${APPNAME}
CONFDIR ?= ${PREFIX}/etc
BINDIR ?= ${PREFIX}/bin
DOCDIR ?= ${PREFIX}/doc
LOGSDIR ?= ${PREFIX}/log
PYTHON_VERSION := $(shell python3 --version | awk '{print $$2}' | cut -d '.' -f 1-2)
SITE_PACKAGES_PATH := $(HOME)/.local/lib/python$(PYTHON_VERSION)/site-packages
SITELIB ?= $(HOME)/.local/lib/python$(PYTHON_VERSION)/site-packages
all: wheel
clean:
$(info -> Makefile: cleanup previous builds ... )
@(rm -rf .eggs)
@(rm -rf dist)
@(rm -rf build)
@(rm -rf test/.pytest_cache)
@(find . -name __pycache__ -type d -exec rm -rf {} +)
@(find . -name ${PACKAGENAME}.egg-info -type d -exec rm -rf {} +)
@(truncate -s0 log/*)
release:
ifndef RELEASE
$(error Makefile: RELEASE is not set - please set it with a value with the following format: major.minor[.patch][sub] - for example 0.0.1 or 1.0.1-a2)
endif
$(info -> Makefile: validating RELEASE=${RELEASE} format)
@(echo ${RELEASE} |grep -qE "[0-9]+\.[0-9]+\.*[0-9]*[a-zA-Z]*[0-9]*") || (echo " ${RELEASE} is not in compliance with our version format"; exit 1)
@(sed -i -E 's/version[ ]*=[ ]*"[0-9]+.[0-9]+\.*[0-9]+[a-zA-Z]*[0-9]*"/version="${RELEASE}"/g' pyproject.toml)
dist: clean release
$(info -> Makefile: building the sdist distribution package ...)
@(python3 -m build --sdist)
wheel: test release
(pip3 list | grep -q wheel) || pip3 install --user wheel
$(info -> Makefile: building the wheel distribution package ...)
@(tar --exclude='test/.pytest_cache' -zcf test.tgz test && rm -rf test)
@(python3 -m build --wheel)
@(tar xfz test.tgz && rm test.tgz)
test: clean
$(info -> Makefile: building the wheel distribution package ...)
@(cd test; PYTHONPATH=.. pytest)
install:
$(info -> installing ...)
@[ -d $(ROOT) ] || mkdir -m 0755 -p $(ROOT)
ifneq ($(PREFIX),)
@[ -d $(ROOT)$(PREFIX) ] || mkdir -m 0755 -p $(ROOT)$(PREFIX)
endif
mkdir -p -m 0755 ${ROOT}${CONFDIR}
mkdir -p -m 0755 $(ROOT)$(CONFDIR)/schemas
mkdir -p -m 0755 $(ROOT)$(CONFDIR)/xslt
mkdir -p -m 0755 $(ROOT)$(DOCDIR)
mkdir -p -m 0755 $(ROOT)$(LOGSDIR)
ifneq ($(ROOT),)
@(cd ${DISTDIR}; python3 -m pip install --no-deps --target $(ROOT)$(SITELIB) ${PACKAGENAME}-${RELEASE}-py3-none-any.whl )
@(sed -i 's+file://../etc/+file:///etc/fancymonitor/+' $(ROOT)$(SITELIB)/etc/config.xml)
mkdir -p -m 0755 $(ROOT)/usr$(BINDIR)
install -m 0755 $(ROOT)$(SITELIB)/bin/${APPNAME} $(ROOT)/usr$(BINDIR)
else
@(cd ${DISTDIR}; python3 -m pip install --force-reinstall --user ${PACKAGENAME}-${RELEASE}-py3-none-any.whl)
mkdir -p -m 0755 $(ROOT)$(BINDIR)
mv $(HOME)/.local/bin/${APPNAME} $(ROOT)$(BINDIR)
endif
install -m 0644 $(ROOT)$(SITELIB)/etc/*.* $(ROOT)$(CONFDIR)
install -m 0644 $(ROOT)$(SITELIB)/etc/schemas/*.* $(ROOT)$(CONFDIR)/schemas
install -m 0644 $(ROOT)$(SITELIB)/etc/xslt/*.* $(ROOT)$(CONFDIR)/xslt
install -m 0644 $(ROOT)$(SITELIB)/log/* $(ROOT)$(LOGSDIR)
install -m 0644 $(ROOT)$(SITELIB)/doc/* $(ROOT)$(DOCDIR)
rpm: dist
sign: