gRPC / proto - Rename WatchBackendEvents → WatchEvents; return a stream of Event oneof (LogEvent, BackendEvent, FrontendEvent) with optional filter flags (log, log_level, backend, frontend) - Add EnableBackend, DisableBackend, SetFrontendPoolBackendWeight RPCs - Rename PauseResumeRequest → BackendRequest - Add CheckConfig RPC returning ok/parse_error/semantic_error maglevd - Route slog through a LogBroadcaster (slog.Handler) so WatchEvents subscribers can receive structured log records independently of the daemon's own --log-level - Add --reflection flag (default true) to toggle gRPC server reflection - Add --check flag: validates config file and exits 0/1/2 - SIGHUP: use config.Check before applying reload; log parse vs semantic error separately; refuse reload on any error - Rename default config path /etc/maglev → /etc/vpp-maglev maglevc - Add 'watch events [num <n>] [log [level <level>]] [backend] [frontend]' command; prints compact protojson, stops on any keypress or Ctrl-C; uses cbreak mode (not raw) so output post-processing is preserved - Add 'set backend <name> enable|disable' - Add 'set frontend <name> pool <pool> backend <name> weight <0-100>' - Add 'config check' command Debian packaging - Rename service unit to vpp-maglevd.service - Rename conffiles to /etc/default/vpp-maglev and /etc/vpp-maglev/ - Create maglevd system user/group in postinst; add to vpp group if present - Add postrm; add adduser to Depends
60 lines
2.2 KiB
Bash
Executable File
60 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# Build a vpp-maglev Debian package for one architecture.
|
|
# Usage: build-deb.sh <amd64|arm64> <version> <commit>
|
|
set -euo pipefail
|
|
|
|
ARCH="${1:?usage: build-deb.sh <amd64|arm64> <version> <commit>}"
|
|
VERSION="${2:?usage: build-deb.sh <amd64|arm64> <version> <commit>}"
|
|
COMMIT="${3:?usage: build-deb.sh <amd64|arm64> <version> <commit>}"
|
|
|
|
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"
|