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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
# File: Makefile for fuss
# Location: fuss source package
# Author: bgstack15
# Startdate: 2020-12-30
# Title: Makefile for fuss source package
# Purpose: To use traditional Unix make utility
# History:
# Usage:
# Reference:
# hex-zero Makefile
# Improve:
# add man page?
# Document:
# Dependencies:
# build-devuan:
APPNAME = fuss
APPVERSION = 0.0.1
SRCDIR = $(CURDIR)/..# because Makefile is in extra/ inside this repo
prefix = /usr
SYSCONFDIR = $(DESTDIR)/etc
DEFAULTDIR = $(DESTDIR)/etc/sysconfig# for debian use '$(DESTDIR)/etc/default'
LIBEXECDIR = $(DESTDIR)$(prefix)/libexec
SHAREDIR = $(DESTDIR)$(prefix)/share
DOCDIR = $(SHAREDIR)/doc/$(APPNAME)
APPDIR = $(SHAREDIR)/$(APPNAME)
APPVARDIR = $(DESTDIR)/var/www/$(APPNAME)
MANDIR = $(SHAREDIR)/man
SYSVDIR = $(SYSCONFDIR)/init.d
SYSDDIR = $(DESTDIR)$(prefix)/lib/systemd/system
LOGDIR = $(DESTDIR)/var/log/fuss
APACHEDIR = $(SYSCONFDIR)/httpd/conf.d# for debian use '$(SYSCONFDIR)/apache2/sites-available'
CRONDIR = $(SYSCONFDIR)/cron.d
SBINDIR = $(DESTDIR)$(prefix)/sbin
# variables for deplist
DEPTYPE = dep
SEPARATOR = ,
awkbin :=$(shell which awk)
chmodbin :=$(shell which chmod)
cpbin :=$(shell which cp)
echobin :=$(shell which echo)
falsebin :=$(shell which false)
findbin :=$(shell which find)
grepbin :=$(shell which grep)
gzipbin :=$(shell which gzip)
installbin :=$(shell which install)
rmbin :=$(shell which rm)
rmdirbin :=$(shell which rmdir)
sedbin :=$(shell which sed)
sortbin :=$(shell which sort)
truebin :=$(shell which true)
uniqbin :=$(shell which uniq)
xargsbin :=$(shell which xargs)
with_apache ?= YES
with_init ?= YES
with_systemd ?= NO
with_pip_helper ?= NO
all:
-@echo "Nothing to build." && ${truebin}
install: install_files
.PHONY: clean install install_files uninstall list deplist deplist_opts
list:
@$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | ${awkbin} -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | ${sortbin} | ${grepbin} -E -v -e '^[^[:alnum:]]' -e '^$@$$'
deplist:
@# deplist 2020-04-18 input must be comma separated
@# DEPTYPE( dep , rec , sug ) for depends, recommends, or suggests
@if test -z "${DISTRO}" ; then ${echobin} "Please run \`make deplist\` with DISTRO= one of: `make deplist_opts 2>&1 1>/dev/null | ${xargsbin}`. Aborted." 1>&2 ; exit 1 ; fi
@if ! ${echobin} "${DEPTYPE}" | grep -qE "^(dep|rec|sug)$$" ; then ${echobin} "Please run \`make deplist\` with DEPTYPE= one of: dep, rec, sug. Undefined will use \`dep\`. Aborted." 1>&2 ; exit 1; fi
@${grepbin} -h --exclude-dir='doc' -riIE "\<${DEPTYPE}-" ${SRCDIR} | ${awkbin} -v "domain=${DISTRO}" -v "deptype=${DEPTYPE}" 'tolower($$2) ~ deptype"-"domain {$$1="";$$2="";print}' | tr ',' '\n' | ${sortbin} | ${uniqbin} | ${sedbin} -r -e 's/^\s*//' -e "s/\s*\$$/${SEPARATOR}/" | ${xargsbin}
deplist_opts:
@# deplist_opts 2020-04-18 find all available dependency domains
@${grepbin} -h -o -riIE '\<(dep|rec|sug)-[^\ :]+:' ${SRCDIR} | ${sedbin} -r -e 's/(dep|rec|sug)-//;' -e 's/:$$//;' | ${sortbin} | ${uniqbin} 1>&2
install_files:
${installbin} -m0755 -d ${LOGDIR} ${APPVARDIR}/upload ${APPDIR}/static ${APPDIR}/templates \
${DOCDIR} ${SBINDIR} ${SYSCONFDIR} ${LIBEXECDIR}/${APPNAME}
${installbin} -m0755 -t ${SBINDIR} ${SRCDIR}/${APPNAME}.bin
${installbin} -m0644 -t ${LIBEXECDIR}/${APPNAME} ${SRCDIR}/${APPNAME}.py
${installbin} -m0644 ${SRCDIR}/${APPNAME}.conf.example ${SYSCONFDIR}/${APPNAME}.conf
${installbin} -m0644 ${SRCDIR}/${APPNAME}.wsgi.ini.example ${SYSCONFDIR}/${APPNAME}.wsgi.ini
${installbin} -m0644 -t ${DOCDIR} ${SRCDIR}/*.md
${installbin} -m0644 -t ${APPDIR}/static ${SRCDIR}/static/*
${installbin} -m0644 -t ${APPDIR}/templates ${SRCDIR}/templates/*
ifeq ($(with_apache),YES)
${installbin} -m0755 -d ${APACHEDIR}
${installbin} -m0644 ${SRCDIR}/extra/${APPNAME}.conf.apache ${APACHEDIR}/${APPNAME}.conf
endif
ifeq ($(with_init),YES)
${installbin} -m0755 -d ${SYSVDIR}
${installbin} -m0755 ${SRCDIR}/extra/${APPNAME}.init ${SYSVDIR}/${APPNAME}
endif
ifeq ($(with_systemd),YES)
${installbin} -m0755 -d ${SYSDDIR}
${installbin} -m0644 ${SRCDIR}/extra/fuss.service -t ${SYSDDIR}
endif
ifeq ($(with_pip_helper),YES)
${installbin} -m0755 -t ${LIBEXECDIR}/${APPNAME}/ ${SRCDIR}/extra/pip-helper.sh
endif
uninstall:
@${echobin} SRCDIR=${SRCDIR}
${rmbin} -f ${APPDIR}/${APPNAME}.* \
${DOCDIR}/* \
${APPDIR}/static/* \
${APPDIR}/templates/* \
${LIBEXECDIR}/${APPNAME}/* \
${SBINDIR}/${APPNAME}.bin \
1>/dev/null 2>&1 || :
${rmbin} -f ${APACHEDIR}/${APPNAME}.conf || :
${rmbin} -f ${SYSVDIR}/${APPNAME} || :
# remove all installed directories that are now blank.
${rmdirbin} ${APPVARDIR}/upload ${APPDIR}/static \
${SYSVDIR} ${APACHEDIR} ${DOCDIR} \
${LIBEXECDIR}/${APPNAME} ${LOGDIR} 2>/dev/null || :
${rmdirbin} ${APPDIR} 2>/dev/null || :
clean:
-@${echobin} "target $@ not implemented yet! Gotta say unh." && ${falsebin}
|