#!/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"