Files
bitoj_python/packaging/ubuntu/build-deb.sh
2026-02-08 17:18:23 +08:00

51 lines
1.7 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
PROJECT_ROOT=$(cd "$SCRIPT_DIR/../.." && pwd)
OUT_DIR="$SCRIPT_DIR/dist"
BUILD_DIR="$SCRIPT_DIR/build"
PKG_ROOT="$BUILD_DIR/bitoj"
VERSION="${VERSION:-0.1.0}"
ARCH="${ARCH:-all}"
rm -rf "$BUILD_DIR" "$OUT_DIR"
mkdir -p "$PKG_ROOT/DEBIAN" \
"$PKG_ROOT/usr/lib/bitoj" \
"$PKG_ROOT/etc/bitoj" \
"$PKG_ROOT/etc/apparmor.d" \
"$PKG_ROOT/lib/systemd/system" \
"$PKG_ROOT/var/lib/bitoj" \
"$PKG_ROOT/var/log/bitoj"
cp "$SCRIPT_DIR/control" "$PKG_ROOT/DEBIAN/control"
cp "$SCRIPT_DIR/postinst" "$PKG_ROOT/DEBIAN/postinst"
cp "$SCRIPT_DIR/prerm" "$PKG_ROOT/DEBIAN/prerm"
cp "$SCRIPT_DIR/postrm" "$PKG_ROOT/DEBIAN/postrm"
chmod 0755 "$PKG_ROOT/DEBIAN/postinst" "$PKG_ROOT/DEBIAN/prerm" "$PKG_ROOT/DEBIAN/postrm"
cp "$SCRIPT_DIR/bitoj.service" "$PKG_ROOT/lib/systemd/system/bitoj.service"
cp "$SCRIPT_DIR/bitoj-guards" "$PKG_ROOT/etc/apparmor.d/bitoj-guards"
mkdir -p "$PKG_ROOT/usr/lib/tmpfiles.d"
cp "$SCRIPT_DIR/tmpfiles.conf" "$PKG_ROOT/usr/lib/tmpfiles.d/bitoj.conf"
if command -v rsync >/dev/null 2>&1; then
rsync -a --delete --exclude 'packaging/ubuntu' "$PROJECT_ROOT/" "$PKG_ROOT/usr/lib/bitoj/"
else
echo "rsync not found; fallback to cp -a" >&2
cp -a "$PROJECT_ROOT/." "$PKG_ROOT/usr/lib/bitoj/"
rm -rf "$PKG_ROOT/usr/lib/bitoj/packaging/ubuntu"
fi
chmod +x "$PKG_ROOT/usr/lib/bitoj/judge" \
"$PKG_ROOT/usr/lib/bitoj/judge-daemon" \
"$PKG_ROOT/usr/lib/bitoj/judgeold" \
"$PKG_ROOT/usr/lib/bitoj/judge-daemonold" \
"$PKG_ROOT/usr/lib/bitoj/utils/bitoj_adduser"
mkdir -p "$OUT_DIR"
dpkg-deb --build "$PKG_ROOT" "$OUT_DIR/bitoj_${VERSION}_${ARCH}.deb"
echo "Built: $OUT_DIR/bitoj_${VERSION}_${ARCH}.deb"