From e3034958ee0792c0fd7ec666b47254dffb8f5d1c Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Sun, 28 Jun 2026 21:44:44 +0000 Subject: [PATCH] fix(ci): unbreak the Apple + Windows-client builds after the surround-audio merge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 5.1/7.1 surround commit (75627c8) added in-core Opus, which broke two CI jobs that the merge didn't touch: * Windows MSIX client: clients/windows/src/main.rs's headless `SessionParams` initializer was missing the new `audio_channels` field (the GUI path sets it from settings). Default the CLI/test path to stereo (2), matching trust.rs. * Apple xcframework (apple.yml + release.yml): in-core Opus decode pulls `audiopus_sys`, which builds a vendored *static* libopus via CMake when pkg-config finds no system Opus — keeping the xcframework self-contained (no runtime libopus.dylib on end-user Macs/devices). The self-hosted macOS runner lacked `cmake`; install it self-healing before every xcframework build. Co-Authored-By: Claude Opus 4.8 --- .gitea/workflows/apple.yml | 11 +++++++++++ .gitea/workflows/release.yml | 5 +++++ clients/windows/src/main.rs | 2 ++ 3 files changed, 18 insertions(+) diff --git a/.gitea/workflows/apple.yml b/.gitea/workflows/apple.yml index aea7818..abb4f0e 100644 --- a/.gitea/workflows/apple.yml +++ b/.gitea/workflows/apple.yml @@ -32,6 +32,13 @@ jobs: dirname "$RUSTUP" >> "$GITHUB_PATH" "$RUSTUP" target add aarch64-apple-darwin x86_64-apple-darwin + # `punktfunk-core` now decodes Opus in-core for the Apple client (surround), pulling + # `audiopus_sys`, which builds a vendored static libopus via CMake when pkg-config can't find a + # system Opus — so the xcframework is self-contained (no runtime libopus.dylib on end-user Macs). + # CMake must be on PATH; install it self-healing on a fresh runner. + - name: CMake (for the vendored libopus audiopus_sys builds) + run: command -v cmake >/dev/null || brew install cmake + - name: Build PunktfunkCore.xcframework run: bash scripts/build-xcframework.sh @@ -71,6 +78,10 @@ jobs: "$RUSTUP" target add aarch64-apple-darwin x86_64-apple-darwin \ aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ios + # See the swift job: audiopus_sys (via the in-core Opus decode) builds vendored libopus with CMake. + - name: CMake (for the vendored libopus audiopus_sys builds) + run: command -v cmake >/dev/null || brew install cmake + - name: Build PunktfunkCore.xcframework (mac + iOS slices) run: BUILD_IOS=1 bash scripts/build-xcframework.sh diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 78c3972..a688c6d 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -118,6 +118,11 @@ jobs: "$RUSTUP" toolchain install nightly --profile minimal "$RUSTUP" component add rust-src --toolchain nightly + # The in-core Opus decode (surround) pulls audiopus_sys, which builds a vendored static libopus + # via CMake — keep the xcframework self-contained (no runtime libopus.dylib on end-user devices). + - name: CMake (for the vendored libopus audiopus_sys builds) + run: command -v cmake >/dev/null || brew install cmake + - name: Build PunktfunkCore.xcframework (mac + iOS + tvOS) # tvOS is a tier-3 target (nightly -Zbuild-std): slow on the first build, then cached on # the self-hosted runner. Built on canary too so the tvOS archive/upload below runs on the diff --git a/clients/windows/src/main.rs b/clients/windows/src/main.rs index a1a2b0d..4b91c57 100644 --- a/clients/windows/src/main.rs +++ b/clients/windows/src/main.rs @@ -177,6 +177,8 @@ fn run_headless_cli(args: &[String], identity: (String, String)) { compositor: CompositorPref::Auto, gamepad: GamepadPref::Auto, bitrate_kbps, + // Headless CLI path (test/scripting) — stereo baseline; the GUI sources this from settings. + audio_channels: 2, mic_enabled: flag("--mic"), hdr_enabled: !flag("--no-hdr"), decoder,