diff --git a/.github/workflows/texer.yml b/.github/workflows/texer.yml
index e04bbf3..396663b 100644
--- a/.github/workflows/texer.yml
+++ b/.github/workflows/texer.yml
@@ -3,7 +3,7 @@ name: ghcr.io/opencyphal/texer container build and publish.
on:
release:
types: [ published ]
-
+
pull_request:
branches: [ "main" ]
diff --git a/.github/workflows/toolshed.yml b/.github/workflows/toolshed.yml
index 1191a57..046c046 100644
--- a/.github/workflows/toolshed.yml
+++ b/.github/workflows/toolshed.yml
@@ -3,7 +3,7 @@ name: ghcr.io/opencyphal/toolshed container build and publish.
on:
release:
types: [ published ]
-
+
pull_request:
branches: [ "main" ]
@@ -14,27 +14,47 @@ env:
jobs:
- build_and_publish:
+ dry_run:
+ if: ${{ github.event_name == 'pull_request' || ( github.event_name == 'release' && startsWith( github.ref, 'ts') && github.event.release.prerelease ) }}
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - # Add QEMU to allow building non-native containers as
+ # part of multi-platform container builds.
+ name: Set up QEMU
+ uses: docker/setup-qemu-action@v3
+
+ - # Setup buildx so we can do multi-platform container builds.
+ name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+ - name: build
+ run: cd ${{ env.IMAGE_NAME}} && docker buildx build --platform linux/arm64,linux/amd64 .
+
+ release:
+ if: ${{ github.event_name == 'release' && startsWith( github.ref, 'ts' ) && !github.event.release.prerelease }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- - name: process event
- id: process_event
- uses: olegtarasov/get-tag@v2.1.2
+ - # Add QEMU to allow building non-native containers as
+ # part of multi-platform container builds.
+ name: Set up QEMU
+ uses: docker/setup-qemu-action@v3
+
+ - # Setup buildx so we can do multi-platform container builds.
+ name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Login to GHCR
+ uses: docker/login-action@v2
with:
- tagRegex: "(${{ env.IMAGE_VERSION_PREFIX }}).*"
- - name: dryrun-build
- if: ${{ github.event_name == 'pull_request' || ( github.event_name == 'release' && startsWith( steps.process_event.outputs.tag, env.IMAGE_VERSION_PREFIX ) && github.event.release.prerelease ) }}
- run: docker build ./${{ env.IMAGE_NAME }}
+ registry: ghcr.io
+ username: ${{ github.repository_owner }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
- name: build-and-push
- if: ${{ github.event_name == 'release' && startsWith( steps.process_event.outputs.tag, env.IMAGE_VERSION_PREFIX ) && !github.event.release.prerelease }}
- uses: macbre/push-to-ghcr@master
- with:
- context: ./${{ env.IMAGE_NAME }}
- dockerfile: ./${{ env.IMAGE_NAME }}/Dockerfile
- image_name: ${{ env.ORG_NAMESPACE }}/${{ env.IMAGE_NAME }}
- github_token: ${{ secrets.GITHUB_TOKEN }}
- repository: ghcr.io
+ run: cd ${{ env.IMAGE_NAME }} && docker buildx build --platform linux/arm64,linux/amd64 --push -t ghcr.io/${{ env.ORG_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_PREFIX }}${{ github.ref }} .
diff --git a/.github/workflows/toxic.yml b/.github/workflows/toxic.yml
index a8d9f98..8bf3c95 100644
--- a/.github/workflows/toxic.yml
+++ b/.github/workflows/toxic.yml
@@ -3,7 +3,7 @@ name: ghcr.io/opencyphal/toxic container build and publish.
on:
release:
types: [ published ]
-
+
pull_request:
branches: [ "main" ]
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..2997cfd
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "git-blame.gitWebUrl": ""
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index e8fb526..40e0ab6 100644
--- a/README.md
+++ b/README.md
@@ -23,12 +23,14 @@ like [libcanard](https://github.com/OpenCyphal/libcanard) and
#### Supported Versions
-| tag | Python | Gcc | Clang | Cmake | Other Utilities |
-|----------|--------|-----|-------|-------|-----------------|
-| [ts20.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 9.3.0 | 10.0.0 | 3.16.3 |
- qemu
- can-utils
- sonar-scanner
|
-| [ts22.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | 15.0.7 | 3.22.1 | - qemu
- can-utils
- sonar-scanner
- doxygen 1.9.6
-| [ts22.4.2](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | 15.0.7 | 3.22.1 | - qemu
- can-utils
- ~~sonar-scanner~~
- doxygen 1.9.6
- nvm
- node 16.20.0
-| [ts22.4.3](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | 15.0.7 | 3.22.1 | - qemu
- can-utils
- doxygen 1.9.6
- nvm
- node 16.20.0
- nox
- govr
+| tag | Python | Gcc | Clang | Cmake | Platforms | Other Utilities |
+|----------|--------|-----|-------|-------|-----------|-----------------|
+| [ts20.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 9.3.0 | 10.0.0 | 3.16.3 | | - qemu
- can-utils
- sonar-scanner
|
+| [ts22.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | 15.0.7 | 3.22.1 | | - qemu
- can-utils
- sonar-scanner
- doxygen 1.9.6
+| [ts22.4.2](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | 15.0.7 | 3.22.1 | | - qemu
- can-utils
- ~~sonar-scanner~~
- doxygen 1.9.6
- nvm
- node 16.20.0
+| [ts22.4.3](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | 15.0.7 | 3.22.1 | | - qemu
- can-utils
- doxygen 1.9.6
- nvm
- node 16.20.0
- nox
- govr
+| ts22.4.4 - An experimental release that shouldn't be used. |
+| [ts22.4.5](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.4.0 | 18.0.0 | 3.22.1 | | - qemu
- can-utils
- doxygen 1.9.6
- nvm
- node 16.20.0
- nox
- govr
You can use this in your workflow yaml like this:
@@ -49,10 +51,10 @@ is based on Ubuntu and provides the necessary compilers and utilities to author
#### Supported Versions
-| tag | Python | Tex Live | git | Other Utilities |
-|----------|--------|----------|-----|-----------------|
-| [te20.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/texer) | 3.11 | 2019 | 2.25.1 | - python pygments
- lyx
- inkscape
|
-| [te22.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/texer) | 3.11 | 2022 | 2.34.1 | - python pygments
- lyx
- inkscape
|
+| tag | Python | Tex Live | git | Platforms | Other Utilities |
+|----------|--------|----------|-----|-----------|-----------------|
+| [te20.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/texer) | 3.11 | 2019 | 2.25.1 | | - python pygments
- lyx
- inkscape
|
+| [te22.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/texer) | 3.11 | 2022 | 2.34.1 | | - python pygments
- lyx
- inkscape
|
You can use this in your workflow yaml like this:
@@ -74,10 +76,10 @@ is based on Ubuntu and provides all modern Python3 distributions, pip, tox, and
#### Supported Versions
-| tag | Base Python | Python Versions | Tox | Nox | pip | Other Utilities |
-|----------|-------------|-----------------|-----|-----|-----|-----------------|
-| [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 | |
-| [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 | (not available) | 20.0.2 | |
+| tag | Base Python | Python Versions | Tox | Nox | pip | Platforms | Other Utilities |
+|----------|-------------|-----------------|-----|-----|-----|-----------|-----------------|
+| [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 | | |
+| [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 | (not available) | 20.0.2 | | |
You can use this in your workflow yaml like this:
diff --git a/toolshed/Dockerfile b/toolshed/Dockerfile
index 595bf3b..cdfae7d 100644
--- a/toolshed/Dockerfile
+++ b/toolshed/Dockerfile
@@ -1,7 +1,7 @@
#
# Builds the toolshed/ubuntu-22.04 toolchain container.
#
-FROM ubuntu:22.04
+FROM ubuntu:22.04 AS base
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."
@@ -19,53 +19,60 @@ ENV LC_ALL=en_US.UTF-8
COPY provision.sh /
RUN /provision.sh
+
# +---------------------------------------------------------------------------+
# | NVM/nodejs
# +---------------------------------------------------------------------------+
+FROM base AS node
+
WORKDIR /tmp
ADD nvm-install.sh ./nvm-install.sh
RUN . ./nvm-install.sh
ENV NVM_DIR="~/.nvm"
RUN . ~/.nvm/nvm.sh && nvm install v16.20.0
+
+# +---------------------------------------------------------------------------+
+# | INSTALL PYTHON STUFF
+# +---------------------------------------------------------------------------+
+FROM node AS python
+WORKDIR /tmp
+
+RUN pip3 install virtualenv
+RUN pip3 install tox
+RUN pip3 install nox
+RUN pip3 install gcovr
+RUN pip3 list
+
+
# +---------------------------------------------------------------------------+
# | LLVM
# +---------------------------------------------------------------------------+
+FROM python AS llvm
WORKDIR /tmp
+
ADD llvm-install.sh ./llvm-install.sh
ADD llvm-select.sh ./llvm-select.sh
-RUN ./llvm-install.sh 15 all
-RUN ./llvm-select.sh 15
+RUN ./llvm-install.sh 18 all
+RUN ./llvm-select.sh 18
+
# +---------------------------------------------------------------------------+
-# | DOXYGEN BUILD
+# | GCC
# +---------------------------------------------------------------------------+
-ARG DOXYGEN_VERSION=1_9_6
-
-WORKDIR /tmp
-COPY doxygen-Release_${DOXYGEN_VERSION}.sha512.txt .
-ADD https://github.com/doxygen/doxygen/archive/refs/tags/Release_${DOXYGEN_VERSION}.tar.gz doxygen-Release_${DOXYGEN_VERSION}.tar.gz
-RUN sha512sum -c doxygen-Release_${DOXYGEN_VERSION}.sha512.txt
-RUN mkdir doxygen-Release
-RUN tar -xvf doxygen-Release_${DOXYGEN_VERSION}.tar.gz -C doxygen-Release --strip-components 1
-RUN rm doxygen-Release_${DOXYGEN_VERSION}.tar.gz
-RUN mkdir doxygen-Release/build
+FROM llvm AS gcc-arm64
-WORKDIR /tmp/doxygen-Release/build
-RUN cmake -G "Unix Makefiles" -Dbuild_parse:BOOL=ON -Duse_libclang:BOOL=ON ..
-RUN make
-RUN make install
+ARG GCC_HOST_PLATFORM=aarch64
-WORKDIR /tmp
-RUN rm -rf doxygen-Release
+FROM llvm AS gcc-amd64
+ARG GCC_HOST_PLATFORM=x86_64
-# +---------------------------------------------------------------------------+
-# | INSTALL TOOLCHAINS
-# +---------------------------------------------------------------------------+
+FROM gcc-$TARGETARCH AS gcc
+WORKDIR /tmp
# ARM: M-Cores, Bare Metal
-ARG GCC_ARM_NONE_EABI_PLATFORM=x86_64
+ARG GCC_ARM_NONE_EABI_PLATFORM=${GCC_HOST_PLATFORM}
ARG GCC_ARM_NONE_EABI_VERSION=11.2-2022.02
ARG GCC_ARM_NONE_EABI_TRIPLE=arm-none-eabi
ARG GCC_ARM_NONE_EABI_BASENAME=gcc-arm-${GCC_ARM_NONE_EABI_VERSION}-${GCC_ARM_NONE_EABI_PLATFORM}-${GCC_ARM_NONE_EABI_TRIPLE}
@@ -84,7 +91,7 @@ ENV PATH="/usr/share/${GCC_ARM_NONE_EABI_BASENAME}/bin:${PATH}"
RUN ${GCC_ARM_NONE_EABI_TRIPLE}-gcc --version
# ARM: A-Cores, Linux
-ARG GCC_ARM_NONE_LINUX_PLATFORM=x86_64
+ARG GCC_ARM_NONE_LINUX_PLATFORM=${GCC_HOST_PLATFORM}
ARG GCC_ARM_NONE_LINUX_VERSION=11.2-2022.02
ARG GCC_ARM_NONE_LINUX_TRIPLE=arm-none-linux-gnueabihf
ARG GCC_ARM_NONE_LINUX_BASENAME=gcc-arm-${GCC_ARM_NONE_LINUX_VERSION}-${GCC_ARM_NONE_LINUX_PLATFORM}-${GCC_ARM_NONE_LINUX_TRIPLE}
@@ -101,21 +108,47 @@ ENV PATH="/usr/share/${GCC_ARM_NONE_LINUX_BASENAME}/bin:${PATH}"
RUN ${GCC_ARM_NONE_LINUX_TRIPLE}-gcc --version
-# +---------------------------------------------------------------------------+
-# | INSTALL THE PATH FOR INTERATIVE SESSIONS
-# +---------------------------------------------------------------------------+
-RUN echo "export PATH=$PATH" >> ~/.bashrc
# +---------------------------------------------------------------------------+
-# | INSTALL PYTHON STUFF
+# | DOXYGEN BUILD
# +---------------------------------------------------------------------------+
-RUN pip3 install virtualenv
-RUN pip3 install tox
-RUN pip3 install nox
-RUN pip3 install gcovr
-RUN pip3 list
+FROM gcc AS doxygen-arm64
+
+ARG USE_LIB_CLANG=OFF
+
+FROM gcc AS doxygen-amd64
+
+ARG USE_LIB_CLANG=OFF
+
+FROM doxygen-$TARGETARCH AS doxygen
+WORKDIR /tmp
+
+ARG DOXYGEN_VERSION=1_9_6
+
+COPY doxygen-Release_${DOXYGEN_VERSION}.sha512.txt .
+ADD https://github.com/doxygen/doxygen/archive/refs/tags/Release_${DOXYGEN_VERSION}.tar.gz doxygen-Release_${DOXYGEN_VERSION}.tar.gz
+RUN sha512sum -c doxygen-Release_${DOXYGEN_VERSION}.sha512.txt
+RUN mkdir doxygen-Release
+RUN tar -xvf doxygen-Release_${DOXYGEN_VERSION}.tar.gz -C doxygen-Release --strip-components 1
+RUN rm doxygen-Release_${DOXYGEN_VERSION}.tar.gz
+RUN mkdir doxygen-Release/build
+
+WORKDIR /tmp/doxygen-Release/build
+RUN cmake -G "Unix Makefiles" -Dbuild_parse:BOOL=ON -Duse_libclang:BOOL=${USE_LIB_CLANG} ..
+RUN make
+RUN make install
+
+WORKDIR /tmp
+RUN rm -rf doxygen-Release
+
# +---------------------------------------------------------------------------+
-# | LEAVE THE WORKDIR AS /repo
+# | FINALIZE
# +---------------------------------------------------------------------------+
+FROM doxygen AS all
+
+# INSTALL THE PATH FOR INTERATIVE SESSIONS
+RUN echo "export PATH=$PATH" >> ~/.bashrc
+
+# LEAVE THE WORKDIR AS /repo
WORKDIR /repo
diff --git a/toolshed/README.md b/toolshed/README.md
index f743e8d..700ff9d 100644
--- a/toolshed/README.md
+++ b/toolshed/README.md
@@ -29,22 +29,69 @@ export FGP = (fine-grained permission for OpenCyphal organization)
echo $FGP | docker login ghcr.io -u (github username) --password-stdin
```
-... now build (where x is the next version number for the container):
+... build a multi-platform image following the instructions [here](https://docs.docker.com/build/building/multi-platform/#multiple-native-nodes):
```bash
-docker build -t ghcr.io/opencyphal/toolshed:ts22.4.x .
+docker buildx create --use --name cyphalbuild
```
-... and finally, push.
+If you already created the `cyphalbuild` builder then just use it instead of creating it:
```bash
-docker push ghcr.io/opencyphal/toolshed:ts22.4.x
+docker buildx use cyphalbuild
```
-## Testing out the container
+... then build the container:
-To login to an interactive session do:
+```bash
+docker buildx build --platform linux/amd64,linux/arm64 -t ghcr.io/opencyphal/toolshed:ts22.4.x .
+```
+
+(where x is the next version number for the container)
+
+When the build completes you'll see the following warning:
+
+> WARNING: No output specified with docker-container driver. Build result will only remain in the build cache. To push result image into registry use --push or to load image into docker use --load
+
+It's important you don't restart your docker build container before you load and/or push since it may blow away the cache you need to push or load from.
+
+### Load
+Currently you can't use --load with docker desktop so the only way to test the container is to rebuild for one platform only:
+
+```bash
+docker buildx build --platform linux/arm64 --load -t ghcr.io/opencyphal/toolshed:ts22.4.x .
+```
+
+This will be operating off of the cache so it shouldn't take very long to complete. After it does you'll see your image using the classic `docker images` command. 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
```
+
+### 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:
+
+```bash
+docker buildx build --platform linux/amd64,linux/arm64 --push -t ghcr.io/opencyphal/toolshed:ts22.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:
+
+```
+docker context ls
+```
+
+... then target a specific context by adding it as an additional argument to the builder create command:
+
+```
+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:
+
+```
+docker buildx inspect --bootstrap
+```
\ No newline at end of file
diff --git a/toolshed/gcc-arm-11.2-2022.02-aarch64-arm-none-eabi.sha512.txt b/toolshed/gcc-arm-11.2-2022.02-aarch64-arm-none-eabi.sha512.txt
new file mode 100644
index 0000000..b43d91c
--- /dev/null
+++ b/toolshed/gcc-arm-11.2-2022.02-aarch64-arm-none-eabi.sha512.txt
@@ -0,0 +1 @@
+be19622e61d320427143c8492d8955447b75de080f3228766942e3529874adcf1f174a84e8f1f3ec92d14f72e9a93ba3fc43a347000fecb1c4bf1c3c7cf0667f gcc-arm-11.2-2022.02-aarch64-arm-none-eabi.tar.xz
\ No newline at end of file
diff --git a/toolshed/gcc-arm-11.2-2022.02-aarch64-arm-none-linux-gnueabihf.sha512.txt b/toolshed/gcc-arm-11.2-2022.02-aarch64-arm-none-linux-gnueabihf.sha512.txt
new file mode 100644
index 0000000..53fe507
--- /dev/null
+++ b/toolshed/gcc-arm-11.2-2022.02-aarch64-arm-none-linux-gnueabihf.sha512.txt
@@ -0,0 +1 @@
+f2acde25fbd5a0e5fcf2eb796942a7fa988dfe2a6190a0505f3b43b57ea3a4eb3b23e51aa35894d551a07a85561374040456826e407a02443daab132937f3be4 gcc-arm-11.2-2022.02-aarch64-arm-none-linux-gnueabihf.tar.xz
diff --git a/toolshed/llvm-install.sh b/toolshed/llvm-install.sh
index 8e97026..d057053 100755
--- a/toolshed/llvm-install.sh
+++ b/toolshed/llvm-install.sh
@@ -20,7 +20,7 @@ usage() {
exit 1;
}
-CURRENT_LLVM_STABLE=15
+CURRENT_LLVM_STABLE=17
BASE_URL="http://apt.llvm.org"
# Check for required tools
@@ -50,9 +50,9 @@ source /etc/os-release
DISTRO=${DISTRO,,}
case ${DISTRO} in
debian)
- if [[ "${VERSION}" == "unstable" ]] || [[ "${VERSION}" == "testing" ]] || [[ "${VERSION_CODENAME}" == "bookworm" ]]; then
- # For now, bookworm == sid.
- # TODO change when bookworm is released
+ # Debian Trixie has a workaround because of
+ # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1038383
+ if [[ "${VERSION}" == "unstable" ]] || [[ "${VERSION}" == "testing" ]] || [[ "${VERSION_CODENAME}" == "trixie" ]]; then
CODENAME=unstable
LINKNAME=
else
@@ -125,7 +125,8 @@ LLVM_VERSION_PATTERNS[13]="-13"
LLVM_VERSION_PATTERNS[14]="-14"
LLVM_VERSION_PATTERNS[15]="-15"
LLVM_VERSION_PATTERNS[16]="-16"
-LLVM_VERSION_PATTERNS[17]=""
+LLVM_VERSION_PATTERNS[17]="-17"
+LLVM_VERSION_PATTERNS[18]=""
if [ ! ${LLVM_VERSION_PATTERNS[$LLVM_VERSION]+_} ]; then
echo "This script does not support LLVM version $LLVM_VERSION"
@@ -161,32 +162,15 @@ if [[ -z "`apt-key list 2> /dev/null | grep -i llvm`" ]]; then
# Delete the key in the old format
apt-key del AF4F7421
fi
-
-# first install the ubuntu base so we can establish the paths to clang
-apt-get install -y
-
add-apt-repository "${REPO_NAME}"
apt-get update
PKG="clang-$LLVM_VERSION lldb-$LLVM_VERSION lld-$LLVM_VERSION clangd-$LLVM_VERSION"
if [[ $ALL -eq 1 ]]; then
# same as in test-install.sh
# No worries if we have dups
- PKG="$PKG clang-tidy-$LLVM_VERSION"
- PKG="$PKG clang-format-$LLVM_VERSION"
- PKG="$PKG clang-tools-$LLVM_VERSION"
- PKG="$PKG llvm-$LLVM_VERSION-dev"
- PKG="$PKG lld-$LLVM_VERSION"
- PKG="$PKG lldb-$LLVM_VERSION"
- PKG="$PKG llvm-$LLVM_VERSION-tools"
- PKG="$PKG libomp-$LLVM_VERSION-dev"
- PKG="$PKG libc++-$LLVM_VERSION-dev"
- PKG="$PKG libc++abi-$LLVM_VERSION-dev"
- PKG="$PKG libclang-common-$LLVM_VERSION-dev"
- PKG="$PKG libclang-$LLVM_VERSION-dev"
- PKG="$PKG libclang-cpp$LLVM_VERSION-dev"
- PKG="$PKG libunwind-$LLVM_VERSION-dev"
+ PKG="$PKG clang-tidy-$LLVM_VERSION clang-format-$LLVM_VERSION clang-tools-$LLVM_VERSION llvm-$LLVM_VERSION-dev lld-$LLVM_VERSION lldb-$LLVM_VERSION llvm-$LLVM_VERSION-tools libomp-$LLVM_VERSION-dev libc++-$LLVM_VERSION-dev libc++abi-$LLVM_VERSION-dev libclang-common-$LLVM_VERSION-dev libclang-$LLVM_VERSION-dev libclang-cpp$LLVM_VERSION-dev libunwind-$LLVM_VERSION-dev"
if test $LLVM_VERSION -gt 14; then
PKG="$PKG libclang-rt-$LLVM_VERSION-dev libpolly-$LLVM_VERSION-dev"
fi
fi
-apt-get install -y $PKG
+apt-get install -y $PKG
\ No newline at end of file
diff --git a/toolshed/provision.sh b/toolshed/provision.sh
index f25569d..74ac797 100755
--- a/toolshed/provision.sh
+++ b/toolshed/provision.sh
@@ -22,6 +22,8 @@ set -o pipefail
export DEBIAN_FRONTEND=noninteractive
apt-get update
+apt-get -y install unzip
+apt-get -y install zip
# setup locales in the container so Python can default to utf-8.
apt-get -y install locales
@@ -45,10 +47,6 @@ apt-get -y install lcov
apt-get -y install valgrind
apt-get -y install graphviz
apt-get -y install curl
-apt-get -y install unzip
-apt-get -y install zip
-apt-get -y install gcc-multilib
-apt-get -y install g++-multilib
apt-get -y install qemu
apt-get -y install ninja-build
apt-get -y install can-utils
diff --git a/toolshed/sigstore.public.key b/toolshed/sigstore.public.key
new file mode 100644
index 0000000..918419c
--- /dev/null
+++ b/toolshed/sigstore.public.key
@@ -0,0 +1,53 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFE9lCwBEADi0WUAApM/mgHJRU8lVkkw0CHsZNpqaQDNaHefD6Rw3S4LxNmM
+EZaOTkhP200XZM8lVdbfUW9xSjA3oPldc1HG26NjbqqCmWpdo2fb+r7VmU2dq3NM
+R18ZlKixiLDE6OUfaXWKamZsXb6ITTYmgTO6orQWYrnW6ckYHSeaAkW0wkDAryl2
+B5v8aoFnQ1rFiVEMo4NGzw4UX+MelF7rxaaregmKVTPiqCOSPJ1McC1dHFN533FY
+Wh/RVLKWo6npu+owtwYFQW+zyQhKzSIMvNujFRzhIxzxR9Gn87MoLAyfgKEzrbbT
+DhqqNXTxS4UMUKCQaO93TzetX/EBrRpJj+vP640yio80h4Dr5pAd7+LnKwgpTDk1
+G88bBXJAcPZnTSKu9I2c6KY4iRNbvRz4i+ZdwwZtdW4nSdl2792L7Sl7Nc44uLL/
+ZqkKDXEBF6lsX5XpABwyK89S/SbHOytXv9o4puv+65Ac5/UShspQTMSKGZgvDauU
+cs8kE1U9dPOqVNCYq9Nfwinkf6RxV1k1+gwtclxQuY7UpKXP0hNAXjAiA5KS5Crq
+7aaJg9q2F4bub0mNU6n7UI6vXguF2n4SEtzPRk6RP+4TiT3bZUsmr+1ktogyOJCc
+Ha8G5VdL+NBIYQthOcieYCBnTeIH7D3Sp6FYQTYtVbKFzmMK+36ERreL/wARAQAB
+tD1TeWx2ZXN0cmUgTGVkcnUgLSBEZWJpYW4gTExWTSBwYWNrYWdlcyA8c3lsdmVz
+dHJlQGRlYmlhbi5vcmc+iQI4BBMBAgAiBQJRPZQsAhsDBgsJCAcDAgYVCAIJCgsE
+FgIDAQIeAQIXgAAKCRAVz00Yr090Ibx+EADArS/hvkDF8juWMXxh17CgR0WZlHCC
+9CTBWkg5a0bNN/3bb97cPQt/vIKWjQtkQpav6/5JTVCSx2riL4FHYhH0iuo4iAPR
+udC7Cvg8g7bSPrKO6tenQZNvQm+tUmBHgFiMBJi92AjZ/Qn1Shg7p9ITivFxpLyX
+wpmnF1OKyI2Kof2rm4BFwfSWuf8Fvh7kDMRLHv+MlnK/7j/BNpKdozXxLcwoFBmn
+l0WjpAH3OFF7Pvm1LJdf1DjWKH0Dc3sc6zxtmBR/KHHg6kK4BGQNnFKujcP7TVdv
+gMYv84kun14pnwjZcqOtN3UJtcx22880DOQzinoMs3Q4w4o05oIF+sSgHViFpc3W
+R0v+RllnH05vKZo+LDzc83DQVrdwliV12eHxrMQ8UYg88zCbF/cHHnlzZWAJgftg
+hB08v1BKPgYRUzwJ6VdVqXYcZWEaUJmQAPuAALyZESw94hSo28FAn0/gzEc5uOYx
+K+xG/lFwgAGYNb3uGM5m0P6LVTfdg6vDwwOeTNIExVk3KVFXeSQef2ZMkhwA7wya
+KJptkb62wBHFE+o9TUdtMCY6qONxMMdwioRE5BYNwAsS1PnRD2+jtlI0DzvKHt7B
+MWd8hnoUKhMeZ9TNmo+8CpsAtXZcBho0zPGz/R8NlJhAWpdAZ1CmcPo83EW86Yq7
+BxQUKnNHcwj2eYhGBBARCAAGBQJRZrpQAAoJEIjl1zPdiZYQSxAAoLsCMV2tvKnH
+DJc1tTlMPv1/pbvQAJ9K90i+LtvqCSv9l3otcq/2VpvAlbkCDQRRPZQsARAA4jxY
+mbTHwmMjqSizlMJYNuGOpIidEdx9zQ5gzOr431/VfWq4S+VhMDhs15j9lyml0y4o
+k215VRFwrAREDg6UPMr7ajLmBQGau0FcbvZJ90l4NjXp5p0NEE/qOb9UEHT7EGkE
+haZ1ekkWFTWCgsy7rRXfZLxB6sk7pzLCDshyW3zjIakWAnpQ5j5obiDy708pReAu
+GB94NSyb1HoW/xGsGgvvCw4r0w3xPStwF1PhmScE6NTBIfLliea3pl8vhKPlCh54
+Hk7I8QGjo1ETlRP4Qll1ZxHJ8u25f/taRES2Aw8Hi7j0EVcZ6MT9JWTI83yUcnUl
+ZPZS2HyeWcUj+8nUC8W4N8An+aNps9l/21inIl2TbGo3Yn1JQLnA1YCoGwC34g8Q
+ZTJhElEQBN0X29ayWW6OdFx8MDvllbBVymmKq2lK1U55mQTfDli7S3vfGz9Gp/oQ
+wZ8bQpOeUkc5hbZszYwP4RX+68xDPfn+M9udl+qW9wu+LyePbW6HX90LmkhNkkY2
+ZzUPRPDHZANU5btaPXc2H7edX4y4maQaxenqD0lGh9LGz/mps4HEZtCI5CY8o0uC
+MF3lT0XfXhuLksr7Pxv57yue8LLTItOJd9Hmzp9G97SRYYeqU+8lyNXtU2PdrLLq
+7QHkzrsloG78lCpQcalHGACJzrlUWVP/fN3Ht3kAEQEAAYkCHwQYAQIACQUCUT2U
+LAIbDAAKCRAVz00Yr090IbhWEADbr50XOEXMIMGRLe+YMjeMX9NG4jxs0jZaWHc/
+WrGR+CCSUb9r6aPXeLo+45949uEfdSsBpbaEdNWxF5Vr1CSjuO5siIlgDjmT655v
+oXo67xVpEN4HhMrxugDJfCa6z97P0+MLPdDxim57uNqkam9XIq9hKQaurxMAECDP
+mlEXI4QT3eu5qw5/knMzDMZj4Vi6hovLwvvAeLHO/jsyfIdNmhBGU2RWCEZ9uo/M
+eerPHtRPfg74g+9PPfP6nyHD2Wes6yGdoVQwtPNAQD6Cj7EaA2xdZYLJ7/jW6yiP
+u98FFWP74FN2dlyEA2uVziLsfBrgpS4ltVOlrO2YzkkqUGrybzbLpj6eeHx+Cd7w
+cjI8CalsqtL6cG8cUEjtWQUHyTbQWAgG5VPEgIAVhJ6RTZ26i/G+4J8neKyRs4vz
++57UGwY6zI4AB1ZcWGEE3Bf+CDEDgmnPLSwbnHefK9IljT9XU98PelSryUO/5UPw
+7leE0akXKB4DtekToO226px1VnGp3Bov1GBGvpHvL2WizEwdk+nfk8LtrLzej+9F
+tIcq3uIrYnsac47Pf7p0otcFeTJTjSq3krCaoG4Hx0zGQG2ZFpHrSrZTVy6lxvId
+fi0beMgY6h78p6M9eYZHQHc02DjFkQXNbXb5c6gCHESH5PXwPU4jQEE7Ib9J6sbk
+7ZT2Mw==
+=Wi8g
+-----END PGP PUBLIC KEY BLOCK-----