Grotti 3.5.0: Pagination, Logging, Deb-Paket, Makro-Doku, PLA-Match-Fix.
This commit is contained in:
1 parent
4ffe1dcfc6
commit
f1f79c2ce2
38 files changed
+1062
-75
No files matched your search
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env bash
|
||||
# Baut grotti_<version>_<arch>.deb (auf dem Zielsystem oder arm64-Container).
|
||||
# Aufruf aus dem Repo-Root: bash packaging/build-deb.sh
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
cd "$ROOT"
|
||||
|
||||
if ! command -v dpkg-deb >/dev/null 2>&1; then
|
||||
echo "dpkg-deb fehlt — bitte auf Debian/Raspberry Pi OS bauen." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
VERSION="$(python3 -c "from grotti.version import __version__; print(__version__)")"
|
||||
ARCH="$(dpkg --print-architecture)"
|
||||
PKG="grotti_${VERSION}_${ARCH}"
|
||||
DIST="$ROOT/packaging/dist"
|
||||
STAGE="$DIST/$PKG"
|
||||
|
||||
rm -rf "$STAGE"
|
||||
mkdir -p "$STAGE/DEBIAN" \
|
||||
"$STAGE/usr/lib/grotti" \
|
||||
"$STAGE/usr/bin" \
|
||||
"$STAGE/etc/grotti" \
|
||||
"$STAGE/lib/systemd/system" \
|
||||
"$STAGE/usr/share/grotti" \
|
||||
"$STAGE/usr/share/doc/grotti" \
|
||||
"$STAGE/var/lib/grotti/data/eingang" \
|
||||
"$STAGE/var/lib/grotti/slice"
|
||||
|
||||
rsync -a --delete \
|
||||
--exclude '__pycache__' --exclude '*.pyc' --exclude '.pytest_cache' \
|
||||
"$ROOT/grotti/" "$STAGE/usr/lib/grotti/grotti/"
|
||||
rsync -a --delete \
|
||||
--exclude '__pycache__' --exclude '*.pyc' \
|
||||
"$ROOT/web/" "$STAGE/usr/lib/grotti/web/"
|
||||
cp "$ROOT/server.py" "$STAGE/usr/lib/grotti/server.py"
|
||||
cp "$ROOT/requirements.txt" "$STAGE/usr/lib/grotti/requirements.txt"
|
||||
cp "$ROOT/config.example.json" "$STAGE/usr/lib/grotti/config.example.json"
|
||||
echo '[]' > "$STAGE/usr/lib/grotti/drucker.json"
|
||||
cp "$ROOT/packaging/config.pi.json" "$STAGE/usr/share/grotti/config.pi.json"
|
||||
cp "$ROOT/packaging/config.pi.json" "$STAGE/etc/grotti/config.json"
|
||||
cp "$ROOT/packaging/grotti.service" "$STAGE/lib/systemd/system/grotti.service"
|
||||
cp "$ROOT/docs/Anleitung-Installation-Pi.md" "$STAGE/usr/share/doc/grotti/"
|
||||
cp "$ROOT/CHANGELOG.md" "$STAGE/usr/share/doc/grotti/changelog"
|
||||
gzip -9 -f "$STAGE/usr/share/doc/grotti/changelog"
|
||||
|
||||
cat > "$STAGE/usr/bin/grotti" <<'EOF'
|
||||
#!/bin/sh
|
||||
export GROTTI_CONFIG="${GROTTI_CONFIG:-/etc/grotti/config.json}"
|
||||
exec /usr/lib/grotti/venv/bin/python /usr/lib/grotti/server.py "$@"
|
||||
EOF
|
||||
chmod 755 "$STAGE/usr/bin/grotti"
|
||||
|
||||
python3 -m venv "$STAGE/usr/lib/grotti/venv"
|
||||
"$STAGE/usr/lib/grotti/venv/bin/pip" install --upgrade pip wheel
|
||||
"$STAGE/usr/lib/grotti/venv/bin/pip" install -r "$ROOT/requirements.txt"
|
||||
|
||||
SIZE_KB="$(du -sk "$STAGE" | awk '{print $1}')"
|
||||
cat > "$STAGE/DEBIAN/control" <<EOF
|
||||
Package: grotti
|
||||
Version: ${VERSION}
|
||||
Section: web
|
||||
Priority: optional
|
||||
Architecture: ${ARCH}
|
||||
Maintainer: Dominic Gundel <[email protected]>
|
||||
Depends: python3 (>= 3.11), python3-venv, postgresql, adduser
|
||||
Installed-Size: ${SIZE_KB}
|
||||
Homepage: https://git.gundel.dev/dg/grotti
|
||||
Description: Farm-Manager für Moonraker-Drucker (Kobra 3 / S1)
|
||||
Grotti steuert eine 3D-Drucker-Farm über Moonraker: Wand, Warteschlange,
|
||||
Material, Abläufe und Protokoll. PostgreSQL wird lokal mit eingerichtet.
|
||||
EOF
|
||||
|
||||
cp "$ROOT/packaging/debian/conffiles" "$STAGE/DEBIAN/conffiles"
|
||||
for script in postinst prerm postrm; do
|
||||
cp "$ROOT/packaging/debian/$script" "$STAGE/DEBIAN/$script"
|
||||
chmod 755 "$STAGE/DEBIAN/$script"
|
||||
done
|
||||
|
||||
dpkg-deb --root-owner-group --build "$STAGE" "$DIST/${PKG}.deb"
|
||||
echo "Gebaut: $DIST/${PKG}.deb"
|
||||
echo "Install: sudo apt install ./packaging/dist/${PKG}.deb"
|
||||
echo "Logs: journalctl -u grotti -f"
|
||||
Reference in new issue
Block a user