From c54dcb1c1c49935c64bd57784392e5aaf9289d5c Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Sat, 17 Jan 2026 18:43:52 +0100 Subject: [PATCH] Add build script for macos dmgs. --- .github/workflows/build-dmg.yml | 44 +++++++++++++++++++++++++++++++++ .gitignore | 1 + qmltermwidget | 2 +- scripts/build-dmg.sh | 36 +++++++++++++++++++++++++++ 4 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build-dmg.yml create mode 100755 scripts/build-dmg.sh diff --git a/.github/workflows/build-dmg.yml b/.github/workflows/build-dmg.yml new file mode 100644 index 0000000..4a794e2 --- /dev/null +++ b/.github/workflows/build-dmg.yml @@ -0,0 +1,44 @@ +name: Build DMG + +on: + workflow_dispatch: + push: + branches: + - main + pull_request: + +jobs: + build-dmg: + name: Build (macOS, DMG) + runs-on: macos-14 + steps: + - uses: actions/checkout@v4 + + - name: Install Qt + uses: jurplel/install-qt-action@v4 + with: + version: 6.10.* + modules: qtshadertools + setup-python: false + cache: true + + - name: Build DMG + run: | + JOBS="$(sysctl -n hw.ncpu)" + ./scripts/build-dmg.sh + + - name: Collect artifact + run: | + mkdir -p release + mv ./*.dmg release/ + + - name: Attestation + uses: actions/attest-build-provenance@v1 + with: + subject-path: ./release/* + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: cool-retro-term-dmg + path: ./release/* diff --git a/.gitignore b/.gitignore index 18807b9..c96737e 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,4 @@ build .DS_Store *.app +*.dmg diff --git a/qmltermwidget b/qmltermwidget index 049b1de..eef7525 160000 --- a/qmltermwidget +++ b/qmltermwidget @@ -1 +1 @@ -Subproject commit 049b1dee787d9669e05d4e18e8727b8582c2cd65 +Subproject commit eef7525edb609387c5efd5e78fd4f0bce601c4bc diff --git a/scripts/build-dmg.sh b/scripts/build-dmg.sh new file mode 100755 index 0000000..623ca11 --- /dev/null +++ b/scripts/build-dmg.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +set -euo pipefail +set -x + +REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd -P)" +OLD_CWD="$(pwd -P)" +BUILD_DIR="$REPO_ROOT/build/dmg" +APP="cool-retro-term.app" +QML_DIR="$REPO_ROOT/app/qml" +JOBS="${JOBS:-$(sysctl -n hw.ncpu 2>/dev/null || echo 4)}" + +if ! command -v qmake >/dev/null; then + echo "qmake not found in PATH." >&2 + exit 1 +fi +QT_DIR="${QT_DIR:-$(qmake -query QT_INSTALL_PREFIX)}" +QT_BIN="${QT_DIR%/}/bin" + +mkdir -p "$BUILD_DIR" +rm -f "$BUILD_DIR/${APP%.app}.dmg" +pushd "$BUILD_DIR" + +"$QT_BIN/qmake" CONFIG+=release "$REPO_ROOT/cool-retro-term.pro" +make -j"$JOBS" + +PLUGIN_DST="$APP/Contents/PlugIns/qmltermwidget" +rm -rf "$PLUGIN_DST" +mkdir -p "$APP/Contents/PlugIns" +cp -R qmltermwidget/QMLTermWidget "$PLUGIN_DST" + +export QML_IMPORT_PATH="$PWD/$APP/Contents/PlugIns" +"$QT_BIN/macdeployqt" "$APP" -qmldir="$QML_DIR" -dmg + +rm -f "$APP/Contents/PlugIns/sqldrivers/"libqsql{odbc,psql,mimer}.dylib 2>/dev/null || true +mv "$BUILD_DIR/${APP%.app}.dmg" "$OLD_CWD/" +popd