# 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