3434 include :
3535 - os : ubuntu-latest
3636 - os : macos-latest
37- - os : windows-latest
37+ # Windows needs protobuf *libraries* too (not just protoc).
38+ # Enable after wiring vcpkg (see notes below).
39+ # - os: windows-latest
3840 name : ${{ matrix.os }}
3941 runs-on : ${{ matrix.os }}
4042
@@ -45,12 +47,31 @@ jobs:
4547 submodules : recursive
4648 fetch-depth : 0
4749
48- # ---------- Protobuf (protoc) ----------
49- - name : Install Protoc
50- uses : arduino/setup-protoc@v2
51- with :
52- version : " 25.2"
53- repo-token : ${{ secrets.GITHUB_TOKEN }}
50+ # ---------- OS-specific deps: install protoc + libprotobuf that MATCH ----------
51+ - name : Install deps (Ubuntu)
52+ if : runner.os == 'Linux'
53+ run : |
54+ set -eux
55+ sudo apt-get update
56+ sudo apt-get install -y cmake ninja-build build-essential \
57+ protobuf-compiler libprotobuf-dev
58+ protoc --version
59+ pkg-config --modversion protobuf
60+ # Fail if versions don't match (best-effort)
61+ test "$(protoc --version | awk '{print $2}')" = "$(pkg-config --modversion protobuf)" || {
62+ echo "protoc and libprotobuf versions differ"; exit 1; }
63+
64+ - name : Install deps (macOS)
65+ if : runner.os == 'macOS'
66+ run : |
67+ set -eux
68+ brew update
69+ # EITHER: latest protobuf
70+ brew install cmake protobuf ninja
71+ # OR pin a specific version (e.g., protobuf@6) if you need it:
72+ # brew install protobuf@6 && brew link --overwrite --force protobuf@6
73+ protoc --version
74+ pkg-config --modversion protobuf
5475
5576 # ---------- Rust toolchain ----------
5677 - name : Install Rust (stable)
@@ -74,44 +95,19 @@ jobs:
7495 restore-keys : |
7596 ${{ runner.os }}-cargo-target-
7697
77- # ---------- OS-specific deps ----------
78- - name : Install deps (Ubuntu)
79- if : runner.os == 'Linux'
80- run : |
81- sudo apt-get update
82- sudo apt-get install -y cmake ninja-build build-essential
83- # Optional audio/video libs if your FFI/examples need them:
84- # sudo apt-get install -y libasound2-dev libx11-dev libgl1-mesa-dev libxext-dev
85- protoc --version
86-
87- - name : Install deps (macOS)
88- if : runner.os == 'macOS'
89- run : |
90- brew update
91- brew install cmake protobuf ninja
92- protoc --version
93-
94- - name : Install deps (Windows)
95- if : runner.os == 'Windows'
96- shell : bash
97- run : |
98- choco install -y cmake ninja protoc
99- protoc --version || true
100-
101- # ---------- Build (Debug) ----------
98+ # ---------- Build (Debug / Release) ----------
10299 - name : Build Debug
103100 shell : bash
104101 run : |
105102 chmod +x build.sh
106103 ./build.sh debug
107104
108- # ---------- Build (Release) ----------
109105 - name : Build Release
110106 shell : bash
111107 run : |
112108 ./build.sh release
113109
114- # ---------- Smoke test example (link/usage only ) ----------
110+ # ---------- Smoke test example (no server needed ) ----------
115111 - name : Smoke test example (Debug)
116112 if : runner.os != 'Windows'
117113 shell : bash
@@ -120,15 +116,7 @@ jobs:
120116 build/examples/SimpleRoom --help || true
121117 fi
122118
123- - name : Smoke test example (Release)
124- if : runner.os == 'Windows'
125- shell : bash
126- run : |
127- if [ -f "build/examples/Release/SimpleRoom.exe" ]; then
128- ./build/examples/Release/SimpleRoom.exe --help || true
129- fi
130-
131- # Optional: keep workspace tidy in CI
119+ # ---------- Cleanup ----------
132120 - name : Clean after build (best-effort)
133121 if : always()
134122 shell : bash
0 commit comments