|
| 1 | +# FreeBSD build, INFORMATIONAL ONLY. Builds the headless binary (the C core, |
| 2 | +# no embedded UI) inside a FreeBSD VM with the canonical scripts/build.sh, |
| 3 | +# then checks that the binary starts (--version). The UI build is not run here: |
| 4 | +# its npm dependency tree pulls in onnxruntime-node, which publishes no FreeBSD |
| 5 | +# build, so `npm ci` stops with EBADPLATFORM. The UI bundle itself is |
| 6 | +# platform-independent JavaScript and is built on every other leg. |
| 7 | +# |
| 8 | +# NON-GATING: workflow_dispatch only. This workflow is not part of the ci-ok |
| 9 | +# aggregate and is not called by release.yml or dry-run.yml, so a FreeBSD red |
| 10 | +# never blocks a pull request or a release. Nothing from it is uploaded or |
| 11 | +# published, and it runs with read-only permissions. |
| 12 | +name: FreeBSD build (informational) |
| 13 | + |
| 14 | +on: |
| 15 | + workflow_dispatch: |
| 16 | + |
| 17 | +permissions: |
| 18 | + contents: read |
| 19 | + |
| 20 | +jobs: |
| 21 | + build-freebsd: |
| 22 | + name: build (freebsd-${{ matrix.release }}, ${{ matrix.arch }}, clang) |
| 23 | + strategy: |
| 24 | + fail-fast: false |
| 25 | + matrix: |
| 26 | + release: ['15.1', '14.4'] |
| 27 | + arch: ['x86_64'] |
| 28 | + # arch: ['x86_64', 'aarch64'] |
| 29 | + # aarch64 is disabled for now: it has not been proven with this |
| 30 | + # workflow. Its earlier blocker was the frontend build (lightningcss |
| 31 | + # publishes no freebsd-arm64 binary), which this headless job no |
| 32 | + # longer runs. Re-enable after a green aarch64 proof run. |
| 33 | + include: |
| 34 | + - arch: x86_64 |
| 35 | + sync: rsync |
| 36 | + # - arch: aarch64 |
| 37 | + # sync: scp |
| 38 | + # Must be an x86_64 host (ubuntu-latest). QEMU guest emulation on the arm |
| 39 | + # runners (ubuntu-*-arm) degrades so badly that runs hit 3+ hour timeouts. |
| 40 | + runs-on: ubuntu-latest |
| 41 | + timeout-minutes: 90 |
| 42 | + steps: |
| 43 | + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 |
| 44 | + with: |
| 45 | + persist-credentials: false |
| 46 | + |
| 47 | + - name: Build and run inside a FreeBSD ${{ matrix.release }} (${{ matrix.arch }}) VM |
| 48 | + # https://github.com/vmactions/freebsd-vm |
| 49 | + uses: vmactions/freebsd-vm@c46abacb49f09938ca4e1702d15d836285d694cc # v1.5.9 |
| 50 | + with: |
| 51 | + release: ${{ matrix.release }} |
| 52 | + arch: ${{ matrix.arch }} |
| 53 | + # Sync options: rsync, sshfs, nfs, scp |
| 54 | + sync: ${{ matrix.sync }} |
| 55 | + # Nothing from the VM is used after the run, so skip the copy back. |
| 56 | + copyback: false |
| 57 | + mem: 6144 |
| 58 | + cpu: 4 |
| 59 | + prepare: | |
| 60 | + pkg update -f |
| 61 | + pkg install -y gmake sqlite3 pkgconf bash |
| 62 | + which python3 >/dev/null 2>&1 || ln -sf $(which python3.15 python3.14 python3.13 python3.12 python3.11 python3.10 2>/dev/null | head -n 1) /usr/local/bin/python3 |
| 63 | + run: | |
| 64 | + scripts/build.sh CC=clang CXX=clang++ |
| 65 | + build/c/codebase-memory-mcp --version |
0 commit comments