diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a20ad51..13cd74c 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -42,3 +42,58 @@ jobs: - name: Build run: zig build ${{ matrix.build-options }} --summary all + + bsd: + name: ${{ matrix.os }} + runs-on: ubuntu-latest + timeout-minutes: 30 + strategy: + fail-fast: false + matrix: + zig-version: [0.16.0] + os: [freebsd, openbsd] + include: + - os: freebsd + packages: pkg install -y curl + - os: openbsd + packages: pkg_add -I curl xz # OpenBSD tar cannot decompress .tar.xz + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Build (FreeBSD) + if: matrix.os == 'freebsd' + uses: vmactions/freebsd-vm@v1.5.9 + with: &bsd_build + cache-after-prepare: true + copyback: false + prepare: | + ${{ matrix.packages }} + mkdir -p /usr/local/zig + curl -fsSL https://ziglang.org/download/${{ matrix.zig-version }}/zig-x86_64-${{ matrix.os }}-${{ matrix.zig-version }}.tar.xz -o /usr/local/zig/zig.tar.xz + run: | + set -e + xzcat /usr/local/zig/zig.tar.xz | tar -xf - -C /usr/local/zig/ + export PATH="/usr/local/zig/zig-x86_64-${{ matrix.os }}-${{ matrix.zig-version }}:$PATH" + + cat > ./uv_test.c <<'EOF' + #include + int main(void) { + uv_loop_t* loop = uv_default_loop(); + uv_interface_address_t* addrs; + int count; + if (uv_interface_addresses(&addrs, &count) == 0) + uv_free_interface_addresses(addrs, count); + return uv_run(loop, UV_RUN_DEFAULT); + } + EOF + + zig build --summary all + + zig cc -o ./uv_test ./uv_test.c -I zig-out/include -L zig-out/lib -luv + ./uv_test + + - name: Build (OpenBSD) + if: matrix.os == 'openbsd' + uses: vmactions/openbsd-vm@v1.4.8 + with: *bsd_build diff --git a/build.zig b/build.zig index dc8582c..bf11dee 100644 --- a/build.zig +++ b/build.zig @@ -446,17 +446,23 @@ const freebsd_sources: []const []const u8 = &.{ "unix/freebsd.c", "unix/posix-hrtime.c", "unix/bsd-proctitle.c", + "unix/bsd-ifaddrs.c", + "unix/kqueue.c", "unix/random-getrandom.c", }; const netbsd_sources: []const []const u8 = &.{ "unix/posix-hrtime.c", "unix/bsd-proctitle.c", + "unix/bsd-ifaddrs.c", + "unix/kqueue.c", "unix/netbsd.c", }; const openbsd_sources: []const []const u8 = &.{ "unix/posix-hrtime.c", "unix/bsd-proctitle.c", "unix/random-getentropy.c", + "unix/bsd-ifaddrs.c", + "unix/kqueue.c", "unix/openbsd.c", };