📦 — Add a make target for Debian packaging

This commit is contained in:
Luc Didry 2023-12-20 15:56:22 +01:00
parent 7afe7e9b6f
commit 9d847657d1
No known key found for this signature in database
GPG key ID: EA868E12D0257E3C
7 changed files with 138 additions and 1 deletions

1
.gitignore vendored
View file

@ -4,3 +4,4 @@
/reaction*.sock
/result
/wiki
*.deb

9
DEBIAN/control Normal file
View file

@ -0,0 +1,9 @@
Package: reaction
Version: LAST_TAG
Architecture: amd64
Maintainer: ppom <>
Sections: utils
Package-Type: deb
Priority: Optional
Homepage: https://framagit.org/ppom/reaction
Description: A daemon that scans program outputs for repeated patterns, and takes action.

56
DEBIAN/postinst Executable file
View file

@ -0,0 +1,56 @@
#! /bin/sh
# postinst script for reaction
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
#
case "$1" in
configure|abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then
# The following line should be removed in trixie or trixie+1
deb-systemd-helper unmask 'reaction.service' >/dev/null || true
# was-enabled defaults to true, so new installations run enable.
if deb-systemd-helper --quiet was-enabled 'reaction.service'; then
# Enables the unit on first installation, creates new
# symlinks on upgrades if the unit file has changed.
deb-systemd-helper enable 'reaction.service' >/dev/null || true
else
# Update the statefile to add new symlinks (if any), which need to be
# cleaned up on purge. Also remove old symlinks.
deb-systemd-helper update-state 'reaction.service' >/dev/null || true
fi
fi
if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then
if [ -d /run/systemd/system ]; then
systemctl --system daemon-reload >/dev/null || true
fi
fi
exit 0

40
DEBIAN/postrm Executable file
View file

@ -0,0 +1,40 @@
#! /bin/sh
# postrm script for reaction
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postrm> `remove'
# * <postrm> `purge'
# * <old-postrm> `upgrade' <new-version>
# * <new-postrm> `failed-upgrade' <old-version>
# * <new-postrm> `abort-install'
# * <new-postrm> `abort-install' <old-version>
# * <new-postrm> `abort-upgrade' <old-version>
# * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
# for details, see /usr/doc/packaging-manual/
case "$1" in
purge|disappear)
# Remove configuration
rm -f /etc/reaction.yml
# Remove database
rm -f /var/lib/reaction/*
;;
remove|upgrade|failed-upgrade|abort-install|abort-upgrade)
# nothing
;;
esac
if [ "$1" = remove ] && [ -d /run/systemd/system ] ; then
systemctl --system daemon-reload >/dev/null || true
fi
if [ "$1" = "purge" ]; then
if [ -x "/usr/bin/deb-systemd-helper" ]; then
deb-systemd-helper purge 'reaction.service' >/dev/null || true
fi
fi

6
DEBIAN/prerm Executable file
View file

@ -0,0 +1,6 @@
#!/bin/sh
set -e
if [ -z "${DPKG_ROOT:-}" ] && [ "$1" = remove ] && [ -d /run/systemd/system ] ; then
deb-systemd-invoke stop 'reaction.service' >/dev/null || true
fi

View file

@ -1,9 +1,22 @@
all: reaction ip46tables
clean:
rm -f reaction ip46tables
rm -f reaction ip46tables reaction.deb
ip46tables: ip46tables.d/ip46tables.c
gcc -static ip46tables.d/ip46tables.c -o ip46tables
reaction: app/* reaction.go go.mod go.sum
CGO_ENABLED=0 go build -buildvcs=false .
reaction.deb: reaction ip46tables
chmod +x reaction ip46tables
mkdir -p deb/reaction/usr/bin/ deb/reaction/usr/sbin/ deb/reaction/lib/systemd/system/
cp reaction deb/reaction/usr/bin/
cp ip46tables deb/reaction/usr/sbin/
cp reaction.service deb/reaction/lib/systemd/system/
cp -r DEBIAN/ deb/reaction/DEBIAN
sed -e "s/LAST_TAG/`git tag --sort=v:refname | tail -n1`/" -e "s/Version: v/Version: /" -i deb/reaction/DEBIAN/*
cd deb && dpkg-deb --root-owner-group --build reaction
mv deb/reaction.deb reaction.deb
rm -rf deb/

12
reaction.service Normal file
View file

@ -0,0 +1,12 @@
[Unit]
Description=A daemon that scans program outputs for repeated patterns, and takes action.
Documentation=https://framagit.org/ppom/reaction-wiki
[Service]
ExecStart=/usr/bin/reaction start -c /etc/reaction.yml
StateDirectory=reaction
RuntimeDirectory=reaction
WorkingDirectory=/var/lib/reaction
[Install]
WantedBy=multi-user.target