#!/bin/sh # build-flatpak.sh — one-shot Linux packaging: build the Flatpak bundle. # # Output: packaging/Vestibule-.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}"