Adeeb Shihadeh d1af35e660 add shared library dependency check to distro tests
After installing wheels in clean containers, ldd all binaries and
.so files. Fails if any dependency is "not found", catching leaked
build-host deps that would break on end-user systems.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 15:40:40 -07:00
2026-03-21 10:39:33 -07:00
2026-03-14 14:06:40 -07:00
2026-03-13 13:40:12 -07:00
2026-03-13 13:49:24 -07:00
2026-03-13 13:49:24 -07:00
2026-03-14 14:06:40 -07:00
2026-03-21 10:53:26 -07:00

dependencies

a central repo for vendoring all third party dependencies for comma projects.

since all our projects are Python, we wrap each vendored dependency as a pip package. git clone and uv sync is all you need.

motivations for this approach

  • apt-get is slow
  • apt-get updates its packages on a schedule we don't control
  • apt-get package versions don't match brew versions
  • apt-get doesn't come with Arch Linux
  • apt-get packages come with more than we need, bloating our project footprint

uv, as opposed to apt-get, brew, and friends, is fast and already used in our projects.

we target the following platforms:

  • Linux x86_64
  • Linux aarch64
  • Darwin aarch64 (Apple Silicon)

contributions welcome for other platforms!

usage

dependencies = [
  # use per-package release branches for pre-built wheels
  "capnproto @ git+https://github.com/commaai/dependencies.git@release-capnproto#subdirectory=capnproto",
  "ffmpeg @ git+https://github.com/commaai/dependencies.git@release-ffmpeg#subdirectory=ffmpeg",

  # use the master branch to build the package on pip install
  "capnproto @ git+https://github.com/commaai/dependencies.git@master#subdirectory=capnproto",
  "ffmpeg @ git+https://github.com/commaai/dependencies.git@master#subdirectory=ffmpeg",
]

workflow

to add a new package:

  • start a new top-level directory as a new package
  • ./test.sh tests the building of all packages
  • on pushes to master, wheels are built for our target platforms and pushed to a GitHub release
  • each release-<package> branch contains a single shim package, so old lockfiles keep resolving even as new packages are added
Description
No description provided
Readme 7 MiB
2026-03-14 16:06:40 -05:00
Languages
Python 60%
Shell 40%