Skip to content

vendored dependencies, wrapped as pip packages, for all comma projects

Notifications You must be signed in to change notification settings

commaai/dependencies

Repository files navigation

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 the releases branch for pre-built wheels
  "capnproto @ git+https://github.com/commaai/dependencies.git@releases#subdirectory=capnproto",
  "ffmpeg @ git+https://github.com/commaai/dependencies.git@releases#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
  • the releases branch contains shim packages that allow pointing to a git branch and always getting the appropriate wheel for your platform

About

vendored dependencies, wrapped as pip packages, for all comma projects

Resources

Stars

Watchers

Forks

Contributors