From 3e567064fac2daef56c68dcf9698dcac6dbdbd2f Mon Sep 17 00:00:00 2001 From: "Tj (bougyman) Vanderpoel" Date: Fri, 14 Aug 2026 12:18:41 -0400 Subject: [PATCH 1/2] fix(ci): build each Burrito target on its matching OS runner rustler_precompiled (used by mdex_native/Marcli) fetches a precompiled NIF for the build host's platform at compile time. The previous single ubuntu-latest runner caused the Linux .so to be bundled into macOS and Windows Burrito releases, making MDEx unavailable at runtime and crashing `lcls --full` with an UndefinedFunctionError. Switch the burrito-build matrix to per-OS runners so each target picks up the correct precompiled NIF automatically: - macos_aarch64 -> macos-latest (Darwin arm64 .dylib) - linux_x86_64 -> ubuntu-latest (Linux x86_64 .so, unchanged) - windows_x86_64 -> windows-latest (Windows x86_64 .dll) Remove the p7zip install step: it was only needed when cross-compiling the Windows target from Linux; Windows runners have 7z pre-installed. Fixes CRY-40. Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/main.yaml | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 872c5a0..ae7cdcb 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -53,7 +53,7 @@ jobs: # for building, not every push to main. if: github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.merged == true && github.event.pull_request.head.ref == 'release-please--branches--main') name: Build Burrito target (${{ matrix.target }}) - runs-on: ubuntu-latest + runs-on: ${{ matrix.runner }} strategy: # Kept in sync with mix.exs's releases.lc.burrito.targets - Burrito # has no introspection command to read this list back out, so it's @@ -61,8 +61,20 @@ jobs: # failed required leg cancels the others and fails this job outright, # which correctly skips burrito-package below rather than packaging # a release with a target missing. + # + # Each target runs on its matching OS runner so rustler_precompiled + # (used by mdex_native) downloads the correct precompiled NIF for the + # target platform. Cross-compiling from Ubuntu caused the Linux NIF to + # be bundled into macOS/Windows releases, making MDEx unavailable at + # runtime (see CRY-40). matrix: - target: [macos_aarch64, linux_x86_64, windows_x86_64] + include: + - target: macos_aarch64 + runner: macos-latest + - target: linux_x86_64 + runner: ubuntu-latest + - target: windows_x86_64 + runner: windows-latest defaults: run: working-directory: app @@ -87,11 +99,6 @@ jobs: uses: mlugg/setup-zig@v2.2.1 with: version: "0.16.0" - - - # Only the Windows target's own build actually needs 7z. - if: matrix.target == 'windows_x86_64' - name: Install p7zip (Burrito needs 7z for Windows targets) - run: sudo apt-get update && sudo apt-get install -y p7zip-full - run: mix deps.get - From 722a65d5de589ed0136e406f2d457228e62832d4 Mon Sep 17 00:00:00 2001 From: "Tj (bougyman) Vanderpoel" Date: Fri, 14 Aug 2026 13:35:29 -0400 Subject: [PATCH 2/2] fix(ci): set shell: bash in burrito-build defaults Windows runners default to pwsh; bash is required for the env-var assignment and POSIX test syntax used in the build and verify steps. Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/main.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index ae7cdcb..8c7ecfa 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -78,6 +78,7 @@ jobs: defaults: run: working-directory: app + shell: bash steps: - uses: actions/checkout@v7