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 4213f59..b8bef1d 100644 --- a/README.md +++ b/README.md @@ -21,17 +21,25 @@ 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 | |----------|--------|--------------|---------------------|----------------|-------|----------------|-----------------| +| [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 | | | | [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 | | | +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: @@ -39,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:ts22.4.7 + 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 87ad571..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,6 +16,10 @@ WORKDIR /repo ENV LANG=en_US.UTF-8 ENV LANGUAGE=en_US:en ENV LC_ALL=en_US.UTF-8 +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 # +---------------------------------------------------------------------------+ @@ -23,7 +27,6 @@ ENV LC_ALL=en_US.UTF-8 # +---------------------------------------------------------------------------+ 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 @@ -49,17 +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 ./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 @@ -93,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 @@ -161,8 +208,17 @@ 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 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 09b7969..c36f10f 100644 --- a/toolshed/README.md +++ b/toolshed/README.md @@ -3,42 +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. + +***PLEASE UPDATE THE TOP-LEVEL README.md AND [CHANGELOG.md](CHANGELOG.md) FOR EACH NEW RELEASE*** + +## Building Locally + +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`. + +```bash +cd toolshed +``` + +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: -When submitting a pull-request, include `#ts` in the commit message to trigger the pull-request CI. +```bash +docker buildx build --platform linux/arm64 --load -t opencyphal/toolshed:ts26.4.x-local . +``` -***PLEASE UPDATE THE TOP-LEVEL README.md FOR EACH NEW RELEASE*** +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. -## Manual Build and Push +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 @@ -53,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:ts22.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:ts22.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:ts22.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:ts22.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 -``` \ No newline at end of file +``` 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 005cecf..ee5ff65 100755 --- a/toolshed/provision-repositories.sh +++ b/toolshed/provision-repositories.sh @@ -21,11 +21,4 @@ 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 -apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 16FAAD7AF99A65E2 -apt-add-repository 'deb https://apt.kitware.com/ubuntu/ jammy main' - -add-apt-repository -y ppa:deadsnakes/ppa +apt-get -y install ca-certificates diff --git a/toolshed/provision.sh b/toolshed/provision.sh index e6e7848..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,21 +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