diff --git a/README.md b/README.md
index 2c3f713..bb8f3a8 100644
--- a/README.md
+++ b/README.md
@@ -23,15 +23,16 @@ like [libcanard](https://github.com/OpenCyphal/libcanard) and
#### Supported Versions
-| tag | Python | Gcc | Clang | Cmake | Platforms | Other Utilities |
-|----------|--------|-----|-------|-------|-----------|-----------------|
-| [ts22.4.8](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 12.3.0 | 18.1.3 | 3.22.1 |
| - qemu
- can-utils
- doxygen 1.10.0
- nvm
- node 20.x
- nox
- govr
- gcc-multilib (amd64 only)
|
-| [ts22.4.7](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 12.3.0 | 18.1.3 | 3.22.1 | | - qemu
- can-utils
- doxygen 1.10.0
- nvm
- node 20.x
- nox
- govr
|
-| [ts22.4.6](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.4.0 | 18.0.0 | 3.22.1 | | - qemu
- can-utils
- doxygen 1.10.0
- nvm
- node 20.x
- nox
- govr
|
-| [ts22.4.5](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.4.0 | 18.0.0 | 3.22.1 | | - qemu
- can-utils
- doxygen 1.9.6
- nvm
- node 16.20.0
- nox
- govr
|
-| [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.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.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
|
+| tag | Python | GCC (native) | GCC (arm-none-eabi) | Clang (native) | Cmake | Host Platforms | Other Utilities |
+|----------|--------|--------------|---------------------|----------------|-------|----------------|-----------------|
+| [ts22.4.9](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 12.3.0 | 13.3.1 | 18.1.3 | 3.30.1 | | - qemu
- can-utils
- doxygen 1.10.0
- nvm
- node 20.x
- nox
- govr
- gcc-multilib (amd64 only)
|
+| [ts22.4.8](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 12.3.0 | (N/A) | 18.1.3 | 3.22.1 | | - qemu
- can-utils
- doxygen 1.10.0
- nvm
- node 20.x
- nox
- govr
- gcc-multilib (amd64 only)
|
+| [ts22.4.7](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 12.3.0 | (N/A) | 18.1.3 | 3.22.1 | | - qemu
- can-utils
- doxygen 1.10.0
- nvm
- node 20.x
- nox
- govr
|
+| [ts22.4.6](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.4.0 | (N/A) | 18.0.0 | 3.22.1 | | - qemu
- can-utils
- doxygen 1.10.0
- nvm
- node 20.x
- nox
- govr
|
+| [ts22.4.5](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.4.0 | (N/A) | 18.0.0 | 3.22.1 | | - qemu
- can-utils
- doxygen 1.9.6
- nvm
- node 16.20.0
- nox
- govr
|
+| [ts22.4.3](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | (N/A) | 15.0.7 | 3.22.1 | | - qemu
- can-utils
- doxygen 1.9.6
- nvm
- node 16.20.0
- nox
- govr
|
+| [ts22.4.2](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | (N/A) | 15.0.7 | 3.22.1 | | - qemu
- can-utils
- ~~sonar-scanner~~
- doxygen 1.9.6
- nvm
- node 16.20.0
|
+| [ts22.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | (N/A) | 15.0.7 | 3.22.1 | | - qemu
- can-utils
- sonar-scanner
- doxygen 1.9.6
|
diff --git a/toolshed/Dockerfile b/toolshed/Dockerfile
index f06ae16..14ab12b 100644
--- a/toolshed/Dockerfile
+++ b/toolshed/Dockerfile
@@ -23,12 +23,15 @@ 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.sh ./provision.sh
ADD provision-${TARGETARCH}.sh ./provision-${TARGETARCH}.sh
ADD post-provision.sh ./post-provision.sh
+RUN apt update
RUN ./pre-provision.sh
+RUN apt update
RUN ./provision.sh
RUN ./provision-${TARGETARCH}.sh
RUN ./post-provision.sh
@@ -127,6 +130,35 @@ RUN ./gcc-select.sh 11 1
RUN ./gcc-select.sh 12 99
RUN update-alternatives --display gcc
+# +---------------------------------------------------------------------------+
+# | arm-none-eabi-gcc
+# +---------------------------------------------------------------------------+
+FROM gcc-select AS arm-none-eabi-arm64
+ARG GCC_HOST_VERSION=aarch64
+
+FROM gcc-select AS arm-none-eabi-amd64
+ARG GCC_HOST_VERSION=x86_64
+
+FROM arm-none-eabi-${TARGETARCH} AS arm-none-eabi
+WORKDIR /tmp
+COPY cached-download.sh .
+
+ARG ARM_NONE_EABI_VERSION=13.3.rel1
+ARG ARM_NONE_EABI_CHECKSUM_FILE=arm-gnu-toolchain-${ARM_NONE_EABI_VERSION}-${GCC_HOST_VERSION}-arm-none-eabi.tar.xz.sha256asc
+
+COPY ${ARM_NONE_EABI_CHECKSUM_FILE} .
+RUN --mount=type=cache,target=/arm-none-eabi-download \
+ ./cached-download.sh \
+ --cache-target "/arm-none-eabi-download" \
+ --download-url "https://developer.arm.com/-/media/Files/downloads/gnu/${ARM_NONE_EABI_VERSION}/binrel/arm-gnu-toolchain-${ARM_NONE_EABI_VERSION}-${GCC_HOST_VERSION}-arm-none-eabi.tar.xz" \
+ --download-to-file "/arm-none-eabi-download/arm-gnu-toolchain-${ARM_NONE_EABI_VERSION}-${GCC_HOST_VERSION}-arm-none-eabi.tar.xz" \
+ --checksums "/tmp/${ARM_NONE_EABI_CHECKSUM_FILE}" \
+ --algorithm 256 \
+ --unpack-dir "/opt"
+
+ADD arm-none-eabi-gcc-select.sh ./arm-none-eabi-gcc-select.sh
+RUN ./arm-none-eabi-gcc-select.sh 13.3.1 1 /opt/arm-gnu-toolchain-${ARM_NONE_EABI_VERSION}-${GCC_HOST_VERSION}-arm-none-eabi/bin/
+RUN update-alternatives --display arm-none-eabi-gcc
+
# LEAVE THE WORKDIR AS /repo
WORKDIR /repo
-
diff --git a/toolshed/arm-gnu-toolchain-13.3.rel1-aarch64-arm-none-eabi.tar.xz.sha256asc b/toolshed/arm-gnu-toolchain-13.3.rel1-aarch64-arm-none-eabi.tar.xz.sha256asc
new file mode 100644
index 0000000..240c604
--- /dev/null
+++ b/toolshed/arm-gnu-toolchain-13.3.rel1-aarch64-arm-none-eabi.tar.xz.sha256asc
@@ -0,0 +1 @@
+c8824bffd057afce2259f7618254e840715f33523a3d4e4294f471208f976764 arm-gnu-toolchain-13.3.rel1-aarch64-arm-none-eabi.tar.xz
diff --git a/toolshed/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz.sha256asc b/toolshed/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz.sha256asc
new file mode 100644
index 0000000..fc170b3
--- /dev/null
+++ b/toolshed/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz.sha256asc
@@ -0,0 +1 @@
+95c011cee430e64dd6087c75c800f04b9c49832cc1000127a92a97f9c8d83af4 arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz
diff --git a/toolshed/arm-none-eabi-gcc-select.sh b/toolshed/arm-none-eabi-gcc-select.sh
new file mode 100755
index 0000000..dbbf058
--- /dev/null
+++ b/toolshed/arm-none-eabi-gcc-select.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+GCC_VERSION=${1}
+
+setup_gcc_alternatives()
+{
+ local version=${1}
+ local priority=${2}
+ local group=${3}
+ local members=${4}
+ local path=${5}
+ local cmdln
+
+ cmdln="--verbose --install /usr/bin/${group} ${group} ${path}${group}-${version} ${priority}"
+ for member in ${members}; do
+ cmdln="${cmdln} --slave ${path}${member} ${member} ${path}${member}-${version}"
+ done
+ update-alternatives ${cmdln}
+}
+
+GCC_ALTERNATIVES_PRI=${2}
+GCC_ALTERNATIVES_PATH=${3}
+
+# setup gcc group
+GCC_ALTERNATIVES_GROUP_GCC_CONFIG=""
+GCC_ALTERNATIVES_GROUP_GCC_CONFIG="${GCC_ALTERNATIVES_GROUP_GCC_CONFIG} arm-none-eabi-g++"
+GCC_ALTERNATIVES_GROUP_GCC_CONFIG="${GCC_ALTERNATIVES_GROUP_GCC_CONFIG} arm-none-eabi-gcc-ar"
+GCC_ALTERNATIVES_GROUP_GCC_CONFIG="${GCC_ALTERNATIVES_GROUP_GCC_CONFIG} arm-none-eabi-gcc-nm"
+GCC_ALTERNATIVES_GROUP_GCC_CONFIG="${GCC_ALTERNATIVES_GROUP_GCC_CONFIG} arm-none-eabi-gcc-ranlib"
+GCC_ALTERNATIVES_GROUP_GCC_CONFIG="${GCC_ALTERNATIVES_GROUP_GCC_CONFIG} arm-none-eabi-gcov"
+GCC_ALTERNATIVES_GROUP_GCC_CONFIG="${GCC_ALTERNATIVES_GROUP_GCC_CONFIG} arm-none-eabi-gcov-dump"
+GCC_ALTERNATIVES_GROUP_GCC_CONFIG="${GCC_ALTERNATIVES_GROUP_GCC_CONFIG} arm-none-eabi-gcov-tool"
+
+setup_gcc_alternatives "${GCC_VERSION}" "${GCC_ALTERNATIVES_PRI}" "arm-none-eabi-gcc" "${GCC_ALTERNATIVES_GROUP_GCC_CONFIG}" "${GCC_ALTERNATIVES_PATH}"
diff --git a/toolshed/cached-download.sh b/toolshed/cached-download.sh
index 898b06b..581425d 100755
--- a/toolshed/cached-download.sh
+++ b/toolshed/cached-download.sh
@@ -22,6 +22,7 @@ echo_usage() {
echo " -d, --download-url URL URL to download"
echo " -f, --download-to-file NAME The filename to output the download to"
echo " -s, --checksums FILE Checksums file"
+ echo " -a, --algorithm 512 (default) 224, 256, 384, 512, 512224, 512256"
echo " -u, --unpack-dir DIR Unpack directory"
echo " -t, --tar-args ARGS (optional) Additional arguments for (un)tar command"
echo " -h, --help Show help message"
@@ -29,13 +30,14 @@ echo_usage() {
# Check if any required option is unset (except help)
check_options() {
- if [[ -z $cache_target || -z $download_url || -z $download_to_file || -z $checksums_file || -z $unpack_dir ]]; then
+ if [[ -z $cache_target || -z $download_url || -z $download_to_file || -z $checksums_file ]]; then
echo "Error: Missing required options"
echo_usage
exit 1
fi
}
+algorithm="512"
tar_args=""
# Parse command line arguments
@@ -72,6 +74,11 @@ while [[ $# -gt 0 ]]; do
shift
shift
;;
+ -a|--algorithm)
+ algorithm="$2"
+ shift
+ shift
+ ;;
-h|--help)
echo_usage
exit 0
@@ -89,5 +96,10 @@ check_options
cd "$cache_target"
wget --no-config --show-progress --progress=bar:noscroll:force -O "$download_to_file" "$download_url"
-sha512sum -c "$checksums_file"
+shasum -a $algorithm -c "$checksums_file"
+
+if [[ -z $unpack_dir ]]; then
+echo "No --unpack-dir provided. Skipping untar step."
+else
tar -xvf "$download_to_file" $tar_args -C "$unpack_dir"
+fi
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
deleted file mode 100644
index b43d91c..0000000
--- a/toolshed/gcc-arm-11.2-2022.02-aarch64-arm-none-eabi.sha512.txt
+++ /dev/null
@@ -1 +0,0 @@
-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
deleted file mode 100644
index 53fe507..0000000
--- a/toolshed/gcc-arm-11.2-2022.02-aarch64-arm-none-linux-gnueabihf.sha512.txt
+++ /dev/null
@@ -1 +0,0 @@
-f2acde25fbd5a0e5fcf2eb796942a7fa988dfe2a6190a0505f3b43b57ea3a4eb3b23e51aa35894d551a07a85561374040456826e407a02443daab132937f3be4 gcc-arm-11.2-2022.02-aarch64-arm-none-linux-gnueabihf.tar.xz
diff --git a/toolshed/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi.sha512.txt b/toolshed/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi.sha512.txt
deleted file mode 100644
index be3fb89..0000000
--- a/toolshed/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi.sha512.txt
+++ /dev/null
@@ -1 +0,0 @@
-16696eaf4bc65c079367f4a3e9d3cbd9f5795941cb0915d04ee431f0befb630f6c0106a702d81f0ec693dc9a29295d415966bb80d5f9270f9f896c01099f6dc5 gcc-arm-11.2-2022.02-x86_64-arm-none-eabi.tar.xz
diff --git a/toolshed/gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf.sha512.txt b/toolshed/gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf.sha512.txt
deleted file mode 100644
index 46e7667..0000000
--- a/toolshed/gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf.sha512.txt
+++ /dev/null
@@ -1 +0,0 @@
-059e660d85cde9b284c6d2ce633dfb4fb9cd29c8db2797a6d3dbd435c722fa50d810f8123784c71b4fb3fbe7b91ac81bfb733c8d09ec67b5afc61b0fb2e2abba gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf.tar.xz
diff --git a/toolshed/kitware-archive-latest.asc b/toolshed/kitware-archive-latest.asc
new file mode 100644
index 0000000..a91f0b8
--- /dev/null
+++ b/toolshed/kitware-archive-latest.asc
@@ -0,0 +1,64 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBGSV3+MBEADR4fzupSr78FqJmyiutFr5pPiRW3qkOCDIYwUPxrj/rm/F9bjv
+vTKe90bgl7hJKGK25j4QuYbJpLZe5sbYLHVx3GeuXdodkHhY87rajFboJBMlPdTZ
+7DgEaSLYGnO0XvXa0l23uKw/kMTimkq6p4etgC2erOeTYW9AafLzRfDUzgkbJN9s
+Z/hNZHwUpLiiQAV6hSwfWELxk6ThWPI440PdXLmA3T3r/zkE6kRzvxcJfR1crj5e
+0pQH/fpSSg+CG8kbKn3zISW/7Hyr4rrty39OfqsoZf6ecTP0thRXUlwy5PMrUwM6
+pRnmkJ60+P5vlctwIZCo2Vz9z2oq2k6CtFBT9xUGJr42b5syX3rs2aZ+b9cEQADG
+9uZYOaY5MdyNrvSicRb4JZwJu/itF/YXd8LEQpryiRK39wkEIEgMm+/hcy2WueYb
+IYldFrSSESFcCp9aZKlqPxgW4N6Yp1u/VdrZP2W5JT/kgLHEZOhPc1eWPQu2IXUy
+/EaN/3+Jswab0gYhytwTJ08mqzW/9o/HTT8zo5xKX59RKj0YdwO4IOjVugQPc1Fk
+W8yLtRrcKd1wo2Li3mC5IekrLqMB1zW+S3k5lJnFT9TK1hwwTMQakQhfjz9Dq8B9
+Z6whZiIVMB+ZfLp40O2IObZjc+6K2Y22HH+w9wvjnbfhnipTN/VV7XrTgwARAQAB
+tEVLaXR3YXJlIEFwdCBBcmNoaXZlIEF1dG9tYXRpYyBTaWduaW5nIEtleSAoMjAy
+NCkgPGRlYmlhbkBraXR3YXJlLmNvbT6JAlQEEwEKAD4WIQR85lNmXOjrO09D1l+z
+NMhhfcKeVgUCZJXf4wIbAwUJBaOagAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK
+CRCzNMhhfcKeVt0EEACmc7poWYcccPgJxjBQYJdZ7drJPbSCzw2ZSllBj5EaLdv+
+ShkfqFphtfO3txTLJazHoj6mI+kdegBZCsS3E2oKTYK3rzxNXvLZvc6NebJSBEJj
+i8lSpai1Ik0BRoFr+GECaFJTwAovc4g5/EzhAJ8tMXsbjZluxq7ae0xST+9Axon7
+tBLG+pAmdWXDBLwfy983UcNT/DRJgqF/dPRToy81LTQEaLxu8jwr69YTkD2ohlN2
+0FUIuQCnurThN31im/VDR+M0WEd+pVsh+eGyDP2lDoSxU50RjY8WbwSL9qpRyOte
+hNzUanGRYvn+Luws7CViqOZqV/JfHaADZUB7f1vNtA4gRb/KKuw56ldY+FkDABPx
+gsMAuimBH2a5ZEiVhtFypZYDA9oYamKC2Y+d3ueeXKOeHrPGnrUGhr/ZXaYKr6eZ
+yIKvzAGP8BW64baArupGVVMEf8EuBmhLx0mJNGmEdMMlkpAw9GdI67Pr/EPAPhKd
+Sc9HWpGP/qFV+DfWdZvQ8F5HhCpD6EQy35S9Op43MHWkLtY5MHorB1o9yiW6cPSm
+e5+UeDa03IHT05VviPPNJm4rUGjlJY3Zqh3w+zP0baQXSfncJ2qx7EZPbDkiwQGI
+TbFjaMjD/x6PQUxJF/Qk1J2jSjNhgPcyv/GIrGIh3ZLubLK+ZYf1OBDeQLbVurkC
+DQRkld/qARAAwr4j0mOOcDL204F12mqTIGLgYLqdG5CKa0DFEh8TmoyyXuD6lRwE
+c0dN0Vox4Fe5/AXlBKhugyCjHwBYHzXpKEKOdWEiW5lk29zSQCHYFnQzFSfU4DyR
+jmZ4EqschM9K+rnyR2MeYLbkeQmCc1dIGmljyeQ37SaLZTugufTm56vUZ0hm9ZsY
+E7zlNg3gkyHG5XDh4/EEMJ3sC4EyEGJh9Y8DtkZzzJkwKX2uRvG++WTOLlXibXbu
+Th9XauNnGn+sSR68ocBpLzYA0jLB8gVKWLmqxrZd9FyynErIdtZv7QNiof7dQ2UL
+RZfQTuXFnlKmqIZY7Ox6jqUBy7xMORDq1dtSn61Jhrmvj58FO1R48kDWn7vaLoeg
+b8lFVqI0NWXBLtOiU5XSyf+4FZdfPIw4Hazhfk/5uzi5vp9DghQZVO6j3TazgsSb
+29lU7ci+Znvz1M6Pjkah8E9DVf8mR0RE969b5Ut2OSDnRB94CjIwr5FDbNDluf47
+MRn8mdk+ptKmYSZQ8N9y+PeDNzjEM5w++HYA7eYKqql2g2UlPHmrVwNT3Q3LHLp8
+BuQ9MBoWIxb6uzSDGnTmqRz96Coq9M5o54cq4d7+OhLh48sfAgJNCNSZk8uFSO/i
+lkhCtIkruLz5iptRuyehPEMCxQTGxf7a4uBgVvuAFPDVQUVNEWVmBakAEQEAAYkE
+cgQYAQoAJhYhBHzmU2Zc6Os7T0PWX7M0yGF9wp5WBQJkld/qAhsCBQkFo5qAAkAJ
+ELM0yGF9wp5WwXQgBBkBCgAdFiEEIgq8L25B2+VoeloBGhJweakvCe0FAmSV3+oA
+CgkQGhJweakvCe10hxAAwM/7Ryq3zhFU25DpYCwzam6wcAkHCXAKdsBYJPmtrBhn
+Zx2HnGPBCfgwK7jayVPsfqgjuIvO3sR0kKKyK4BxI68LZr4d+VIDPZJ9HrDe4PqM
+7hW+cv6AlZB6zpRClST8myctjAEIWtDY6TFzPyniSRJ0fdDfPsv9ixGvHA/AO8FD
+DJUIzSv6+7m4YXFJamXl3diPz3h4ClySTwuQfCr7tssw16SYiJeQHDBDwiQaGPek
+zWzT+HyOlvFoEqh9KmTJatvvqCx+vxjuvKsgQxJZy7MgMNgPR3vL+1KKg4JhCibZ
+wdYO8+z3FA4nJl7w3KaQnkeyrpHB7c8S2961vicE+Vbe6RZDw2OoDqP4qY8QIs30
+8Ahi7nHjaEFkacQg/SPW1lt7x1zw+ywdxzyVtF340T/rhU4cjLRQ77V8ZczanBgt
+nCVS+h2NaOnJsKkuyWPbXYY2VE54GP45yAr3YV+sdRjQI7FQPKOP95JMw0w1i1jT
+DF5oOPguBnwXkJFKMeBzQqYyOPUSGS4znffvPVI5moVolH6RWJ1fwb8TmI3x+vtc
+yQ3QDu7jz9c66Y6einO7IADE0E61OlnwAISs5FeJ6mD2KUmEn3JesbfbVN7zK29X
+7pJCgHq7sZj8G1FOj6FofvKy5N2OK3m0PGyC9qzawGtvyiAp2qbPMhbLOUDtSXy9
+OA//cy/ozt8pbR2HIEmXt9Dw3QHxS5+mBoVb9Jg1nUnAi3VioFgYIO757xnLankF
++Avb7n4fSo6ifc9SrMgU5DmuuAq8pXxHruq/o2ZbaP5LnnEqg1zimvzZDz8hldIi
+JDpZXxhMosZ8s+t2H5XZABTWlq7t/lY/EK8cX+T9V+cJ5oH4ivtm2pfdeOUCQe/c
+Rovdjwr7IUKpABTKk/uRhMzlhtMuwM4K1sWSzZe5o9J6lwhgFlG3FfGfpbwWmdly
+74qGusUYYUQzrmS4mf0GjRvRwmSsqpb/S9O3UiilCq8yMfdeRi2INTgszVGZW29g
+RNcvxu2ouj54Y8pZVggVWSmYnxanycjGxteBGYCxhLQXphSEgkFJK/eDC6L0Wv02
+ThTgkJSt83CJnx+3wel3Z5ZLgsk+yy9I+kXDNfyLBe1AVZ/4H6cz+8PPO7xmjQA5
+n1rpTBecZWHY5xu7rUZHJZfgHx2ZYtFxOdcIXmcTSaku80gp0yExkA6BI5E+0/kX
+VGVB7Yac5ib8BnmWZpcBJwuhx7lEOhf7EOG0e9njEp7paNAxZXJNjs2gxEMfMfRR
+oPWoCd4KBAatFHyxtB9lM5UtcY15unkFbYD7lYBLdUGnEirzE1reSHy5wR1tGdjr
+0pf13ATLBVuyj9f4oHcbK9abw69hMH3DQa3rHqko1dmWkAs=
+=QrQE
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/toolshed/pre-provision.sh b/toolshed/pre-provision.sh
index 994aead..19c192f 100755
--- a/toolshed/pre-provision.sh
+++ b/toolshed/pre-provision.sh
@@ -21,18 +21,23 @@ set -o pipefail
# +----------------------------------------------------------+
export DEBIAN_FRONTEND=noninteractive
-apt-get update
+apt-get -y install lsb-release
apt-get -y install unzip
apt-get -y install zip
apt-get -y install debconf
+apt-get -y install wget
+apt-get -y install gpg
+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 6AF7F09730B3F0A4
+apt-add-repository 'deb https://apt.kitware.com/ubuntu/ jammy main'
+add-apt-repository -y ppa:deadsnakes/ppa
# setup locales in the container so Python can default to utf-8.
apt-get -y install locales
# from http://jaredmarkell.com/docker-and-locales/
locale-gen en_US.UTF-8
# See Dockerfile for exports
-
-apt-get -y install software-properties-common
-add-apt-repository -y ppa:deadsnakes/ppa
-apt-get update
diff --git a/toolshed/provision.sh b/toolshed/provision.sh
index 81ce501..a0f931a 100755
--- a/toolshed/provision.sh
+++ b/toolshed/provision.sh
@@ -39,4 +39,6 @@ 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++-10
+apt-get -y install g++-11
apt-get -y install g++-12