Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/opencyphal/docker_toolchains

A repository for building and releasing docker containers that contain the toolchains used by the OpenCyphal project.
https://github.com/opencyphal/docker_toolchains

containers cyphal docker opencyphal toolchains

Last synced: about 1 month ago
JSON representation

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

Awesome Lists containing this project

README

        

![OpenCyphal](opencyphal_logo.svg) 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](https://github.com/orgs/OpenCyphal/packages) 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](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed)
is based on Ubuntu and provides the necessary compilers and utilities to build and run OpenCyphal C or C++ projects
like [libcanard](https://github.com/OpenCyphal/libcanard) and
[Nunavut](https://github.com/OpenCyphal/nunavut).

#### Supported Versions

| tag | Python | GCC (native) | GCC (arm-none-eabi) | Clang (native) | Cmake | Host Platforms | Other Utilities |
|----------|--------|--------------|---------------------|----------------|-------|----------------|-----------------|
| [ts22.4.10](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 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](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 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](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 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](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 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](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 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:

```none
jobs:
my-job:
runs-on: ubuntu-latest
container: ghcr.io/opencyphal/toolshed:ts22.4.7
```

### opencyphal/texer:te

The [Open Cyphal texer
container](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/texer)
is based on Ubuntu and provides the necessary compilers and utilities to author and publish OpenCyphal [LaTeX](https://www.latex-project.org/) documents like [the specification](https://github.com/OpenCyphal/specification).

#### Supported Versions

| tag | Python | Tex Live | git | Platforms | Other Utilities |
|----------|--------|----------|-----|-----------|-----------------|
| [te22.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/texer) | 3.11 | 2022 | 2.34.1 |

  • linux/amd64
|

  • python pygments

  • lyx

  • inkscape

|
| [te20.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/texer) | 3.11 | 2019 | 2.25.1 |
  • linux/amd64
|

  • python pygments

  • lyx

  • inkscape

|

You can use this in your workflow yaml like this:

```none
jobs:
my-job:
runs-on: ubuntu-latest
container: ghcr.io/opencyphal/texer:te20.4.1
```

### opencyphal/toxic:tx

The [Open Cyphal toxic
container](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toxic)
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](https://github.com/OpenCyphal/nunavut), [pydsdl](https://github.com/OpenCyphal/pydsdl), and [pycyphal](https://github.com/OpenCyphal/pycyphal).

#### Supported Versions

| tag | Base Python | Python Versions | Tox | Nox | pip | Platforms | Other Utilities |
|----------|-------------|-----------------|-----|-----|-----|-----------|-----------------|
| [tx22.4.2](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toxic) | 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](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toxic) | 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](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toxic) | 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:

```none
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.