From ed3d178bb8db30d7795888bf90f3e508a5711fb6 Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Wed, 22 Jun 2022 08:57:31 +0200 Subject: Add pkg-debian target to Makefile --- Makefile | 66 +++++++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 49 insertions(+), 17 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 12e7b0b..3b48980 100644 --- a/Makefile +++ b/Makefile @@ -7,46 +7,78 @@ DESTDIR=/usr ETCDIR=/etc +# Variables for building (binary) packages +PREFIX= +PKG_VERSION=0.0.0 +PKG_WORKDIR:=$(or $(PKG_WORKDIR),$(shell mktemp -d)) +PKG_ROOT:=$(PKG_WORKDIR)/bashtard-$(PKG_VERSION) + all: : # No build step required, use `make install` to install this program install: bin lib share uninstall: - rm -fv -- "$(DESTDIR)/bin/bashtard" - rm -rfv -- "$(DESTDIR)/lib/bashtard" - rm -rfv -- "$(DESTDIR)/share/bashtard" + rm -fv -- "$(PREFIX)$(DESTDIR)/bin/bashtard" + rm -rfv -- "$(PREFIX)$(DESTDIR)/lib/bashtard" + rm -rfv -- "$(PREFIX)$(DESTDIR)/share/bashtard" bin: - mkdir -pv -- "$(DESTDIR)/bin" + mkdir -pv -- "$(PREFIX)$(DESTDIR)/bin" sed \ -e 's@BASHTARD_LIBDIR=.*@BASHTARD_LIBDIR="$(DESTDIR)/lib/bashtard"@' \ -e 's@BASHTARD_SHAREDIR=.*@BASHTARD_SHAREDIR="$(DESTDIR)/share/bashtard"@' \ -e 's@BASHTARD_ETCDIR=.*@BASHTARD_ETCDIR="$(ETCDIR)/bashtard"@' \ - bin/bashtard > "$(DESTDIR)/bin/bashtard" - chmod +x "$(DESTDIR)/bin/bashtard" + bin/bashtard > "$(PREFIX)$(DESTDIR)/bin/bashtard" + chmod +x "$(PREFIX)$(DESTDIR)/bin/bashtard" lib: - mkdir -pv -- "$(DESTDIR)/lib/bashtard" - cp -rv -- lib/* "$(DESTDIR)/lib/bashtard" + mkdir -pv -- "$(PREFIX)$(DESTDIR)/lib/bashtard" + cp -rv -- lib/* "$(PREFIX)$(DESTDIR)/lib/bashtard" man: - mkdir -pv -- "$(DESTDIR)/share/man/man"{1,3,5,7} - scdoc < share/doc/bashtard.1.scd > "$(DESTDIR)/share/man/man1/bashtard.1" - scdoc < share/doc/bashtard.3.scd > "$(DESTDIR)/share/man/man3/bashtard.3" - scdoc < share/doc/bashtard.5.scd > "$(DESTDIR)/share/man/man5/bashtard.5" - scdoc < share/doc/bashtard.7.scd > "$(DESTDIR)/share/man/man7/bashtard.7" - scdoc < share/doc/playbooks.d.7.scd > "$(DESTDIR)/share/man/man7/playbooks.d.7" + mkdir -pv -- "$(PREFIX)$(DESTDIR)/share/man/man1" + mkdir -pv -- "$(PREFIX)$(DESTDIR)/share/man/man3" + mkdir -pv -- "$(PREFIX)$(DESTDIR)/share/man/man5" + mkdir -pv -- "$(PREFIX)$(DESTDIR)/share/man/man7" + scdoc < share/doc/bashtard.1.scd | gzip -cn9 > "$(PREFIX)$(DESTDIR)/share/man/man1/bashtard.1.gz" + scdoc < share/doc/bashtard.3.scd | gzip -cn9 > "$(PREFIX)$(DESTDIR)/share/man/man3/bashtard.3.gz" + scdoc < share/doc/bashtard.5.scd | gzip -cn9 > "$(PREFIX)$(DESTDIR)/share/man/man5/bashtard.5.gz" + scdoc < share/doc/bashtard.7.scd | gzip -cn9 > "$(PREFIX)$(DESTDIR)/share/man/man7/bashtard.7.gz" + scdoc < share/doc/playbooks.d.7.scd | gzip -cn9 > "$(PREFIX)$(DESTDIR)/share/man/man7/playbooks.d.7.gz" + +pkg-debian: + mkdir -pv "$(PKG_ROOT)" + + # Install package + $(MAKE) PREFIX="$(PKG_ROOT)" install + $(MAKE) PREFIX="$(PKG_ROOT)" man + + # Apply Debian stuff + mkdir -pv "$(PKG_ROOT)/DEBIAN" + sed \ + -e 's/%VERSION%/$(PKG_VERSION)/g' \ + etc/debian/control > "$(PKG_ROOT)/DEBIAN/control" + mkdir -pv "$(PKG_ROOT)/usr/share/doc/bashtard" + gzip -cn9 < CHANGELOG.md > "$(PKG_ROOT)/usr/share/doc/bashtard/changelog.gz" + cp -rv LICENSES/AGPL-3.0-or-later.txt "$(PKG_ROOT)/usr/share/doc/bashtard/copyright" + find "$(PKG_ROOT)" -iname "*.bash" -type f -exec chmod +x {} \; + + # Build Debian package + cd "$(PKG_WORKDIR)" && dpkg --build "bashtard-$(PKG_VERSION)" + + # TODO: Remove lintian, that's a manual step + lintian --no-tag-display-limit "$(PKG_WORKDIR)/bashtard-$(PKG_VERSION).deb" qa: reuse lint shellcheck -x bin/bashtard **/*.bash share: - mkdir -pv -- "$(DESTDIR)/share/bashtard" + mkdir -pv -- "$(PREFIX)$(DESTDIR)/share/bashtard" cp -rv -- \ share/defaults \ share/os.d \ - "$(DESTDIR)/share/bashtard" + "$(PREFIX)$(DESTDIR)/share/bashtard" -.PHONY: all install uninstall qa bin lib man share +.PHONY: all install uninstall pkg-debian qa bin lib man share -- cgit v1.1