Skip to content

A repository for building and releasing docker containers that contain the toolchains used by the OpenCyphal project.

License

Notifications You must be signed in to change notification settings

OpenCyphal/docker_toolchains

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenCyphal OpenCyphal Containerized Toolchains

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.

opencyphal/toolshed:ts

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.

Supported Versions

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
  • linux/amd64
  • linux/arm64
  • qemu
  • can-utils
  • doxygen 1.10.0
  • nvm
  • node 20.x
  • nox
  • govr
  • gcc-multilib (amd64 only)
ts22.4.8 3.10 12.3.0 (N/A) 18.1.3 3.22.1
  • linux/amd64
  • linux/arm64
  • qemu
  • can-utils
  • doxygen 1.10.0
  • nvm
  • node 20.x
  • nox
  • govr
  • gcc-multilib (amd64 only)
ts22.4.7 3.10 12.3.0 (N/A) 18.1.3 3.22.1
  • linux/amd64
  • linux/arm64
  • qemu
  • can-utils
  • doxygen 1.10.0
  • nvm
  • node 20.x
  • nox
  • govr
ts22.4.6 3.10 11.4.0 (N/A) 18.0.0 3.22.1
  • linux/amd64
  • linux/arm64
  • qemu
  • can-utils
  • doxygen 1.10.0
  • nvm
  • node 20.x
  • nox
  • govr
ts22.4.5 3.10 11.4.0 (N/A) 18.0.0 3.22.1
  • linux/amd64
  • linux/arm64
  • qemu
  • can-utils
  • doxygen 1.9.6
  • nvm
  • node 16.20.0
  • nox
  • govr

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

opencyphal/texer:te

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.

Supported Versions

tag Python Tex Live git Platforms Other Utilities
te22.4.1 3.11 2022 2.34.1
  • linux/amd64
  • python pygments
  • lyx
  • inkscape
te20.4.1 3.11 2019 2.25.1
  • linux/amd64
  • python pygments
  • lyx
  • inkscape

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

opencyphal/toxic:tx

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.

Supported Versions

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
  • linux/amd64
  • linux/arm64
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
  • linux/amd64
  • linux/arm64
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
  • linux/amd64
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
  • linux/amd64
  • sonar-scanner

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.