#!/bin/bash # Build a vpp-maglev Debian package for one architecture. # Usage: build-deb.sh set -euo pipefail ARCH="${1:?usage: build-deb.sh }" VERSION="${2:?usage: build-deb.sh }" COMMIT="${3:?usage: build-deb.sh }" FULL_VERSION="${VERSION}~${COMMIT}" REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)" PKG="vpp-maglev_${FULL_VERSION}_${ARCH}" STAGING="$(mktemp -d)" trap 'rm -rf "$STAGING"' EXIT echo "Building ${PKG}.deb" # Directories install -d "$STAGING/usr/sbin" install -d "$STAGING/usr/bin" install -d "$STAGING/usr/share/man/man1" install -d "$STAGING/usr/share/man/man8" install -d "$STAGING/lib/systemd/system" install -d "$STAGING/etc/default" install -d "$STAGING/etc/vpp-maglev" install -d "$STAGING/DEBIAN" # Binaries install -m 755 "$REPO_ROOT/build/${ARCH}/maglevd" "$STAGING/usr/sbin/maglevd" install -m 755 "$REPO_ROOT/build/${ARCH}/maglevc" "$STAGING/usr/bin/maglevc" # Man pages gzip -9 -c "$REPO_ROOT/docs/maglevd.8" > "$STAGING/usr/share/man/man8/maglevd.8.gz" gzip -9 -c "$REPO_ROOT/docs/maglevc.1" > "$STAGING/usr/share/man/man1/maglevc.1.gz" # Systemd unit install -m 644 "$REPO_ROOT/debian/vpp-maglevd.service" "$STAGING/lib/systemd/system/vpp-maglevd.service" # /etc/default/vpp-maglev (conffile — dpkg won't overwrite on upgrade) install -m 644 "$REPO_ROOT/debian/default.vpp-maglev" "$STAGING/etc/default/vpp-maglev" # /etc/vpp-maglev/maglev.yaml (conffile) install -m 644 "$REPO_ROOT/debian/maglev.yaml" "$STAGING/etc/vpp-maglev/maglev.yaml" # DEBIAN/control (version field uses full_version including commit) sed "s/@VERSION@/${FULL_VERSION}/;s/@ARCH@/${ARCH}/" \ "$REPO_ROOT/debian/control.in" > "$STAGING/DEBIAN/control" # DEBIAN/conffiles, postinst, prerm, postrm install -m 644 "$REPO_ROOT/debian/conffiles" "$STAGING/DEBIAN/conffiles" install -m 755 "$REPO_ROOT/debian/postinst" "$STAGING/DEBIAN/postinst" install -m 755 "$REPO_ROOT/debian/prerm" "$STAGING/DEBIAN/prerm" install -m 755 "$REPO_ROOT/debian/postrm" "$STAGING/DEBIAN/postrm" # Emit package into build/ mkdir -p "$REPO_ROOT/build" OUT="$REPO_ROOT/build/${PKG}.deb" dpkg-deb --build --root-owner-group "$STAGING" "$OUT" echo "Built: $OUT"