Internal
Public Access
packaging: add macOS dmg build script
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Executable
+51
@@ -0,0 +1,51 @@
|
|||||||
|
#!/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/macos}"
|
||||||
|
STAGE_DIR="$DIST_DIR/dmg-staging"
|
||||||
|
INSTALL_PREFIX="$DIST_DIR/install"
|
||||||
|
APP_BUNDLE="OrbitHub.app"
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
VERSION="$(sed -n 's/^CMAKE_PROJECT_VERSION:STATIC=//p' "$BUILD_DIR/CMakeCache.txt" | head -n1)"
|
||||||
|
if [[ -z "$VERSION" ]]; then
|
||||||
|
echo "Unable to determine project version from $BUILD_DIR/CMakeCache.txt" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
MACDEPLOYQT="$(brew --prefix qt@6)/bin/macdeployqt"
|
||||||
|
if [[ ! -x "$MACDEPLOYQT" ]]; then
|
||||||
|
echo "macdeployqt not found at $MACDEPLOYQT" >&2
|
||||||
|
echo "Install it: brew install qt@6" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$DIST_DIR"
|
||||||
|
rm -rf "$STAGE_DIR" "$INSTALL_PREFIX"
|
||||||
|
mkdir -p "$STAGE_DIR"
|
||||||
|
|
||||||
|
cmake --build "$BUILD_DIR" -j
|
||||||
|
cmake --install "$BUILD_DIR" --prefix "$INSTALL_PREFIX"
|
||||||
|
|
||||||
|
if [[ ! -d "$INSTALL_PREFIX/$APP_BUNDLE" ]]; then
|
||||||
|
echo "Expected app bundle not found: $INSTALL_PREFIX/$APP_BUNDLE" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
"$MACDEPLOYQT" "$INSTALL_PREFIX/$APP_BUNDLE"
|
||||||
|
|
||||||
|
cp -R "$INSTALL_PREFIX/$APP_BUNDLE" "$STAGE_DIR/$APP_BUNDLE"
|
||||||
|
ln -s /Applications "$STAGE_DIR/Applications"
|
||||||
|
|
||||||
|
OUTPUT_DMG="$DIST_DIR/OrbitHub-${VERSION}.dmg"
|
||||||
|
rm -f "$OUTPUT_DMG"
|
||||||
|
hdiutil create -volname "OrbitHub" -srcfolder "$STAGE_DIR" -ov -format UDZO "$OUTPUT_DMG"
|
||||||
|
|
||||||
|
echo "Created $OUTPUT_DMG"
|
||||||
Reference in New Issue
Block a user