80 lines
2.9 KiB
Bash
Executable File
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"
|