LICENSE is installed with the docs, included in make dist, and becomes the Debian package's copyright file together with the bundled Cinzel font's OFL. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
96 lines
3.8 KiB
Bash
Executable File
96 lines
3.8 KiB
Bash
Executable File
#!/bin/sh
|
|
# Builds a Debian package of Jarl: dist/jarl_<version>_<arch>.deb.
|
|
# Run through 'make deb' (which sets the variables below); needs only
|
|
# dpkg-deb, no root and no debhelper.
|
|
#
|
|
# The package installs, with Debian's paths:
|
|
# /usr/bin/jarld, /usr/bin/jarl
|
|
# /usr/share/bash-completion/completions/{jarl,jarld}
|
|
# /usr/lib/systemd/system/jarl.service
|
|
# /usr/lib/sysusers.d/jarl.conf, /usr/lib/tmpfiles.d/jarl.conf
|
|
# /usr/share/doc/jarl/ (README, CHANGELOG, docs, contrib)
|
|
# and its scripts (deploy/debian) create the jarl user and directories and
|
|
# /etc/jarl/jarl.yaml on the first install, restart a running jarld on
|
|
# upgrades, and stop it on removal. No file in /etc belongs to the package,
|
|
# so an upgrade never asks about configuration files.
|
|
#
|
|
# Variables: DEB_ARCH (Debian architecture, e.g. amd64, arm64, armhf),
|
|
# DEB_VERSION, VERSION, LDFLAGS, GOFLAGS, and DEB_MAINTAINER (default: your
|
|
# git name and email).
|
|
set -eu
|
|
|
|
: "${DEB_ARCH:?}" "${DEB_VERSION:?}" "${VERSION:?}" "${LDFLAGS:?}"
|
|
GOFLAGS=${GOFLAGS:-}
|
|
|
|
# Debian architecture -> Go architecture.
|
|
goarm=
|
|
case "$DEB_ARCH" in
|
|
amd64) goarch=amd64 ;;
|
|
arm64) goarch=arm64 ;;
|
|
armhf) goarch=arm goarm=7 ;;
|
|
i386) goarch=386 ;;
|
|
ppc64el) goarch=ppc64le ;;
|
|
riscv64) goarch=riscv64 ;;
|
|
s390x) goarch=s390x ;;
|
|
*) echo "mkdeb: unsupported architecture $DEB_ARCH" >&2; exit 1 ;;
|
|
esac
|
|
|
|
if [ -z "${DEB_MAINTAINER:-}" ]; then
|
|
name=$(git config user.name 2>/dev/null || true)
|
|
email=$(git config user.email 2>/dev/null || true)
|
|
DEB_MAINTAINER="${name:-Jarl packager} <${email:-root@localhost}>"
|
|
fi
|
|
|
|
work=dist/deb/jarl_${DEB_VERSION}_${DEB_ARCH}
|
|
root=$work/root
|
|
out=dist/jarl_${DEB_VERSION}_${DEB_ARCH}.deb
|
|
rm -rf "$work"
|
|
mkdir -p "$root/DEBIAN"
|
|
|
|
# Binaries for the package's architecture (bin/ holds the host's, which
|
|
# also generated the completion scripts).
|
|
echo "mkdeb: building for linux/$goarch"
|
|
# go reads GOFLAGS (-trimpath) from the environment.
|
|
export GOFLAGS
|
|
GOOS=linux GOARCH=$goarch GOARM=$goarm CGO_ENABLED=0 go build -ldflags "$LDFLAGS" -o "$work/jarld" ./cmd/jarld
|
|
GOOS=linux GOARCH=$goarch GOARM=$goarm CGO_ENABLED=0 go build -ldflags "$LDFLAGS" -o "$work/jarl" ./cmd/jarl
|
|
|
|
make --no-print-directory install-files DESTDIR="$root" PREFIX=/usr \
|
|
UNITDIR=/usr/lib/systemd/system JARLD_BIN="$work/jarld" JARL_BIN="$work/jarl" >/dev/null
|
|
|
|
# Debian's machine-readable copyright file, from LICENSE and the bundled
|
|
# font's licence (the font is embedded in jarld's web UI).
|
|
indent() { sed -e 's/^$/./' -e 's/^/ /' "$1"; }
|
|
{
|
|
echo "Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/"
|
|
echo "Upstream-Name: jarl"
|
|
echo
|
|
echo "Files: *"
|
|
echo "Copyright: $(sed -n 's/^Copyright (c) //p' LICENSE)"
|
|
echo "License: Expat"
|
|
indent LICENSE
|
|
echo
|
|
echo "Files: internal/web/static/assets/fonts/*"
|
|
echo "Copyright: 2020 The Cinzel Project Authors"
|
|
echo "License: OFL-1.1"
|
|
indent internal/web/static/assets/fonts/Cinzel-OFL.txt
|
|
} > "$root/usr/share/doc/jarl/copyright"
|
|
|
|
for f in postinst prerm postrm; do
|
|
install -m 0755 "deploy/debian/$f" "$root/DEBIAN/$f"
|
|
done
|
|
# Directories 0755 and no group/other write, whatever the build's umask.
|
|
find "$root" -type d -exec chmod 0755 {} +
|
|
chmod -R go-w "$root"
|
|
size=$(du -sk --exclude=DEBIAN "$root" | cut -f1)
|
|
sed -e "s/@VERSION@/$DEB_VERSION/" -e "s/@ARCH@/$DEB_ARCH/" -e "s/@SIZE@/$size/" \
|
|
-e "s|@MAINTAINER@|$DEB_MAINTAINER|" deploy/debian/control.in > "$root/DEBIAN/control"
|
|
(cd "$root" && find . -path ./DEBIAN -prune -o -type f -print | sed 's|^\./||' | sort | xargs md5sum) > "$root/DEBIAN/md5sums"
|
|
chmod 0644 "$root/DEBIAN/control" "$root/DEBIAN/md5sums"
|
|
|
|
# Files belong to root in the package, whoever builds it.
|
|
dpkg-deb --root-owner-group -Zxz --build "$root" "$out" >/dev/null
|
|
rm -rf dist/deb
|
|
echo "mkdeb: wrote $out"
|
|
dpkg-deb --info "$out" | sed -n 's/^ \(Package\|Version\|Architecture\|Installed-Size\):/ \1:/p'
|