# File: Makefile for hex-zero # Location: hex-zero source package # Author: bgstack15 # Startdate: 2020-12-09 # Title: Makefile for hex-zero source package # Purpose: To use traditional Unix make utility # History: # Usage: # Reference: # bgscripts Makefile # Improve: # add man page? # Document: # Dependencies: # build-devuan: APPNAME = hex-zero APPNAME_ = hex_zero APPVERSION = 0.0.1 SRCDIR = $(CURDIR)/..# because Makefile is in config/ 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 = $(DESTDIR)/var/www/$(APPNAME) MANDIR = $(SHAREDIR)/man SYSVDIR = $(SYSCONFDIR)/init.d SYSDDIR = $(DESTDIR)$(prefix)/lib/systemd/system LOGDIR = $(DESTDIR)/var/log/hex-zero APACHEDIR = $(SYSCONFDIR)/httpd/conf.d# for debian use '$(SYSCONFDIR)/apache2/sites-available' CRONDIR = $(SYSCONFDIR)/cron.d # 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_nsfw ?= NO with_init ?= YES with_systemd ?= NO with_cronjob ?= YES 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} ${APPDIR}/up ${APPDIR}/static ${DOCDIR} ${DEFAULTDIR} ${installbin} -m0644 -t ${APPDIR} ${SRCDIR}/front.html.in ${installbin} -m0644 -t ${APPDIR}/static ${SRCDIR}/static/styles.css ${installbin} -m0644 ${SRCDIR}/config/${APPNAME}.conf.example ${APPDIR}/${APPNAME}.conf ${installbin} -m0755 -t ${APPDIR} ${SRCDIR}/${APPNAME_}.py ${SRCDIR}/${APPNAME}.wsgi \ ${SRCDIR}/check-for-short_url.sh ${installbin} -m0644 -t ${DOCDIR} ${SRCDIR}/README* ${installbin} -m0644 ${SRCDIR}/config/${APPNAME}.etc.default ${DEFAULTDIR}/${APPNAME} @# the migrations directory is required for the db upgrade command to execute correctly ${installbin} -m0755 -d ${APPDIR}/migrations/versions ${installbin} -m0644 -t ${APPDIR}/migrations ${SRCDIR}/migrations/*.ini ${SRCDIR}/migrations/README ${installbin} -m0755 -t ${APPDIR}/migrations ${SRCDIR}/migrations/*.py* ${installbin} -m0644 -t ${APPDIR}/migrations/versions ${SRCDIR}/migrations/versions/*py ifeq ($(with_apache),YES) ${installbin} -m0755 -d ${APACHEDIR} ${installbin} -m0644 ${SRCDIR}/config/${APPNAME}.conf.apache ${APACHEDIR}/${APPNAME}.conf endif ifeq ($(with_nsfw),YES) ${installbin} -m0755 -t ${APPDIR} ${SRCDIR}/nsfw_detect.py ${installbin} -m0755 -d ${APPDIR}/nsfw_model ${installbin} -m0644 -t ${APPDIR}/nsfw_model ${SRCDIR}/nsfw_model/* endif ifeq ($(with_init),YES) ${installbin} -m0755 -d ${SYSVDIR} ${installbin} -m0755 ${SRCDIR}/config/${APPNAME}.init ${SYSVDIR}/${APPNAME} endif ifeq ($(with_systemd),YES) ${installbin} -m0755 -d ${SYSDDIR} ${installbin} -m0644 ${SRCDIR}/config/0x0.service -t ${SYSDDIR} endif ifeq ($(with_cronjob),YES) ${installbin} -m0755 -d ${CRONDIR} ${installbin} -m0644 -t ${CRONDIR} ${SRCDIR}/config/80_${APPNAME}_cron endif uninstall: @${echobin} SRCDIR=${SRCDIR} ${rmbin} -f ${APPDIR}/${APPNAME}.conf ${APPDIR}/${APPNAME_}.py ${APPDIR}/${APPNAME}.wsgi \ ${APPDIR}/check-for-short_url.sh \ ${APPDIR}/front.html.in ${DOCDIR}/* ${DEFAULTDIR}/${APPNAME} \ ${APPDIR}/migrations/versions/* ${APPDIR}/migrations/* \ ${APPDIR}/static/* \ 1>/dev/null 2>&1 || : ${rmbin} -f ${APACHEDIR}/${APPNAME}.conf || : ${rmbin} -f ${APPDIR}/nsfw_model/* ${APPDIR}/nsfw_detect.py || : ${rmbin} -f ${SYSVDIR}/${APPNAME} || : ${rmbin} -f ${SYSDDIR}/0x0.service || : ${rmbin} -f ${CRONDIR}/80_${APPNAME}_cron || : # remove all installed directories that are now blank. ${rmdirbin} ${APPDIR}/up ${APPDIR}/static ${APPDIR}/migrations/versions \ ${DEFAULTDIR} ${SYSVDIR} ${APACHEDIR} ${SYSDDIR} ${DOCDIR} \ ${LOGDIR} 2>/dev/null || : ${rmdirbin} ${APPDIR}/migrations 2>/dev/null || : ${rmdirbin} ${APPDIR} 2>/dev/null || : clean: -@${echobin} "target $@ not implemented yet! Gotta say unh." && ${falsebin}