From 5b1ce36e92b6f74f45f6f49e82a1f83c8f476c8e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 8 Feb 2026 15:03:47 +0000 Subject: [PATCH 1/9] Initial plan From 5627a600b6374cc6802dbbddf023afbe6e1f6571 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 8 Feb 2026 15:05:51 +0000 Subject: [PATCH 2/9] chore: install gcovr via pip in toolshed Co-authored-by: pavel-kirienko <3298404+pavel-kirienko@users.noreply.github.com> --- toolshed/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/toolshed/Dockerfile b/toolshed/Dockerfile index 87ad571..f4e6333 100644 --- a/toolshed/Dockerfile +++ b/toolshed/Dockerfile @@ -161,7 +161,7 @@ RUN echo "export PATH=$PIPX_HOME:$PIPX_BIN_DIR:$PATH" >> ~/.bashrc RUN pipx install cowsay RUN pipx install tox RUN pipx install nox -RUN pipx install gcovr +RUN pip install --break-system-packages gcovr RUN pipx install yakut RUN cowsay -t moo RUN git clone --depth 1 https://github.com/OpenCyphal/public_regulated_data_types.git ~/public_regulated_data_types From 4f79063c69cef17fd3ba28e0084280f4dc469288 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 8 Feb 2026 15:06:30 +0000 Subject: [PATCH 3/9] chore: document gcovr pip install requirement Co-authored-by: pavel-kirienko <3298404+pavel-kirienko@users.noreply.github.com> --- toolshed/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/toolshed/Dockerfile b/toolshed/Dockerfile index f4e6333..d23ef99 100644 --- a/toolshed/Dockerfile +++ b/toolshed/Dockerfile @@ -161,6 +161,7 @@ RUN echo "export PATH=$PIPX_HOME:$PIPX_BIN_DIR:$PATH" >> ~/.bashrc RUN pipx install cowsay RUN pipx install tox RUN pipx install nox +# gcovr is required via pip with --break-system-packages for toolshed usage. RUN pip install --break-system-packages gcovr RUN pipx install yakut RUN cowsay -t moo From 51c43de2b1fd2b908347d23c3e31aa93fae996ab Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 8 Feb 2026 15:07:14 +0000 Subject: [PATCH 4/9] chore: clarify gcovr install rationale Co-authored-by: pavel-kirienko <3298404+pavel-kirienko@users.noreply.github.com> --- toolshed/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/toolshed/Dockerfile b/toolshed/Dockerfile index d23ef99..d6abfee 100644 --- a/toolshed/Dockerfile +++ b/toolshed/Dockerfile @@ -161,7 +161,8 @@ RUN echo "export PATH=$PIPX_HOME:$PIPX_BIN_DIR:$PATH" >> ~/.bashrc RUN pipx install cowsay RUN pipx install tox RUN pipx install nox -# gcovr is required via pip with --break-system-packages for toolshed usage. +# gcovr must be installed into system Python (not pipx) so python3 -m gcovr works in tooling on Ubuntu 24.04; +# --break-system-packages is required to install into the system site-packages. RUN pip install --break-system-packages gcovr RUN pipx install yakut RUN cowsay -t moo From 658f9d2666cbe0e9023e3f8e097f2acd1abb50c1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 8 Feb 2026 15:07:45 +0000 Subject: [PATCH 5/9] chore: explain pip install need for gcovr Co-authored-by: pavel-kirienko <3298404+pavel-kirienko@users.noreply.github.com> --- toolshed/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/toolshed/Dockerfile b/toolshed/Dockerfile index d6abfee..a777910 100644 --- a/toolshed/Dockerfile +++ b/toolshed/Dockerfile @@ -161,8 +161,8 @@ RUN echo "export PATH=$PIPX_HOME:$PIPX_BIN_DIR:$PATH" >> ~/.bashrc RUN pipx install cowsay RUN pipx install tox RUN pipx install nox -# gcovr must be installed into system Python (not pipx) so python3 -m gcovr works in tooling on Ubuntu 24.04; -# --break-system-packages is required to install into the system site-packages. +# gcovr must be installed into system Python (not pipx) so python3 -m gcovr works in tooling that imports the module +# from system site-packages; Ubuntu 24.04 enforces PEP 668 so --break-system-packages is required for this install. RUN pip install --break-system-packages gcovr RUN pipx install yakut RUN cowsay -t moo From 3dadd848f6ca1e18f7697a1d3e49353484bead26 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 8 Feb 2026 16:10:30 +0000 Subject: [PATCH 6/9] docs: mention gcovr in toolshed readme Co-authored-by: pavel-kirienko <3298404+pavel-kirienko@users.noreply.github.com> --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 4213f59..228080f 100644 --- a/README.md +++ b/README.md @@ -25,12 +25,12 @@ like [libcanard](https://github.com/OpenCyphal/libcanard) and | tag | Python | GCC (native) | GCC (arm-none-eabi) | Clang (native) | Cmake | Host Platforms | Other Utilities | |----------|--------|--------------|---------------------|----------------|-------|----------------|-----------------| -| [ts24.4.3](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | | | 13.3.1 | | 3.31.5 | | | +| [ts24.4.3](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | | | 13.3.1 | | 3.31.5 | | | | [ts24.4.2](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | | | 13.3.1 | | 3.31.5 | | | -| [ts24.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | | | 13.3.1 | | 3.31.5 | |
  • can-utils
  • doxygen 1.13.2
  • tox
  • nox
  • govr
  • gcc-multilib (amd64 only)
  • | -| [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 | | | -| [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 | | | -| [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 | | | +| [ts24.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | | | 13.3.1 | | 3.31.5 | |
  • can-utils
  • doxygen 1.13.2
  • tox
  • nox
  • gcovr
  • gcc-multilib (amd64 only)
  • | +| [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 | | | +| [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 | | | +| [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 | | | You can use this in your workflow yaml like this: From ea2b1fcd3e255c95cbc37390a382399d7681a436 Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Sun, 8 Feb 2026 18:11:21 +0200 Subject: [PATCH 7/9] Apply suggestion from @pavel-kirienko --- toolshed/Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/toolshed/Dockerfile b/toolshed/Dockerfile index a777910..f4e6333 100644 --- a/toolshed/Dockerfile +++ b/toolshed/Dockerfile @@ -161,8 +161,6 @@ RUN echo "export PATH=$PIPX_HOME:$PIPX_BIN_DIR:$PATH" >> ~/.bashrc RUN pipx install cowsay RUN pipx install tox RUN pipx install nox -# gcovr must be installed into system Python (not pipx) so python3 -m gcovr works in tooling that imports the module -# from system site-packages; Ubuntu 24.04 enforces PEP 668 so --break-system-packages is required for this install. RUN pip install --break-system-packages gcovr RUN pipx install yakut RUN cowsay -t moo From 795628476f533433975e90e8fcc6ec71b2c3b9f4 Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Fri, 20 Feb 2026 19:26:31 -0800 Subject: [PATCH 8/9] Adding tools for llvm-dsdl # Conflicts: # README.md --- .github/workflows/toolshed.yml | 7 ++++++- README.md | 9 +++++++-- toolshed/Dockerfile | 5 +++++ toolshed/README.md | 23 ++++++++++++++++++----- toolshed/provision-repositories.sh | 21 ++++++++++++++++----- toolshed/provision.sh | 1 + 6 files changed, 53 insertions(+), 13 deletions(-) diff --git a/.github/workflows/toolshed.yml b/.github/workflows/toolshed.yml index e29297c..1aaf28b 100644 --- a/.github/workflows/toolshed.yml +++ b/.github/workflows/toolshed.yml @@ -10,6 +10,7 @@ on: env: REGISTRY_IMAGE: ghcr.io/opencyphal/toolshed IMAGE_VERSION_PREFIX: ts + IMAGE_DESCRIPTION: Provides a consistent build and test environment for development, continuous-integration, and test automation of OpenCyphal C and C++ based projects. jobs: release-ts-amd64: @@ -179,7 +180,11 @@ jobs: - name: Create manifest list and push working-directory: /tmp/digests run: | - docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ + docker buildx imagetools create \ + --annotation "index:org.opencontainers.image.source=https://github.com/OpenCyphal/docker_toolchains" \ + --annotation "index:org.opencontainers.image.description=${{ env.IMAGE_DESCRIPTION }}" \ + --annotation "index:org.opencontainers.image.licenses=MIT" \ + $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ $(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *) - name: Inspect image diff --git a/README.md b/README.md index 228080f..68e4dff 100644 --- a/README.md +++ b/README.md @@ -25,13 +25,18 @@ like [libcanard](https://github.com/OpenCyphal/libcanard) and | tag | Python | GCC (native) | GCC (arm-none-eabi) | Clang (native) | Cmake | Host Platforms | Other Utilities | |----------|--------|--------------|---------------------|----------------|-------|----------------|-----------------| -| [ts24.4.3](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | | | 13.3.1 | | 3.31.5 | | | +| [ts24.4.4](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | | | 13.3.1 | | 3.31.5 | | | +| [ts24.4.3](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | | | 13.3.1 | | 3.31.5 | | | | [ts24.4.2](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | | | 13.3.1 | | 3.31.5 | | | | [ts24.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | | | 13.3.1 | | 3.31.5 | |
  • can-utils
  • doxygen 1.13.2
  • tox
  • nox
  • gcovr
  • gcc-multilib (amd64 only)
  • | | [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 | | | | [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 | | | | [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 | | | +Starting with `ts24.4.4`, the image sets: +- `LLVM_DIR=/usr/lib/llvm-19/lib/cmake/llvm` +- `MLIR_DIR=/usr/lib/llvm-19/lib/cmake/mlir` +- `CMAKE_PREFIX_PATH=/usr/lib/llvm-19` You can use this in your workflow yaml like this: @@ -39,7 +44,7 @@ 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 + container: ghcr.io/opencyphal/toolshed:ts24.4.4 ``` diff --git a/toolshed/Dockerfile b/toolshed/Dockerfile index f4e6333..e12c984 100644 --- a/toolshed/Dockerfile +++ b/toolshed/Dockerfile @@ -16,6 +16,9 @@ WORKDIR /repo ENV LANG=en_US.UTF-8 ENV LANGUAGE=en_US:en ENV LC_ALL=en_US.UTF-8 +ENV LLVM_DIR=/usr/lib/llvm-19/lib/cmake/llvm +ENV MLIR_DIR=/usr/lib/llvm-19/lib/cmake/mlir +ENV CMAKE_PREFIX_PATH=/usr/lib/llvm-19 # +---------------------------------------------------------------------------+ @@ -54,6 +57,7 @@ ADD llvm-select.sh ./llvm-select.sh RUN ./llvm-install.sh 18 all RUN ./llvm-select.sh 18 18 RUN ./llvm-install.sh 19 all +RUN apt-get -y install libmlir-19-dev mlir-19-tools RUN ./llvm-select.sh 19 99 # +---------------------------------------------------------------------------+ @@ -163,6 +167,7 @@ RUN pipx install tox RUN pipx install nox RUN pip install --break-system-packages gcovr RUN pipx install yakut +RUN pipx install lit RUN cowsay -t moo RUN git clone --depth 1 https://github.com/OpenCyphal/public_regulated_data_types.git ~/public_regulated_data_types diff --git a/toolshed/README.md b/toolshed/README.md index 09b7969..a207a32 100644 --- a/toolshed/README.md +++ b/toolshed/README.md @@ -14,6 +14,19 @@ When submitting a pull-request, include `#ts` in the commit message to trigger t ***PLEASE UPDATE THE TOP-LEVEL README.md FOR EACH NEW RELEASE*** +## Notes for `ts24.4.4` + +This build adds: +- `libzstd-dev` +- `libmlir-19-dev` +- `mlir-19-tools` +- Python package `lit` + +It also exports these defaults for CMake-based LLVM/MLIR builds: +- `LLVM_DIR=/usr/lib/llvm-19/lib/cmake/llvm` +- `MLIR_DIR=/usr/lib/llvm-19/lib/cmake/mlir` +- `CMAKE_PREFIX_PATH=/usr/lib/llvm-19` + ## Manual Build and Push These instructions are for maintainers with permissions to push to the @@ -53,19 +66,19 @@ docker buildx use cyphalbuild ... then build the container: ```bash -docker buildx build --platform linux/amd64,linux/arm64 --load -t ghcr.io/opencyphal/toolshed:ts22.4.x . +docker buildx build --platform linux/amd64,linux/arm64 --load -t ghcr.io/opencyphal/toolshed:ts24.4.x . ``` After this completes you'll see your image using the classic `docker images` command or the newer `buildx imagetools` command to inspect the multi-architecture manifest: ``` -docker buildx imagetools inspect ghcr.io/opencyphal/toolshed:ts22.4.x +docker buildx imagetools inspect ghcr.io/opencyphal/toolshed:ts24.4.x ``` Now you can login to the container to test it out: ```bash -docker run --rm -it -v ${PWD}:/repo ghcr.io/opencyphal/toolshed:ts22.4.x +docker run --rm -it -v ${PWD}:/repo ghcr.io/opencyphal/toolshed:ts24.4.x ``` ### Push @@ -73,7 +86,7 @@ docker run --rm -it -v ${PWD}:/repo ghcr.io/opencyphal/toolshed:ts22.4.x As with load, you need to re-build with a `--push` argument but you'll be using the cache so the build should be a no-op: ```bash -docker buildx build --platform linux/amd64,linux/arm64 --push -t ghcr.io/opencyphal/toolshed:ts22.4.x . +docker buildx build --platform linux/amd64,linux/arm64 --push -t ghcr.io/opencyphal/toolshed:ts24.4.x . ``` ## More on Multi-Platform Builders @@ -94,4 +107,4 @@ We also assume you are using a build that has our two supported host platforms ` ``` docker buildx inspect --bootstrap -``` \ No newline at end of file +``` diff --git a/toolshed/provision-repositories.sh b/toolshed/provision-repositories.sh index 005cecf..82b38bf 100755 --- a/toolshed/provision-repositories.sh +++ b/toolshed/provision-repositories.sh @@ -21,11 +21,22 @@ set -o pipefail # +----------------------------------------------------------+ export DEBIAN_FRONTEND=noninteractive -cat kitware-archive-latest.asc -cat kitware-archive-latest.asc | gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null +apt-get -y install software-properties-common ca-certificates -apt-get -y install software-properties-common -apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 16FAAD7AF99A65E2 -apt-add-repository 'deb https://apt.kitware.com/ubuntu/ jammy main' +KITWARE_KEYRING="/usr/share/keyrings/kitware-archive-keyring.gpg" +KITWARE_SOURCE_LIST="/etc/apt/sources.list.d/kitware.list" +KITWARE_KEY_ASC="/tmp/kitware-archive-latest.asc" + +# Prefer the current upstream key in case the bundled key has expired. +if wget -qO "${KITWARE_KEY_ASC}" "https://apt.kitware.com/keys/kitware-archive-latest.asc"; then + echo "Using Kitware key downloaded from apt.kitware.com" +else + echo "Falling back to bundled Kitware key" + cp kitware-archive-latest.asc "${KITWARE_KEY_ASC}" +fi + +gpg --dearmor < "${KITWARE_KEY_ASC}" > "${KITWARE_KEYRING}" +chmod 0644 "${KITWARE_KEYRING}" +echo "deb [signed-by=${KITWARE_KEYRING}] https://apt.kitware.com/ubuntu/ jammy main" > "${KITWARE_SOURCE_LIST}" add-apt-repository -y ppa:deadsnakes/ppa diff --git a/toolshed/provision.sh b/toolshed/provision.sh index e6e7848..7de9135 100755 --- a/toolshed/provision.sh +++ b/toolshed/provision.sh @@ -48,6 +48,7 @@ apt-get -y install g++-13 apt-get -y install nodejs apt-get -y install npm apt-get -y install libpcap0.8-dev +apt-get -y install libzstd-dev apt-get -y install net-tools apt-get -y install iproute2 apt-get -y install cppcheck From 073074866f2138750b8228a4fd9522537b89eb95 Mon Sep 17 00:00:00 2001 From: Scott Dixon Date: Sat, 25 Jul 2026 18:09:03 -0700 Subject: [PATCH 9/9] Adding ts26.4.1 --- README.md | 15 +- toolshed/CHANGELOG.md | 29 ++++ toolshed/Dockerfile | 91 +++++++++--- toolshed/README.md | 177 +++++++++++++++++------ toolshed/llvm-select.sh | 5 +- toolshed/mlir-select.sh | 47 ++++++ toolshed/provision-amd64.sh | 2 - toolshed/provision-repositories-amd64.sh | 3 - toolshed/provision-repositories-arm64.sh | 4 - toolshed/provision-repositories.sh | 20 +-- toolshed/provision.sh | 24 ++- 11 files changed, 309 insertions(+), 108 deletions(-) create mode 100644 toolshed/CHANGELOG.md create mode 100755 toolshed/mlir-select.sh diff --git a/README.md b/README.md index 68e4dff..b8bef1d 100644 --- a/README.md +++ b/README.md @@ -21,11 +21,14 @@ is based on Ubuntu and provides the necessary compilers and utilities to build a like [libcanard](https://github.com/OpenCyphal/libcanard) and [Nunavut](https://github.com/OpenCyphal/nunavut). +See [toolshed/README.md](toolshed/README.md) for build instructions and +[toolshed/CHANGELOG.md](toolshed/CHANGELOG.md) for per-release notes. + #### Supported Versions | tag | Python | GCC (native) | GCC (arm-none-eabi) | Clang (native) | Cmake | Host Platforms | Other Utilities | |----------|--------|--------------|---------------------|----------------|-------|----------------|-----------------| -| [ts24.4.4](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) |
    • 3.12
    • 3.10
    |
    • 13.3.0
    • 12.3.0
    • 11.4.0
    • 10.5.0
    • 7.5.0
    | 13.3.1 |
    • 19.1.7
    • 18.1.8
    | 3.31.5 |
    • linux/amd64
    • linux/arm64
    |
    • JLink V816
    • cppcheck-2.13
    • yakut 0.13.0
    • libpcap0.8-dev
    • libzstd-dev
    • libmlir-19-dev
    • mlir-19-tools
    • network-tools
    • can-utils
    • doxygen 1.13.2
    • tox
    • nox
    • govr
    • lit
    • gcc-multilib (amd64 only)
    | +| [ts26.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.14 | 15.2.0 | 14.2.rel1 | 22.1.2 | 4.2.3 |
    • linux/amd64
    • linux/arm64
    |
    • Rust 1.93.1
    • Go 1.26
    • Node.js 22.22.1
    • TypeScript 5.2.2
    • Emscripten SDK 6.0.2
    • LLVM 22.1.2
    • MLIR 22.1.2
    • JLink V816
    • cppcheck
    • yakut
    • libpcap0.8-dev
    • network-tools
    • can-utils
    • doxygen 1.13.2
    • tox
    • nox
    • gcovr
    • lit
    • gcc-multilib (amd64 only)
    | | [ts24.4.3](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) |
    • 3.12
    • 3.10
    |
    • 13.3.0
    • 12.3.0
    • 11.4.0
    • 10.5.0
    • 7.5.0
    | 13.3.1 |
    • 19.1.7
    • 18.1.8
    | 3.31.5 |
    • linux/amd64
    • linux/arm64
    |
    • JLink V816
    • cppcheck-2.13
    • yakut 0.13.0
    • libpcap0.8-dev
    • network-tools
    • can-utils
    • doxygen 1.13.2
    • tox
    • nox
    • govr
    • gcc-multilib (amd64 only)
    | | [ts24.4.2](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) |
    • 3.12
    • 3.10
    |
    • 13.3.0
    • 12.3.0
    • 11.4.0
    • 10.5.0
    • 7.5.0
    | 13.3.1 |
    • 19.1.7
    • 18.1.8
    | 3.31.5 |
    • linux/amd64
    • linux/arm64
    |
    • yakut 0.13.0
    • libpcap0.8-dev
    • network-tools
    • can-utils
    • doxygen 1.13.2
    • gcc-multilib (amd64 only)
    | | [ts24.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) |
    • 3.12
    • 3.10
    |
    • 13.3.0
    • 12.3.0
    • 11.4.0
    • 10.5.0
    | 13.3.1 |
    • 19.1.7
    • 18.1.8
    | 3.31.5 |
    • linux/amd64
    • linux/arm64
    |
  • can-utils
  • doxygen 1.13.2
  • tox
  • nox
  • gcovr
  • gcc-multilib (amd64 only)
  • | @@ -33,10 +36,10 @@ like [libcanard](https://github.com/OpenCyphal/libcanard) and | [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
    • gcovr
    • 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
    • gcovr
    | -Starting with `ts24.4.4`, the image sets: -- `LLVM_DIR=/usr/lib/llvm-19/lib/cmake/llvm` -- `MLIR_DIR=/usr/lib/llvm-19/lib/cmake/mlir` -- `CMAKE_PREFIX_PATH=/usr/lib/llvm-19` +Starting with `ts26.4.1`, the image sets: +- `LLVM_DIR=/usr/lib/llvm-22/lib/cmake/llvm` +- `MLIR_DIR=/usr/lib/llvm-22/lib/cmake/mlir` +- `CMAKE_PREFIX_PATH=/usr/lib/llvm-22` You can use this in your workflow yaml like this: @@ -44,7 +47,7 @@ You can use this in your workflow yaml like this: jobs: my-job: runs-on: ubuntu-latest - container: ghcr.io/opencyphal/toolshed:ts24.4.4 + container: ghcr.io/opencyphal/toolshed:ts26.4.1 ``` diff --git a/toolshed/CHANGELOG.md b/toolshed/CHANGELOG.md new file mode 100644 index 0000000..9c4715d --- /dev/null +++ b/toolshed/CHANGELOG.md @@ -0,0 +1,29 @@ +# Changelog — toolshed (ts) + +Per-release notes for the `ghcr.io/opencyphal/toolshed` image. The summary table of +every published tag lives in the [top-level README](../README.md#opencyphaltoolshedts). + +## ts26.4.1 + +Rebases toolshed onto Ubuntu 26.04 LTS and keeps only the latest native toolchain +families provided by that base: + +- Python 3.14 +- GCC 15 +- CMake 4.2 +- Ninja 1.13 +- LLVM, Clang, and MLIR 22, including `libmlir-22-dev` and `mlir-22-tools` + +Also adds: + +- Rust +- Go +- Node.js and TypeScript +- Emscripten SDK 6.0.2, Binaryen, and WABT +- libcurl development headers for LLVM/MLIR CMake consumers +- libedit development headers for LLVM/MLIR CMake consumers +- Python package `lit` + +Exports `LLVM_DIR`, `MLIR_DIR`, and `CMAKE_PREFIX_PATH` defaults for CMake-based +LLVM/MLIR builds. See the +[top-level README](../README.md#opencyphaltoolshedts) for the current values. diff --git a/toolshed/Dockerfile b/toolshed/Dockerfile index e12c984..ed5c241 100644 --- a/toolshed/Dockerfile +++ b/toolshed/Dockerfile @@ -1,7 +1,7 @@ # -# Builds the toolshed/ubuntu-22.04 toolchain container. +# Builds the toolshed/ubuntu-26.04 toolchain container. # -FROM ubuntu:24.04 AS base +FROM ubuntu:26.04 AS base LABEL org.opencontainers.image.source=https://github.com/OpenCyphal/docker_toolchains LABEL org.opencontainers.image.description="Provides a consistent build and test environment for development, continuous-integration, and test automation of OpenCyphal C and C++ based projects." @@ -16,9 +16,10 @@ WORKDIR /repo ENV LANG=en_US.UTF-8 ENV LANGUAGE=en_US:en ENV LC_ALL=en_US.UTF-8 -ENV LLVM_DIR=/usr/lib/llvm-19/lib/cmake/llvm -ENV MLIR_DIR=/usr/lib/llvm-19/lib/cmake/mlir -ENV CMAKE_PREFIX_PATH=/usr/lib/llvm-19 +ENV TOOLSHED_LLVM_VERSION=22 +ENV LLVM_DIR=/usr/lib/llvm-22/lib/cmake/llvm +ENV MLIR_DIR=/usr/lib/llvm-22/lib/cmake/mlir +ENV CMAKE_PREFIX_PATH=/usr/lib/llvm-22 # +---------------------------------------------------------------------------+ @@ -26,7 +27,6 @@ ENV CMAKE_PREFIX_PATH=/usr/lib/llvm-19 # +---------------------------------------------------------------------------+ FROM base AS provisioning WORKDIR /tmp -ADD kitware-archive-latest.asc . ADD pre-provision.sh ./pre-provision.sh ADD provision-repositories.sh ./provision-repositories.sh ADD provision-repositories-${TARGETARCH}.sh ./provision-repositories-${TARGETARCH}.sh @@ -52,18 +52,66 @@ RUN echo "export PATH=$PATH" >> ~/.bashrc FROM provisioning AS llvm WORKDIR /tmp -ADD llvm-install.sh ./llvm-install.sh ADD llvm-select.sh ./llvm-select.sh -RUN ./llvm-install.sh 18 all -RUN ./llvm-select.sh 18 18 -RUN ./llvm-install.sh 19 all -RUN apt-get -y install libmlir-19-dev mlir-19-tools -RUN ./llvm-select.sh 19 99 +ADD mlir-select.sh ./mlir-select.sh +RUN apt-get -y install \ + clang-${TOOLSHED_LLVM_VERSION} \ + clangd-${TOOLSHED_LLVM_VERSION} \ + clang-format-${TOOLSHED_LLVM_VERSION} \ + clang-tidy-${TOOLSHED_LLVM_VERSION} \ + clang-tools-${TOOLSHED_LLVM_VERSION} \ + lld-${TOOLSHED_LLVM_VERSION} \ + lldb-${TOOLSHED_LLVM_VERSION} \ + llvm-${TOOLSHED_LLVM_VERSION}-dev \ + llvm-${TOOLSHED_LLVM_VERSION}-tools \ + libomp-${TOOLSHED_LLVM_VERSION}-dev \ + libc++-${TOOLSHED_LLVM_VERSION}-dev \ + libc++abi-${TOOLSHED_LLVM_VERSION}-dev \ + libclang-common-${TOOLSHED_LLVM_VERSION}-dev \ + libclang-${TOOLSHED_LLVM_VERSION}-dev \ + libclang-cpp${TOOLSHED_LLVM_VERSION}-dev \ + libclang-rt-${TOOLSHED_LLVM_VERSION}-dev \ + libpolly-${TOOLSHED_LLVM_VERSION}-dev \ + libunwind-${TOOLSHED_LLVM_VERSION}-dev \ + libmlir-${TOOLSHED_LLVM_VERSION}-dev \ + mlir-${TOOLSHED_LLVM_VERSION}-tools +RUN ./llvm-select.sh ${TOOLSHED_LLVM_VERSION} 99 +RUN ./mlir-select.sh ${TOOLSHED_LLVM_VERSION} 99 +RUN dpkg-query -W libmlir-${TOOLSHED_LLVM_VERSION}-dev mlir-${TOOLSHED_LLVM_VERSION}-tools +RUN mkdir -p /usr/lib/cmake \ + && ln -sfn /usr/lib/llvm-${TOOLSHED_LLVM_VERSION}/lib/cmake/llvm /usr/lib/cmake/llvm \ + && ln -sfn /usr/lib/llvm-${TOOLSHED_LLVM_VERSION}/lib/cmake/mlir /usr/lib/cmake/mlir +RUN mkdir -p /tmp/cmake-find-mlir \ + && printf '%s\n' \ + 'cmake_minimum_required(VERSION 3.20)' \ + 'project(FindMLIR LANGUAGES C CXX)' \ + 'find_package(CURL REQUIRED)' \ + 'find_package(MLIR CONFIG REQUIRED)' \ + 'find_package(LibEdit REQUIRED)' \ + 'message(STATUS CURL_LIBRARIES_FROM_CMAKE=${CURL_LIBRARIES})' \ + 'message(STATUS LibEdit_LIBRARIES_FROM_CMAKE=${LibEdit_LIBRARIES})' \ + 'message(STATUS MLIR_DIR_FROM_CMAKE=${MLIR_DIR})' \ + > /tmp/cmake-find-mlir/CMakeLists.txt \ + && env -u MLIR_DIR -u CMAKE_PREFIX_PATH cmake -S /tmp/cmake-find-mlir -B /tmp/cmake-find-mlir-build \ + && rm -rf /tmp/cmake-find-mlir /tmp/cmake-find-mlir-build + +# +---------------------------------------------------------------------------+ +# | WASM/EMSCRIPTEN +# +---------------------------------------------------------------------------+ +FROM llvm AS wasm +WORKDIR /tmp + +ARG EMSDK_VERSION=6.0.2 +ENV EMSDK=/opt/emsdk +RUN git clone --depth 1 --branch ${EMSDK_VERSION} https://github.com/emscripten-core/emsdk.git ${EMSDK} +RUN ${EMSDK}/emsdk install ${EMSDK_VERSION} +RUN ${EMSDK}/emsdk activate ${EMSDK_VERSION} +ENV PATH=${EMSDK}:${EMSDK}/upstream/emscripten:${PATH} # +---------------------------------------------------------------------------+ # | DOXYGEN BUILD (PARALLEL) # +---------------------------------------------------------------------------+ -FROM llvm AS doxygen +FROM wasm AS doxygen WORKDIR /tmp RUN mkdir doxygen-Release RUN mkdir doxygen-Release/build @@ -97,13 +145,8 @@ FROM doxygen AS gcc-select WORKDIR /tmp -ADD gcc-select.sh ./gcc-select.sh -RUN ./gcc-select.sh 7 7 -RUN ./gcc-select.sh 10 10 -RUN ./gcc-select.sh 11 11 -RUN ./gcc-select.sh 12 12 -RUN ./gcc-select.sh 13 99 -RUN update-alternatives --display gcc +RUN gcc --version +RUN g++ --version # +---------------------------------------------------------------------------+ # | arm-none-eabi-gcc @@ -168,6 +211,14 @@ RUN pipx install nox RUN pip install --break-system-packages gcovr RUN pipx install yakut RUN pipx install lit +RUN rustc --version +RUN cargo --version +RUN go version +RUN node --version +RUN npm --version +RUN tsc --version +RUN emcc --version +RUN lit --version RUN cowsay -t moo RUN git clone --depth 1 https://github.com/OpenCyphal/public_regulated_data_types.git ~/public_regulated_data_types diff --git a/toolshed/README.md b/toolshed/README.md index a207a32..c36f10f 100644 --- a/toolshed/README.md +++ b/toolshed/README.md @@ -3,55 +3,139 @@ The `opencyphal/toolshed` docker image provides a consistent build and test environment for development, continuous-integration, and test automation of C and C++ based projects. +- **What each release contains:** [CHANGELOG.md](CHANGELOG.md) +- **Published tags and the LLVM/MLIR CMake environment defaults:** + [top-level README](../README.md#opencyphaltoolshedts) + ## Official Release -To release a new build of this container simply create a [new github release](https://github.com/OpenCyphal/docker_toolchains/releases/new) -that starts with `ts`, uses the Ubuntu major and minor version, and uses an monotonically increasing "patch" version. -For example `ts20.4.1`will cause the Github workflow to rebuild and push the `opencyphal/toolshed` container with the -tag `ts20.4.1`. +To release a new build of this container simply create a +[new github release](https://github.com/OpenCyphal/docker_toolchains/releases/new) +that starts with `ts`, uses the Ubuntu major and minor version, and uses a monotonically +increasing "patch" version. For example `ts26.4.1` will cause the Github workflow to +rebuild and push the `opencyphal/toolshed` container with the tag `ts26.4.1`. + +To trigger the pull-request CI, include `#ts` in the **pull request title**. The +[workflow](../.github/workflows/toolshed.yml) matches on the PR title, not on commit +messages, so a PR without `#ts` in its title will not build this container. -When submitting a pull-request, include `#ts` in the commit message to trigger the pull-request CI. +***PLEASE UPDATE THE TOP-LEVEL README.md AND [CHANGELOG.md](CHANGELOG.md) FOR EACH NEW RELEASE*** -***PLEASE UPDATE THE TOP-LEVEL README.md FOR EACH NEW RELEASE*** +## Building Locally -## Notes for `ts24.4.4` +All commands in this section are run from the `toolshed` directory — the Dockerfile and +its build context (the `provision-*.sh` scripts, `.deb` payloads, and checksum files) +live there. This matches CI, which builds with `context: toolshed`. -This build adds: -- `libzstd-dev` -- `libmlir-19-dev` -- `mlir-19-tools` -- Python package `lit` +```bash +cd toolshed +``` -It also exports these defaults for CMake-based LLVM/MLIR builds: -- `LLVM_DIR=/usr/lib/llvm-19/lib/cmake/llvm` -- `MLIR_DIR=/usr/lib/llvm-19/lib/cmake/mlir` -- `CMAKE_PREFIX_PATH=/usr/lib/llvm-19` +For day-to-day development, build a single-platform image for your own machine. This is +a native build with no emulation, so it is dramatically faster than a multi-platform +build: -## Manual Build and Push +```bash +docker buildx build --platform linux/arm64 --load -t opencyphal/toolshed:ts26.4.x-local . +``` + +Use `--platform linux/amd64` on an Intel/AMD host. The default `docker` builder is +sufficient for single-platform builds; you do not need the `cyphalbuild` builder +described below. + +The full image takes a while to build: the doxygen stage compiles from source and the +Emscripten stage downloads a complete SDK. To iterate on just one part of the build, stop +at an intermediate stage with `--target`: + +```bash +docker buildx build --platform linux/arm64 --target llvm --load -t toolshed-llvm . +``` + +Stages, in order: `base`, `provisioning`, `llvm`, `wasm`, `doxygen`, `gcc-select`, +`arm-none-eabi`, `jlink`, `python`. Omit `--target` to build the complete image. + +### Smoke Test + +Confirm the toolchains in a freshly built image report the versions you expect: + +```bash +docker run --rm opencyphal/toolshed:ts26.4.x-local bash -c ' + set -e + cmake --version | head -1 + ninja --version + gcc --version | head -1 + clang --version | head -1 + llvm-config --version + mlir-opt --version | head -2 + arm-none-eabi-gcc --version | head -1 + python3 --version + rustc --version + go version + node --version + tsc --version + emcc --version | head -1 +' +``` + +Note that `JLinkExe` is added to `PATH` through `~/.bashrc` rather than through a +Dockerfile `ENV`, so it resolves only in an interactive shell, not in the +non-interactive `bash -c` above. + +To work inside the container with your repository mounted: + +```bash +docker run --rm -it -v ${PWD}:/repo opencyphal/toolshed:ts26.4.x-local +``` + +## Manual Multi-Platform Build and Push These instructions are for maintainers with permissions to push to the -[OpenCyphal organization on Github](https://github.com/OpenCyphal/). Normally the container should be published by -a github action but these instructions provide a way to manually update the container from any developer environment. +[OpenCyphal organization on Github](https://github.com/OpenCyphal/). Normally the +container is published by a github action; these instructions provide a way to manually +update the container from any developer environment. -> **IMPORTANT NOTE** +> **NOTE** > -> You must enable [containerd](https://containerd.io/) if you are using Docker Desktop to build locally (this is available as a general setting in Docker desktop). Docker desktop does not support multi-platform images and, if you try to use Docker Desktop without containerd, these instructions will fail with the message: +> CI builds each architecture natively on a separate runner (`ubuntu-latest` for amd64, +> `ubuntu-24.04-arm` for arm64) and merges the results into one manifest by digest. +> Building both platforms on a single host emulates the foreign architecture through +> QEMU, which is *very* slow for this image. Prefer a release build through CI unless you +> specifically need a local multi-platform image. + +> **NOTE** > -> *WARNING: No output specified with docker-container driver. Build result will only remain in the build cache.* +> Multi-platform `--load` requires the [containerd](https://containerd.io/) image store. +> Recent versions of Docker Desktop enable this by default; verify with: +> +> ```bash +> docker info --format '{{.DriverStatus}}' +> ``` > +> A result containing `io.containerd.snapshotter.v1` means it is enabled. If it is not, +> turn on "Use containerd for pulling and storing images" in Docker Desktop's general +> settings. Without it, a multi-platform build fails with: +> +> *WARNING: No output specified with docker-container driver. Build result will only remain in the build cache.* + +First, log in to the GitHub container registry. If you have the +[GitHub CLI](https://cli.github.com/) installed and authenticated: -First create a temporary (7-day expiration please) personal access token (classic) with write:packages and read:packages -scope. See [this github help page](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) -for instructions. +```bash +gh auth token | docker login ghcr.io -u "$(gh api user --jq .login)" --password-stdin +``` -Next, make sure you can login: +Otherwise, create a temporary (7-day expiration please) fine-grained personal access +token with `write:packages` and `read:packages` scope — see +[this github help page](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) +— and pipe it in, substituting your own github username: ```bash -export FGP = (fine-grained permission for OpenCyphal organization) -echo $FGP | docker login ghcr.io -u (github username) --password-stdin +export GHCR_TOKEN= +echo "$GHCR_TOKEN" | docker login ghcr.io -u --password-stdin ``` -... build a multi-platform image following the instructions [here](https://docs.docker.com/build/building/multi-platform/#multiple-native-nodes): +Next, create a builder that can produce multi-platform images, following the instructions +[here](https://docs.docker.com/build/building/multi-platform/#multiple-native-nodes): ```bash docker buildx create --use --name cyphalbuild @@ -66,45 +150,46 @@ docker buildx use cyphalbuild ... then build the container: ```bash -docker buildx build --platform linux/amd64,linux/arm64 --load -t ghcr.io/opencyphal/toolshed:ts24.4.x . +docker buildx build --platform linux/amd64,linux/arm64 --load -t ghcr.io/opencyphal/toolshed:ts26.4.x . ``` -After this completes you'll see your image using the classic `docker images` command or the newer `buildx imagetools` command to inspect the multi-architecture manifest: - -``` -docker buildx imagetools inspect ghcr.io/opencyphal/toolshed:ts24.4.x -``` - - Now you can login to the container to test it out: +After this completes you'll see your image using the classic `docker images` command or +the newer `buildx imagetools` command to inspect the multi-architecture manifest: ```bash -docker run --rm -it -v ${PWD}:/repo ghcr.io/opencyphal/toolshed:ts24.4.x +docker buildx imagetools inspect ghcr.io/opencyphal/toolshed:ts26.4.x ``` ### Push -As with load, you need to re-build with a `--push` argument but you'll be using the cache so the build should be a no-op: +As with load, you need to re-build with a `--push` argument but you'll be using the cache +so the build should be a no-op: ```bash -docker buildx build --platform linux/amd64,linux/arm64 --push -t ghcr.io/opencyphal/toolshed:ts24.4.x . +docker buildx build --platform linux/amd64,linux/arm64 --push -t ghcr.io/opencyphal/toolshed:ts26.4.x . ``` ## More on Multi-Platform Builders -The two commands above make some assumptions about defaults and capabilities that we haven't verified on all build hosts. First, the `buildx create` command is assumed to target the correct Docker context. You can see your contexts by doing: +The two commands above make some assumptions about defaults and capabilities that we +haven't verified on all build hosts. First, the `buildx create` command is assumed to +target the correct Docker context. You can see your contexts by doing: -``` +```bash docker context ls ``` -... then target a specific context by adding it as an additional argument to the builder create command: +... then target a specific context by adding it as an additional argument to the builder +create command: -``` +```bash docker buildx create --use --name cyphalbuild desktop-linux ``` -We also assume you are using a build that has our two supported host platforms `linux/amd64` and `linux/arm64`. You can verify this after creating the builder using the inspect command. This should also verify that your builder is now in effect: +We also assume you are using a build that has our two supported host platforms +`linux/amd64` and `linux/arm64`. You can verify this after creating the builder using the +inspect command. This should also verify that your builder is now in effect: -``` +```bash docker buildx inspect --bootstrap ``` diff --git a/toolshed/llvm-select.sh b/toolshed/llvm-select.sh index 6a997e9..586e537 100755 --- a/toolshed/llvm-select.sh +++ b/toolshed/llvm-select.sh @@ -12,10 +12,13 @@ setup_llvm_alternatives() local members=${4} local path=${5} local cmdln + local member cmdln="--verbose --install ${path}${group} ${group} ${path}${group}-${version} ${priority}" for member in ${members}; do - cmdln="${cmdln} --slave ${path}${member} ${member} ${path}${member}-${version}" + if [[ -x "${path}${member}-${version}" ]]; then + cmdln="${cmdln} --slave ${path}${member} ${member} ${path}${member}-${version}" + fi done update-alternatives ${cmdln} } diff --git a/toolshed/mlir-select.sh b/toolshed/mlir-select.sh new file mode 100755 index 0000000..3dd2f81 --- /dev/null +++ b/toolshed/mlir-select.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +set -o nounset +set -o errexit +set -o pipefail + +MLIR_VERSION=${1} +MLIR_ALTERNATIVES_PRI=${2} +MLIR_ALTERNATIVES_PATH="/usr/bin/" + +setup_mlir_alternatives() +{ + local version=${1} + local priority=${2} + local group=${3} + local members=${4} + local path=${5} + local cmdln + local member + + cmdln="--verbose --install ${path}${group} ${group} ${path}${group}-${version} ${priority}" + for member in ${members}; do + if [[ -x "${path}${member}-${version}" ]]; then + cmdln="${cmdln} --slave ${path}${member} ${member} ${path}${member}-${version}" + fi + done + update-alternatives ${cmdln} +} + +MLIR_ALTERNATIVES_GROUP="" +MLIR_ALTERNATIVES_GROUP="${MLIR_ALTERNATIVES_GROUP} mlir-linalg-ods-yaml-gen" +MLIR_ALTERNATIVES_GROUP="${MLIR_ALTERNATIVES_GROUP} mlir-lsp-server" +MLIR_ALTERNATIVES_GROUP="${MLIR_ALTERNATIVES_GROUP} mlir-minimal-opt" +MLIR_ALTERNATIVES_GROUP="${MLIR_ALTERNATIVES_GROUP} mlir-minimal-opt-canonicalize" +MLIR_ALTERNATIVES_GROUP="${MLIR_ALTERNATIVES_GROUP} mlir-pdll" +MLIR_ALTERNATIVES_GROUP="${MLIR_ALTERNATIVES_GROUP} mlir-pdll-lsp-server" +MLIR_ALTERNATIVES_GROUP="${MLIR_ALTERNATIVES_GROUP} mlir-query" +MLIR_ALTERNATIVES_GROUP="${MLIR_ALTERNATIVES_GROUP} mlir-reduce" +MLIR_ALTERNATIVES_GROUP="${MLIR_ALTERNATIVES_GROUP} mlir-rewrite" +MLIR_ALTERNATIVES_GROUP="${MLIR_ALTERNATIVES_GROUP} mlir-runner" +MLIR_ALTERNATIVES_GROUP="${MLIR_ALTERNATIVES_GROUP} mlir-tblgen" +MLIR_ALTERNATIVES_GROUP="${MLIR_ALTERNATIVES_GROUP} mlir-transform-opt" +MLIR_ALTERNATIVES_GROUP="${MLIR_ALTERNATIVES_GROUP} mlir-translate" +MLIR_ALTERNATIVES_GROUP="${MLIR_ALTERNATIVES_GROUP} tblgen-lsp-server" +MLIR_ALTERNATIVES_GROUP="${MLIR_ALTERNATIVES_GROUP} tblgen-to-irdl" + +setup_mlir_alternatives "${MLIR_VERSION}" "${MLIR_ALTERNATIVES_PRI}" "mlir-opt" "${MLIR_ALTERNATIVES_GROUP}" "${MLIR_ALTERNATIVES_PATH}" diff --git a/toolshed/provision-amd64.sh b/toolshed/provision-amd64.sh index 79ce51f..70088ef 100755 --- a/toolshed/provision-amd64.sh +++ b/toolshed/provision-amd64.sh @@ -23,5 +23,3 @@ export DEBIAN_FRONTEND=noninteractive apt-get -y install gcc-multilib apt-get -y install g++-multilib -apt-get -y install gcc-13-multilib -apt-get -y install g++-13-multilib diff --git a/toolshed/provision-repositories-amd64.sh b/toolshed/provision-repositories-amd64.sh index 27ba11e..a3a92fb 100755 --- a/toolshed/provision-repositories-amd64.sh +++ b/toolshed/provision-repositories-amd64.sh @@ -20,6 +20,3 @@ set -o pipefail # +----------------------------------------------------------+ export DEBIAN_FRONTEND=noninteractive - -# For GCC7 -apt-add-repository 'deb http://archive.ubuntu.com/ubuntu/ focal main universe' diff --git a/toolshed/provision-repositories-arm64.sh b/toolshed/provision-repositories-arm64.sh index 1cbae6c..a3a92fb 100755 --- a/toolshed/provision-repositories-arm64.sh +++ b/toolshed/provision-repositories-arm64.sh @@ -20,7 +20,3 @@ set -o pipefail # +----------------------------------------------------------+ export DEBIAN_FRONTEND=noninteractive - -# For GCC7 -apt-add-repository 'deb https://ports.ubuntu.com/ubuntu-ports focal main universe' - diff --git a/toolshed/provision-repositories.sh b/toolshed/provision-repositories.sh index 82b38bf..ee5ff65 100755 --- a/toolshed/provision-repositories.sh +++ b/toolshed/provision-repositories.sh @@ -21,22 +21,4 @@ set -o pipefail # +----------------------------------------------------------+ export DEBIAN_FRONTEND=noninteractive -apt-get -y install software-properties-common ca-certificates - -KITWARE_KEYRING="/usr/share/keyrings/kitware-archive-keyring.gpg" -KITWARE_SOURCE_LIST="/etc/apt/sources.list.d/kitware.list" -KITWARE_KEY_ASC="/tmp/kitware-archive-latest.asc" - -# Prefer the current upstream key in case the bundled key has expired. -if wget -qO "${KITWARE_KEY_ASC}" "https://apt.kitware.com/keys/kitware-archive-latest.asc"; then - echo "Using Kitware key downloaded from apt.kitware.com" -else - echo "Falling back to bundled Kitware key" - cp kitware-archive-latest.asc "${KITWARE_KEY_ASC}" -fi - -gpg --dearmor < "${KITWARE_KEY_ASC}" > "${KITWARE_KEYRING}" -chmod 0644 "${KITWARE_KEYRING}" -echo "deb [signed-by=${KITWARE_KEYRING}] https://apt.kitware.com/ubuntu/ jammy main" > "${KITWARE_SOURCE_LIST}" - -add-apt-repository -y ppa:deadsnakes/ppa +apt-get -y install ca-certificates diff --git a/toolshed/provision.sh b/toolshed/provision.sh index 7de9135..ad7a837 100755 --- a/toolshed/provision.sh +++ b/toolshed/provision.sh @@ -23,8 +23,11 @@ export DEBIAN_FRONTEND=noninteractive apt-get -y install apt-utils apt-get -y install moreutils -apt-get -y install python3.10 +apt-get -y install build-essential +apt-get -y install python3 +apt-get -y install python3-dev apt-get -y install python3-pip +apt-get -y install python3-venv apt-get -y install python3-virtualenv apt-get -y install cmake apt-get -y install git @@ -34,22 +37,29 @@ apt-get -y install lcov apt-get -y install valgrind apt-get -y install graphviz apt-get -y install curl +apt-get -y install libcurl4-openssl-dev +apt-get -y install libedit-dev apt-get -y install ninja-build apt-get -y install can-utils apt-get -y install lsb-release apt-get -y install wget apt-get -y install gnupg apt-get -y install vim -apt-get -y install g++-7 -apt-get -y install g++-10 -apt-get -y install g++-11 -apt-get -y install g++-12 -apt-get -y install g++-13 +apt-get -y install gcc +apt-get -y install g++ apt-get -y install nodejs apt-get -y install npm +apt-get -y install node-typescript +apt-get -y install rustc +apt-get -y install cargo +apt-get -y install rustfmt +apt-get -y install rust-clippy +apt-get -y install golang-go +apt-get -y install binaryen +apt-get -y install wabt apt-get -y install libpcap0.8-dev apt-get -y install libzstd-dev apt-get -y install net-tools apt-get -y install iproute2 apt-get -y install cppcheck -apt-get -y install libncurses5 +apt-get -y install libncurses6