#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" BUILD_DIR="${1:-$ROOT_DIR/build}" DIST_DIR="${2:-$ROOT_DIR/dist}" STAGE_DIR="$DIST_DIR/deb-staging" PKG_ROOT="$STAGE_DIR/orbithub" if [[ ! -f "$BUILD_DIR/CMakeCache.txt" ]]; then echo "Build directory not configured: $BUILD_DIR" >&2 echo "Run: cmake -S \"$ROOT_DIR\" -B \"$BUILD_DIR\" -G Ninja" >&2 exit 1 fi mkdir -p "$DIST_DIR" rm -rf "$STAGE_DIR" mkdir -p "$PKG_ROOT/DEBIAN" VERSION="$(sed -n 's/^CMAKE_PROJECT_VERSION:STATIC=//p' "$BUILD_DIR/CMakeCache.txt" | head -n1)" ARCH="$(dpkg --print-architecture)" if [[ -z "$VERSION" ]]; then echo "Unable to determine project version from $BUILD_DIR/CMakeCache.txt" >&2 exit 1 fi cmake --build "$BUILD_DIR" -j cmake --install "$BUILD_DIR" --prefix "$PKG_ROOT/usr" cat > "$PKG_ROOT/DEBIAN/control" < Depends: libc6, libstdc++6, libqt6core6, libqt6gui6, libqt6widgets6, libqt6sql6, libssl3, zlib1g, openssh-client Description: OrbitHub remote session manager OrbitHub is a native desktop application for managing connection profiles and opening SSH and RDP sessions in a tabbed interface. EOF cat > "$PKG_ROOT/DEBIAN/postinst" <<'EOF' #!/bin/sh set -e if command -v update-desktop-database >/dev/null 2>&1; then update-desktop-database -q /usr/share/applications || true fi if command -v gtk-update-icon-cache >/dev/null 2>&1; then gtk-update-icon-cache -q /usr/share/icons/hicolor || true fi EOF chmod 0755 "$PKG_ROOT/DEBIAN/postinst" cat > "$PKG_ROOT/DEBIAN/postrm" <<'EOF' #!/bin/sh set -e if command -v update-desktop-database >/dev/null 2>&1; then update-desktop-database -q /usr/share/applications || true fi if command -v gtk-update-icon-cache >/dev/null 2>&1; then gtk-update-icon-cache -q /usr/share/icons/hicolor || true fi EOF chmod 0755 "$PKG_ROOT/DEBIAN/postrm" OUTPUT_DEB="$DIST_DIR/orbithub_${VERSION}_${ARCH}.deb" fakeroot dpkg-deb --build "$PKG_ROOT" "$OUTPUT_DEB" >/dev/null echo "Created $OUTPUT_DEB"