Files

73 lines
2.1 KiB
Makefile

# SPDX-FileCopyrightText: 2026 Eric Ireland
# SPDX-License-Identifier: GPL-3.0-or-later
PREFIX ?= /usr/local
SYSCONFDIR ?= /etc
DESTDIR ?=
PYTHON ?= python3
INSTALL ?= install
GZIP ?= gzip
GIT ?= git
SHA256SUM ?= sha256sum
SBINDIR := $(DESTDIR)$(PREFIX)/sbin
MANDIR := $(DESTDIR)$(PREFIX)/share/man/man8
BACKUPDIR := $(DESTDIR)/var/backups/vmailctl
CONFIG := $(DESTDIR)$(SYSCONFDIR)/vmailctl.conf
VERSION := $(shell sed -n 's/^VERSION = "\(.*\)"/\1/p' vmailctl)
RELEASE_TAG ?= v$(VERSION)
DISTDIR ?= dist
DIST_NAME := vmailctl-$(VERSION)
DIST_ARCHIVE := $(DISTDIR)/$(DIST_NAME).tar.gz
DIST_CHECKSUM := $(DIST_ARCHIVE).sha256
.PHONY: all check man-check dist install
all: check
check:
PYTHONDONTWRITEBYTECODE=1 $(PYTHON) -m unittest discover -v \
-s tests -p 'test_*.py'
man-check:
groff -man -z -ww man/vmailctl.8
dist: check man-check
@test -n "$(VERSION)" || { echo "Cannot determine VERSION" >&2; exit 1; }
@$(GIT) rev-parse --verify --quiet \
"refs/tags/$(RELEASE_TAG)^{commit}" >/dev/null || { \
echo "Release tag $(RELEASE_TAG) does not exist" >&2; exit 1; \
}
@$(INSTALL) -d -m 0755 "$(DISTDIR)"
@set -eu; \
archive_tmp="$(DIST_ARCHIVE).tmp"; \
checksum_tmp="$(DIST_CHECKSUM).tmp"; \
trap 'rm -f -- "$$archive_tmp" "$$checksum_tmp"' EXIT; \
LC_ALL=C $(GIT) archive --format=tar \
--prefix="$(DIST_NAME)/" "$(RELEASE_TAG)" | \
$(GZIP) -n -9 >"$$archive_tmp"; \
mv -f -- "$$archive_tmp" "$(DIST_ARCHIVE)"; \
(cd "$(DISTDIR)" && \
$(SHA256SUM) "$(DIST_NAME).tar.gz") >"$$checksum_tmp"; \
mv -f -- "$$checksum_tmp" "$(DIST_CHECKSUM)"; \
trap - EXIT
@echo "Created $(DIST_ARCHIVE)"
@echo "Created $(DIST_CHECKSUM)"
install:
$(INSTALL) -d -m 0755 $(SBINDIR)
$(INSTALL) -m 0755 vmailctl $(SBINDIR)/vmailctl
$(INSTALL) -d -m 0755 $(DESTDIR)$(SYSCONFDIR)
@if test -e "$(CONFIG)"; then \
echo "Preserving existing $(CONFIG)"; \
else \
$(INSTALL) -m 0644 vmailctl.conf.example "$(CONFIG)"; \
fi
$(INSTALL) -d -m 0700 $(BACKUPDIR)
$(INSTALL) -d -m 0755 $(MANDIR)
$(INSTALL) -m 0644 man/vmailctl.8 $(MANDIR)/vmailctl.8
$(GZIP) -n -9 -f $(MANDIR)/vmailctl.8
@if test -z "$(DESTDIR)" && command -v mandb >/dev/null 2>&1; then \
mandb -q; \
fi