Vestibule/packaging/build-flatpak.sh

57 lines
1.7 KiB
Bash
Executable File

#!/bin/sh
# build-flatpak.sh — one-shot Linux packaging: build the Flatpak bundle.
#
# Output: packaging/Vestibule-<version>.flatpak
#
# Prerequisites:
# - flatpak + flatpak-builder (distro package)
# - the Freedesktop 24.08 SDK + Rust extension (installed automatically
# from Flathub on first run, ~1 GB)
#
# Usage:
# ./packaging/build-flatpak.sh
#
# POSIX sh.
set -eu
VERSION="1.2.2"
APP_ID="net.dcos.Vestibule"
PACKAGING_DIR=$(cd "$(dirname "$0")" && pwd)
REPO_ROOT=$(cd "${PACKAGING_DIR}/.." && pwd)
REPO_DIR="${PACKAGING_DIR}/repo"
BUNDLE="${PACKAGING_DIR}/Vestibule-${VERSION}.flatpak"
for tool in flatpak flatpak-builder; do
if ! command -v "${tool}" >/dev/null 2>&1; then
echo "error: ${tool} not found — install it from your distribution" >&2
exit 1
fi
done
echo "==> ensure flathub remote + Freedesktop 24.08 SDK (first run: ~1 GB)"
flatpak remote-add --if-not-exists --user flathub \
https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user --noninteractive -y flathub \
org.freedesktop.Sdk//24.08 \
org.freedesktop.Sdk.Extension.rust-stable//24.08 \
2>/dev/null || flatpak install --user --noninteractive flathub \
org.freedesktop.Sdk//24.08 \
org.freedesktop.Sdk.Extension.rust-stable//24.08
echo "==> flatpak-builder"
cd "${REPO_ROOT}"
rm -rf "${REPO_DIR}"
flatpak-builder --force-clean --repo="${PACKAGING_DIR}/repo" \
"${PACKAGING_DIR}/builddir" \
"${PACKAGING_DIR}/${APP_ID}.json"
echo "==> bundle"
flatpak build-bundle "${PACKAGING_DIR}/repo" "${BUNDLE}" "${APP_ID}" "${VERSION}"
echo ""
echo " [ok] ${BUNDLE} ($(du -h "${BUNDLE}" | cut -f1))"
echo ""
echo "Install locally: flatpak install --user ${BUNDLE}"
echo "Then run: flatpak run ${APP_ID}"