Skip to content

Commit 187e8b0

Browse files
ci: install PortAudio, and document it as a prerequisite
pyaudio publishes only Windows wheels, so on Linux and macOS it builds from source against portaudio.h. It reaches us transitively through unitree-webrtc-connect, which means every job that runs `uv sync` needs the header -- the lint job had no apt step at all, and the test job installed only libgl1/libgomp1. This is not just a CI problem: a plain `pip install multiset-unitree-go2-dimos` on a fresh Ubuntu or Jetson fails the same way, so both READMEs and CONTRIBUTING now name the prerequisite instead of leaving it to a C compiler error partway through the install.
1 parent b7202bc commit 187e8b0

5 files changed

Lines changed: 3903 additions & 2 deletions

File tree

‎.github/workflows/ci.yml‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ jobs:
1818
- uses: astral-sh/setup-uv@v5
1919
with:
2020
enable-cache: true
21+
- name: System libraries
22+
# pyaudio has no Linux wheel and builds against portaudio.h. It arrives
23+
# transitively via unitree-webrtc-connect, so every job that syncs needs it.
24+
run: sudo apt-get update -qq && sudo apt-get install -y -qq portaudio19-dev
2125
# Pinned to [tool.mypy]'s target: unpinned, numpy's PEP 695 stubs are
2226
# unparseable under python_version 3.10 and mypy dies before our code.
2327
- run: uv sync --all-extras --python 3.10
@@ -59,10 +63,12 @@ jobs:
5963
with:
6064
enable-cache: true
6165
- name: System libraries
62-
# opencv and open3d need a GL runtime that the runner image lacks.
66+
# opencv and open3d need a GL runtime that the runner image lacks, and
67+
# pyaudio (via unitree-webrtc-connect) has no Linux wheel -- it compiles
68+
# against portaudio.h.
6369
run: |
6470
sudo apt-get update -qq
65-
sudo apt-get install -y -qq libgl1 libgomp1
71+
sudo apt-get install -y -qq libgl1 libgomp1 portaudio19-dev
6672
- name: Install the workspace
6773
run: uv sync --all-extras --python ${{ matrix.python-version }}
6874
- name: Both packages import side by side

‎CONTRIBUTING.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@
33
## Setup
44

55
```bash
6+
sudo apt-get install -y portaudio19-dev # or: brew install portaudio
67
git clone https://github.com/MultiSet-AI/multiset-python
78
cd multiset-python
89
uv sync --all-extras
910
uv run pytest
1011
```
1112

13+
PortAudio is not optional: `unitree-webrtc-connect` pulls `pyaudio`, which has
14+
no Linux or macOS wheel and builds from source. CI installs it too.
15+
1216
`uv sync` installs every package in `packages/` editable into one venv. Each
1317
adapter's `[tool.uv.sources]` points `multiset-vps` at `packages/vps` in your
1418
working tree, so a change to the core is live everywhere immediately. uv strips

‎README.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ pip install \
3636
Both lines are required: pip does not follow a git URL to find the core, so the
3737
adapter's `multiset-vps>=0.1,<0.2` has to be named explicitly.
3838

39+
The Go2 adapter needs PortAudio present first (`apt install portaudio19-dev`,
40+
or `brew install portaudio`): it depends on `pyaudio`, which has no Linux or
41+
macOS wheel. `multiset-vps` alone needs nothing.
42+
3943
Only need poses from frames you already have? `multiset-vps` stands alone: three
4044
dependencies, no robot, no renderer.
4145

‎packages/unitree-go2-dimos/README.md‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,16 @@ reverse and never serves WebRTC. `find_robots` reports both and labels them, so
6565

6666
## Install
6767

68+
On Linux, install PortAudio first. `unitree-webrtc-connect` depends on
69+
`pyaudio`, which publishes no Linux or macOS wheel and compiles against
70+
`portaudio.h` — without it the install fails partway through with a C
71+
compiler error:
72+
73+
```bash
74+
sudo apt-get install -y portaudio19-dev # Debian/Ubuntu, incl. Jetson
75+
brew install portaudio # macOS
76+
```
77+
6878
Both packages, in one command:
6979

7080
```bash

0 commit comments

Comments
 (0)