Files
package-repo/sources/jellyfin_kiosk/bin/build.sh
T

80 lines
2.9 KiB
Bash
Executable File

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