This repository contains the Dockerfiles, instructions, and some utilities for building containers to be used as common toolchains and development environments for OpenCyphal projects. These containers are published to the opencyphal organization on Github and are used by the build automation for OpenCyphal projects. You can use these same containers to get consistent build results in your local development environment.
To allow hosting of multiple container builds from a single repo each toolchain container
is assigned a prefix. For every release event in this repo the workflow triggered is based
on that prefix in the release tag. For example, by creating a release with the tag ts18.4.1-alpha
the release workflow for the toolshed
container will be triggered.
The Open Cyphal toolshed container is based on Ubuntu and provides the necessary compilers and utilities to build and run OpenCyphal C or C++ projects like libcanard and Nunavut.
tag | Python | GCC (native) | GCC (arm-none-eabi) | Clang (native) | Cmake | Host Platforms | Other Utilities |
---|---|---|---|---|---|---|---|
ts22.4.10 | 3.10 | 12.3.0 | 13.3.1 | 18.1.3 | 3.30.1 |
|
|
ts22.4.8 | 3.10 | 12.3.0 | (N/A) | 18.1.3 | 3.22.1 |
|
|
ts22.4.7 | 3.10 | 12.3.0 | (N/A) | 18.1.3 | 3.22.1 |
|
|
ts22.4.6 | 3.10 | 11.4.0 | (N/A) | 18.0.0 | 3.22.1 |
|
|
ts22.4.5 | 3.10 | 11.4.0 | (N/A) | 18.0.0 | 3.22.1 |
|
|
You can use this in your workflow yaml like this:
jobs:
my-job:
runs-on: ubuntu-latest
container: ghcr.io/opencyphal/toolshed:ts22.4.7
The Open Cyphal texer container is based on Ubuntu and provides the necessary compilers and utilities to author and publish OpenCyphal LaTeX documents like the specification.
tag | Python | Tex Live | git | Platforms | Other Utilities |
---|---|---|---|---|---|
te22.4.1 | 3.11 | 2022 | 2.34.1 |
|
|
te20.4.1 | 3.11 | 2019 | 2.25.1 |
|
|
You can use this in your workflow yaml like this:
jobs:
my-job:
runs-on: ubuntu-latest
container: ghcr.io/opencyphal/texer:te20.4.1
The Open Cyphal toxic container is based on Ubuntu and provides all modern Python3 distributions, pip, tox, and nox. It can be used to develop, test, build, and release Python projects like nunavut, pydsdl, and pycyphal.
tag | Base Python | Python Versions | Tox | Nox | pip | Platforms | Other Utilities |
---|---|---|---|---|---|---|---|
tx22.4.3 | 3.11 | 3.8, 3.9, 3.10, 3.11, 3.12 3.13 | 4.13.0 | 2023.4.22 | 20.0.2 |
|
|
tx22.4.2 | 3.10 | 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 | 4.13.0 | 2023.4.22 | 20.0.2 |
|
|
tx22.4.1 | 3.8 | 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 | 4.4.5 | 2023.4.22 | 20.0.2 |
|
|
tx20.4.1 | 3.8 | 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 | 4.4.5 | (not available) | 20.0.2 |
|
|
You can use this in your workflow yaml like this:
jobs:
my-job:
runs-on: ubuntu-latest
container: ghcr.io/opencyphal/toxic:tx20.4.2
Note that, if you create a new container in this project, the prefix cannot end with 'v'. So "tu22.4.1" is okay but "tv28.3.1" won't work because the release workflows elide "v" (as in version) by default and the container will become "t28.3.1" in packages but "tv.28.3.1" as a git tag.