Giter VIP home page Giter VIP logo

docker_toolchains's Introduction

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.9 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
ts22.4.3 3.10 11.3.0 (N/A) 15.0.7 3.22.1
  • linux/amd64
  • qemu
  • can-utils
  • doxygen 1.9.6
  • nvm
  • node 16.20.0
  • nox
  • govr
ts22.4.2 3.10 11.3.0 (N/A) 15.0.7 3.22.1
  • linux/amd64
  • qemu
  • can-utils
  • sonar-scanner
  • doxygen 1.9.6
  • nvm
  • node 16.20.0
ts22.4.1 3.10 11.3.0 (N/A) 15.0.7 3.22.1
  • linux/amd64
  • qemu
  • can-utils
  • sonar-scanner
  • doxygen 1.9.6

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

docker_toolchains's People

Contributors

pavel-kirienko avatar suzonch avatar thirtytwobits avatar tsc21 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

docker_toolchains's Issues

Add nox to toxic

per our compromise set up nox on toxic (noxic?) as first step to migrate away from tox.

toxic python3.7 pip is borked

How this has changed in an immutable container is beyond me but here we are:

Traceback (most recent call last):
  File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.7/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/workspace/.tox/py37-test/lib/python3.7/site-packages/pip/__main__.py", line 29, in <module>
    from pip._internal.cli.main import main as _main
  File "/workspace/.tox/py37-test/lib/python3.7/site-packages/pip/_internal/cli/main.py", line 9, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/workspace/.tox/py37-test/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", line 10, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/workspace/.tox/py37-test/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", line 9, in <module>
    from pip._internal.build_env import get_runnable_pip
  File "/workspace/.tox/py37-test/lib/python3.7/site-packages/pip/_internal/build_env.py", line 19, in <module>
    from pip._internal.cli.spinners import open_spinner
  File "/workspace/.tox/py37-test/lib/python3.7/site-packages/pip/_internal/cli/spinners.py", line 9, in <module>
    from pip._internal.utils.logging import get_indentation
  File "/workspace/.tox/py37-test/lib/python3.7/site-packages/pip/_internal/utils/logging.py", line 29, in <module>
    from pip._internal.utils.misc import ensure_dir
  File "/workspace/.tox/py37-test/lib/python3.7/site-packages/pip/_internal/utils/misc.py", line 43, in <module>
    from pip._internal.locations import get_major_minor_version
  File "/workspace/.tox/py37-test/lib/python3.7/site-packages/pip/_internal/locations/__init__.py", line 68, in <module>
    from . import _distutils
  File "/workspace/.tox/py37-test/lib/python3.7/site-packages/pip/_internal/locations/_distutils.py", line 20, in <module>
    from distutils.cmd import Command as DistutilsCommand
ModuleNotFoundError: No module named 'distutils.cmd'

update documentation to remove 'v'

Turns out you don't need to suffix our prefixes with v (e.g. ts -> tsv) but if you do the v is elided. It'll be far less confusing to just change the docs to remove all mention of this elision except that future prefixes can't end in 'v'

Add arm-none-eabi-llvm to toolshed

Add LLVM arm-none-eabi toolchains to the toolshed. Since Cyphal targets microcontrollers (as well as application processors) we should maintain an ability to build and test on-metal for cortex-m as a general proxy for MCUs in-general.

New version of texer container

Per @pavel-kirienko in PR #85 of UAVCAN/specification:

I think we should also release a new version of the texer container...

Powershell is not yet supported on the latest version of Ubuntu (20.04). We could upgrade to Ubuntu 18.04LTS or the interim 19.04 release. Or, we can drop Powershell from the container and get the latest version of texlive-full.

ts22.4.7 on aarch64 still uses gcov-11

and so gcov crashes:

....
Exception was >>GCOV returncode was -11 (exited by signal).<< End of stderr
Current processed gcov file was None.
Use option --verbose to get extended information.
	(gcovr could not infer a working directory that resolved it.)
To ignore this error use option --gcov-ignore-errors=no_working_dir_found.
ninja: build stopped: subcommand failed.

root@e520cae3bdd2:/repo# uname -a
Linux e520cae3bdd2 6.6.22-linuxkit #1 SMP Fri Mar 29 12:21:27 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux

Redirecting symlinks like below makes verify.py -bf Coverage working good.

ln -s gcov-12 gcov
ln -s gcov-dump-12 gcov-dump
ln -s gcov-tool-12 gcov-tool

Remove provision.sh

The provision.sh scripts are a vestige from when Vagrant mattered more (to me). We should use individual RUN statements to speed up docker builds when we add something.

Create CI for docker

Either switch to github docker repository and build using github actions or link our dockerhub account and build using dockerhub.

update toolshed nodejs

Trying to use sonarscanner and getting:

ERROR: 

The version of node.js (12) you have used to run this analysis is deprecated and we stopped accepting it.
Please update to at least node.js 14. You can find more information here: https://docs.sonarcloud.io/appendices/scanner-environment/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.