aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile66
1 files changed, 49 insertions, 17 deletions
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