From 1c0759f1fb3cc0486f0a3cb81fcee7e1957c1c34 Mon Sep 17 00:00:00 2001 From: "John Q. Herman" Date: Sat, 4 Jul 2026 00:12:30 -0400 Subject: [PATCH 1/3] chore: clean release-build log noise Silence the nodiscard warning in the playback-profiles test helper (clang -Wunused-result and MSVC C4834), and prune the Mimer/ODBC/psql Qt SQL driver plugins on the macOS runner: the app only loads SQLite, Mimer's missing client library made macdeployqt log ERRORs in every DMG build, and ODBC/psql drew private-API warnings. --- .github/workflows/build.yml | 8 ++++++++ tests/test_playback_profiles.cpp | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dfac569..c0268ac 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -150,6 +150,14 @@ jobs: target: "desktop" arch: "clang_64" + # the app only uses SQLite; the Mimer driver's missing client library + # makes macdeployqt spew ERRORs, and ODBC/psql draw private-API warnings + - name: Prune unused Qt SQL drivers + run: | + rm -f "$QT_ROOT_DIR/plugins/sqldrivers/"libqsqlmimer*.dylib \ + "$QT_ROOT_DIR/plugins/sqldrivers/"libqsqlodbc*.dylib \ + "$QT_ROOT_DIR/plugins/sqldrivers/"libqsqlpsql*.dylib + # brew liblo is arm64-only too; build it universal from source - name: Build liblo (universal) run: | diff --git a/tests/test_playback_profiles.cpp b/tests/test_playback_profiles.cpp index bb0ab09..59383a4 100644 --- a/tests/test_playback_profiles.cpp +++ b/tests/test_playback_profiles.cpp @@ -15,7 +15,8 @@ using namespace OpenMix; namespace { LoopbackProtocol* makeConnectedLoopback(QObject* parent) { auto* mixer = new LoopbackProtocol(MixerCapabilities::forConsole(ConsoleType::X32), parent); - mixer->connect("loopback", 0); // sets state Connected synchronously + [[maybe_unused]] const bool ok = mixer->connect("loopback", 0); // Connected synchronously + Q_ASSERT(ok); return mixer; } } // namespace From 04b2d05a68515f38d07f5afe982d72bcc4fbf7c9 Mon Sep 17 00:00:00 2001 From: "John Q. Herman" Date: Sat, 4 Jul 2026 00:19:32 -0400 Subject: [PATCH 2/3] ci: prune Qt SQL drivers after build, not before configure CMake's imported plugin targets hard-error when the dylibs are missing at configure time; macdeployqt only reads the plugin dir at packaging. --- .github/workflows/build.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c0268ac..78b04fe 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -150,14 +150,6 @@ jobs: target: "desktop" arch: "clang_64" - # the app only uses SQLite; the Mimer driver's missing client library - # makes macdeployqt spew ERRORs, and ODBC/psql draw private-API warnings - - name: Prune unused Qt SQL drivers - run: | - rm -f "$QT_ROOT_DIR/plugins/sqldrivers/"libqsqlmimer*.dylib \ - "$QT_ROOT_DIR/plugins/sqldrivers/"libqsqlodbc*.dylib \ - "$QT_ROOT_DIR/plugins/sqldrivers/"libqsqlpsql*.dylib - # brew liblo is arm64-only too; build it universal from source - name: Build liblo (universal) run: | @@ -196,6 +188,16 @@ jobs: lipo -info build/OpenMix.app/Contents/MacOS/OpenMix | grep -q x86_64 lipo -info build/OpenMix.app/Contents/MacOS/OpenMix | grep -q arm64 + # the app only uses SQLite; the Mimer driver's missing client library + # makes macdeployqt spew ERRORs, and ODBC/psql draw private-API warnings. + # Prune after configure/build: CMake's imported plugin targets error out + # if the dylibs disappear before configure + - name: Prune unused Qt SQL drivers + run: | + rm -f "$QT_ROOT_DIR/plugins/sqldrivers/"libqsqlmimer*.dylib \ + "$QT_ROOT_DIR/plugins/sqldrivers/"libqsqlodbc*.dylib \ + "$QT_ROOT_DIR/plugins/sqldrivers/"libqsqlpsql*.dylib + - name: Package (DMG) run: cd build && cpack -G DragNDrop From 5b0c3c26b6f2aa4de213e5e083f8f20a6a1bbd0d Mon Sep 17 00:00:00 2001 From: "John Q. Herman" Date: Sat, 4 Jul 2026 00:53:09 -0400 Subject: [PATCH 3/3] ci: fetch Sparkle signing tool from upstream release The homebrew sparkle cask is deprecated (fails Gatekeeper) and gets disabled on 2026-09-01, which would silently kill macOS update signing. Pull the pinned 2.6.4 tarball directly, same version CMake bundles, and point at bin/sign_update explicitly instead of find|head. --- .github/workflows/build.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 78b04fe..6f9e995 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -237,8 +237,14 @@ jobs: - name: Remove untrusted brew taps run: brew untap aws/tap 2>/dev/null || true + # fetched from the pinned upstream release (same version CMake bundles); + # the homebrew sparkle cask is deprecated and disabled after 2026-09-01 - name: Install Sparkle tools - run: brew install --cask sparkle || brew install sparkle + run: | + curl -fsSL -o /tmp/sparkle.tar.xz \ + https://github.com/sparkle-project/Sparkle/releases/download/2.6.4/Sparkle-2.6.4.tar.xz + mkdir -p /tmp/sparkle + tar -xf /tmp/sparkle.tar.xz -C /tmp/sparkle - name: Download artifacts uses: actions/download-artifact@v8 @@ -253,7 +259,8 @@ jobs: mkdir -p site/download/${TAG} cp OpenMix-macos/* OpenMix-windows/* OpenMix-linux/* site/download/${TAG}/ 2>/dev/null || true - SIGN=$(find /opt/homebrew /usr/local -name sign_update -type f 2>/dev/null | head -1) + SIGN=/tmp/sparkle/bin/sign_update + [ -x "$SIGN" ] || SIGN="" DMG=$(ls OpenMix-macos/*.dmg | head -1) if [ -n "$SPARKLE_KEY" ] && [ -n "$SIGN" ] && [ -n "$DMG" ]; then echo "$SPARKLE_KEY" > /tmp/ed_key