feat(jellyfin-kiosk): add debian package build and staging for jellyfin-kiosk
This commit is contained in:
Executable
+79
@@ -0,0 +1,79 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
PKG_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
CLUSTER_ROOT="$(cd "$PKG_ROOT/../../.." && pwd)"
|
||||
|
||||
CONTROL_FILE=$(ls -1 "$PKG_ROOT"/*.control 2>/dev/null | head -n 1)
|
||||
|
||||
if [ -z "$CONTROL_FILE" ]; then
|
||||
echo "Fout: Geen .control bestand gevonden in $PKG_ROOT" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PACKAGE_NAME=$(awk '/^Package: /{print $NF}' "$CONTROL_FILE")
|
||||
DETECTED_VERSION=$(awk '/^Version: /{print $NF}' "$CONTROL_FILE")
|
||||
|
||||
# Version resolution: CLI arg > ENV var > .control version > default 0.1.0
|
||||
if [ -n "$1" ]; then
|
||||
VERSION="$1"
|
||||
elif [ -n "$PACKAGE_VERSION" ]; then
|
||||
VERSION="$PACKAGE_VERSION"
|
||||
elif [ -n "$VERSION" ]; then
|
||||
VERSION="$VERSION"
|
||||
elif [ "$DETECTED_VERSION" != "{VERSION}" ] && [ -n "$DETECTED_VERSION" ]; then
|
||||
VERSION="$DETECTED_VERSION"
|
||||
else
|
||||
VERSION="0.1.0"
|
||||
fi
|
||||
|
||||
cd "$PKG_ROOT"
|
||||
|
||||
TARGET_BIN="packaging/$PACKAGE_NAME/usr/bin/jellyfin-kiosk"
|
||||
mkdir -p "packaging/$PACKAGE_NAME/usr/bin"
|
||||
mkdir -p "packaging/$PACKAGE_NAME/etc/jellyfin-client"
|
||||
mkdir -p "packaging/$PACKAGE_NAME/usr/lib/systemd/system"
|
||||
|
||||
RELEASE_BIN="$CLUSTER_ROOT/jellyfin-client/jellyfin-kiosk-rs/target/release/jellyfin-kiosk-rs"
|
||||
if [ -f "$RELEASE_BIN" ]; then
|
||||
echo "Copying compiled binary from $RELEASE_BIN to $TARGET_BIN..."
|
||||
cp -f "$RELEASE_BIN" "$TARGET_BIN"
|
||||
strip -s "$TARGET_BIN" 2>/dev/null || true
|
||||
elif [ ! -f "$TARGET_BIN" ]; then
|
||||
echo "Error: Binary not found at $RELEASE_BIN or $TARGET_BIN" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Copy config example if available
|
||||
if [ -f "$CLUSTER_ROOT/jellyfin-client/config.yaml" ]; then
|
||||
cp -f "$CLUSTER_ROOT/jellyfin-client/config.yaml" "packaging/$PACKAGE_NAME/etc/jellyfin-client/config.example.yaml"
|
||||
elif [ -f "$CLUSTER_ROOT/jellyfin-client/config.example.yaml" ]; then
|
||||
cp -f "$CLUSTER_ROOT/jellyfin-client/config.example.yaml" "packaging/$PACKAGE_NAME/etc/jellyfin-client/config.example.yaml"
|
||||
fi
|
||||
|
||||
mkdir -p "packaging/$PACKAGE_NAME/DEBIAN"
|
||||
sed "s/{VERSION}/${VERSION}/" "$CONTROL_FILE" > "packaging/$PACKAGE_NAME/DEBIAN/control"
|
||||
|
||||
ARCH=$(awk '/^Architecture: /{print $NF}' "packaging/$PACKAGE_NAME/DEBIAN/control")
|
||||
ARCH="${ARCH:-amd64}"
|
||||
DEB_FILENAME="${PACKAGE_NAME}-${VERSION}_${ARCH}.deb"
|
||||
|
||||
echo "Building package: $PACKAGE_NAME ($VERSION) [$ARCH] -> $DEB_FILENAME"
|
||||
|
||||
# Ensure correct Debian directory permissions
|
||||
find "packaging/$PACKAGE_NAME" -type d -exec chmod 755 {} +
|
||||
find "packaging/$PACKAGE_NAME" -type f -exec chmod 644 {} +
|
||||
find "packaging/$PACKAGE_NAME/usr/bin" -type f -exec chmod 755 {} + 2>/dev/null || true
|
||||
find "packaging/$PACKAGE_NAME/DEBIAN" -type f -exec chmod 755 {} + 2>/dev/null || true
|
||||
chmod 644 "packaging/$PACKAGE_NAME/DEBIAN/control" 2>/dev/null || true
|
||||
if [ -f "packaging/$PACKAGE_NAME/DEBIAN/conffiles" ]; then
|
||||
chmod 644 "packaging/$PACKAGE_NAME/DEBIAN/conffiles"
|
||||
fi
|
||||
|
||||
# Build debian binary package
|
||||
dpkg-deb --build "packaging/$PACKAGE_NAME" "$DEB_FILENAME"
|
||||
|
||||
# Cleanup temporary control file
|
||||
rm -f "packaging/$PACKAGE_NAME/DEBIAN/control"
|
||||
echo "Succesvol gebouwd: $DEB_FILENAME"
|
||||
Reference in New Issue
Block a user