Internal
Public Access
build-deb.sh and build-dmg.sh both read VERSION from CMakeCache.txt before calling cmake --build -- but that build step is exactly what reconfigures CMakeCache.txt if CMakeLists.txt changed since the build dir was last configured. If the version was bumped and the script is run without an explicit reconfigure first, it silently packages the stale version (observed: v2026.9.15's macOS build produced OrbitHub-2026.9.14.2.dmg). Move the VERSION read to after the build. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
75 lines
2.3 KiB
Bash
Executable File
75 lines
2.3 KiB
Bash
Executable File
#!/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"
|
|
|
|
# Read VERSION only after the build (which reconfigures CMakeCache.txt if
|
|
# CMakeLists.txt changed since the build dir was last configured) --
|
|
# reading it beforehand risks packaging a stale version string.
|
|
cmake --build "$BUILD_DIR" -j
|
|
|
|
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 --install "$BUILD_DIR" --prefix "$PKG_ROOT/usr"
|
|
|
|
cat > "$PKG_ROOT/DEBIAN/control" <<EOF
|
|
Package: orbithub
|
|
Version: ${VERSION}
|
|
Section: net
|
|
Priority: optional
|
|
Architecture: ${ARCH}
|
|
Maintainer: OrbitHub Maintainers <maintainers@orbithub.local>
|
|
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"
|