From 888fc1cbec1fc31096237c8191b97c3a73b6a9fe Mon Sep 17 00:00:00 2001 From: godofecht Date: Sun, 19 Jul 2026 22:17:41 +0100 Subject: [PATCH 1/4] Add GitHub Actions CI and a status badge Builds and runs the VST3 ABI test harness on macos-latest against Zig 0.14.1. Verified green from a clean checkout of main. macOS only for now: the webui example imports CoreAudio, so a Linux job would need that path excluded first. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/ci.yml | 24 ++++++++++++++++++++++++ README.md | 3 +++ 2 files changed, 27 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..95a9ea9 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,24 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + workflow_dispatch: + +jobs: + build-and-test: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + + - uses: mlugg/setup-zig@v1 + with: + version: 0.14.1 + + - name: Build + run: zig build + + # Drives the built plugin through the raw VST3 C ABI. + - name: Test + run: zig build test diff --git a/README.md b/README.md index 355738a..f60b40c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # 🎵 Danzig VST3 Framework +[![CI](https://github.com/godofecht/danzig/actions/workflows/ci.yml/badge.svg)](https://github.com/godofecht/danzig/actions/workflows/ci.yml) +[![Zig](https://img.shields.io/badge/zig-0.14.1-f7a41d)](https://ziglang.org/) + A modern, lightweight VST3 plugin development framework built in Zig with zero external dependencies. ## Project Status From 23f38f01e25c1203cbef807ff617d13b1dfc9252 Mon Sep 17 00:00:00 2001 From: godofecht Date: Mon, 20 Jul 2026 03:15:45 +0100 Subject: [PATCH 2/4] CI: bump setup-zig to v2 setup-zig@v1 builds the pre-rename artifact filename, which no longer exists. Zig swapped arch and OS in its release names, so v1 requests a path that 404s on every mirror and on ziglang.org itself: zig-linux-x86_64-0.14.1.tar.xz 404 <- requested by v1 zig-x86_64-linux-0.14.1.tar.xz 200 <- actual The run failed at step 3 with "Unexpected HTTP response: 404" after exhausting all five mirrors, then failed again in post-cleanup with "Unable to locate executable file: zig". v2 knows the current naming. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 95a9ea9..451cc27 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: mlugg/setup-zig@v1 + - uses: mlugg/setup-zig@v2 with: version: 0.14.1 From 0ae7e90617b0c7103a00a6665c40112a31d5ebc7 Mon Sep 17 00:00:00 2001 From: godofecht Date: Mon, 20 Jul 2026 03:20:44 +0100 Subject: [PATCH 3/4] CI: point Zig at the macOS SDK MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Zig 0.14.1 does not locate libSystem on the macos-latest runner on its own, so linking fails before any danzig code is reached — the build runner itself cannot link: error: undefined symbol: _malloc_size error: undefined symbol: _realpath$DARWIN_EXTSN note: referenced by .../build.o:_posix.abort Exporting SDKROOT from xcrun gives it the path. danzig has to stay on macOS: the GUI example links CoreAudio and CoreFoundation, and the VST3 bundle is a macOS artifact. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/ci.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 451cc27..6eac79a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,6 +16,13 @@ jobs: with: version: 0.14.1 + # Zig cannot find libSystem on the macOS runners by itself. Without this + # even the build runner fails to link, with every libc symbol undefined: + # error: undefined symbol: _malloc_size + # note: referenced by .../build.o:_posix.abort + - name: Point Zig at the macOS SDK + run: echo "SDKROOT=$(xcrun --show-sdk-path)" >> "$GITHUB_ENV" + - name: Build run: zig build From 54861da3df78bd2785eddd0af0226c4841079bcd Mon Sep 17 00:00:00 2001 From: godofecht Date: Mon, 20 Jul 2026 03:23:44 +0100 Subject: [PATCH 4/4] CI: pin to macos-15 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit macos-latest now ships Xcode 26.5, whose SDK Zig 0.14.1 cannot link against. Every libc symbol comes out undefined, and it fails before reaching any danzig code — the build runner itself will not link: error: undefined symbol: _malloc_size note: referenced by .../build.o:_posix.abort Setting SDKROOT from xcrun did not help, because the SDK is the problem rather than its discoverability. macos-15 ships an SDK from before Zig 0.14.1's release. danzig has to stay on macOS: the GUI example links CoreAudio and CoreFoundation, and the VST3 bundle is a macOS artifact. Replaces the SDKROOT step with a toolchain report, so the next SDK break is obvious from the log. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/ci.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6eac79a..296a8b3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,7 +8,7 @@ on: jobs: build-and-test: - runs-on: macos-latest + runs-on: macos-15 steps: - uses: actions/checkout@v4 @@ -16,12 +16,14 @@ jobs: with: version: 0.14.1 - # Zig cannot find libSystem on the macOS runners by itself. Without this - # even the build runner fails to link, with every libc symbol undefined: - # error: undefined symbol: _malloc_size - # note: referenced by .../build.o:_posix.abort - - name: Point Zig at the macOS SDK - run: echo "SDKROOT=$(xcrun --show-sdk-path)" >> "$GITHUB_ENV" + # Pinned to macos-15 rather than macos-latest. macos-latest now ships + # Xcode 26.5, whose SDK Zig 0.14.1 cannot link against: every libc + # symbol comes out undefined, and even the build runner fails to link. + # Setting SDKROOT does not help, since the SDK itself is the problem. + - name: Report toolchain + run: | + xcodebuild -version + echo "SDK: $(xcrun --show-sdk-path)" - name: Build run: zig build