Skip to content

Commit a7164e8

Browse files
Upgrading Cmake, adding arm-none-eabi (#49)
Upgrading Cmake to 3.30 Adding arm-none-eabi-gcc toolchains
1 parent 505b590 commit a7164e8

13 files changed

+169
-21
lines changed

README.md

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,16 @@ like [libcanard](https://github.com/OpenCyphal/libcanard) and
2323

2424
#### Supported Versions
2525

26-
| tag | Python | Gcc | Clang | Cmake | Platforms | Other Utilities |
27-
|----------|--------|-----|-------|-------|-----------|-----------------|
28-
| [ts22.4.8](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 12.3.0 | 18.1.3 | 3.22.1 | <ul><li>linux/amd64</li><li>linux/arm64</li></ul> | <ul><li>qemu</li><li>can-utils</li><li>doxygen 1.10.0</li><li>nvm</li><li>node 20.x</li><li>nox</li><li>govr</li><li>gcc-multilib (amd64 only)</li></ul> |
29-
| [ts22.4.7](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 12.3.0 | 18.1.3 | 3.22.1 | <ul><li>linux/amd64</li><li>linux/arm64</li></ul> | <ul><li>qemu</li><li>can-utils</li><li>doxygen 1.10.0</li><li>nvm</li><li>node 20.x</li><li>nox</li><li>govr</li></ul> |
30-
| [ts22.4.6](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.4.0 | 18.0.0 | 3.22.1 | <ul><li>linux/amd64</li><li>linux/arm64</li></ul> | <ul><li>qemu</li><li>can-utils</li><li>doxygen 1.10.0</li><li>nvm</li><li>node 20.x</li><li>nox</li><li>govr</li></ul> |
31-
| [ts22.4.5](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.4.0 | 18.0.0 | 3.22.1 | <ul><li>linux/amd64</li><li>linux/arm64</li></ul> | <ul><li>qemu</li><li>can-utils</li><li>doxygen 1.9.6</li><li>nvm</li><li>node 16.20.0</li><li>nox</li><li>govr</li></ul> |
32-
| [ts22.4.3](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | 15.0.7 | 3.22.1 | <ul><li>linux/amd64</li></ul> | <ul><li>qemu</li><li>can-utils</li><li>doxygen 1.9.6</li><li>nvm</li><li>node 16.20.0</li><li>nox</li><li>govr</li></ul> |
33-
| [ts22.4.2](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | 15.0.7 | 3.22.1 | <ul><li>linux/amd64</li></ul> | <ul><li>qemu</li><li>can-utils</li><li>~~sonar-scanner~~</li><li>doxygen 1.9.6</li><li>nvm</li><li>node 16.20.0</li></ul> |
34-
| [ts22.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | 15.0.7 | 3.22.1 | <ul><li>linux/amd64</li></ul> | <ul><li>qemu</li><li>can-utils</li><li>sonar-scanner</li><li>doxygen 1.9.6</li></ul> |
26+
| tag | Python | GCC (native) | GCC (arm-none-eabi) | Clang (native) | Cmake | Host Platforms | Other Utilities |
27+
|----------|--------|--------------|---------------------|----------------|-------|----------------|-----------------|
28+
| [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 | <ul><li>linux/amd64</li><li>linux/arm64</li></ul> | <ul><li>qemu</li><li>can-utils</li><li>doxygen 1.10.0</li><li>nvm</li><li>node 20.x</li><li>nox</li><li>govr</li><li>gcc-multilib (amd64 only)</li></ul> |
29+
| [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 | <ul><li>linux/amd64</li><li>linux/arm64</li></ul> | <ul><li>qemu</li><li>can-utils</li><li>doxygen 1.10.0</li><li>nvm</li><li>node 20.x</li><li>nox</li><li>govr</li><li>gcc-multilib (amd64 only)</li></ul> |
30+
| [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 | <ul><li>linux/amd64</li><li>linux/arm64</li></ul> | <ul><li>qemu</li><li>can-utils</li><li>doxygen 1.10.0</li><li>nvm</li><li>node 20.x</li><li>nox</li><li>govr</li></ul> |
31+
| [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 | <ul><li>linux/amd64</li><li>linux/arm64</li></ul> | <ul><li>qemu</li><li>can-utils</li><li>doxygen 1.10.0</li><li>nvm</li><li>node 20.x</li><li>nox</li><li>govr</li></ul> |
32+
| [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 | <ul><li>linux/amd64</li><li>linux/arm64</li></ul> | <ul><li>qemu</li><li>can-utils</li><li>doxygen 1.9.6</li><li>nvm</li><li>node 16.20.0</li><li>nox</li><li>govr</li></ul> |
33+
| [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 | <ul><li>linux/amd64</li></ul> | <ul><li>qemu</li><li>can-utils</li><li>doxygen 1.9.6</li><li>nvm</li><li>node 16.20.0</li><li>nox</li><li>govr</li></ul> |
34+
| [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 | <ul><li>linux/amd64</li></ul> | <ul><li>qemu</li><li>can-utils</li><li>~~sonar-scanner~~</li><li>doxygen 1.9.6</li><li>nvm</li><li>node 16.20.0</li></ul> |
35+
| [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 | <ul><li>linux/amd64</li></ul> | <ul><li>qemu</li><li>can-utils</li><li>sonar-scanner</li><li>doxygen 1.9.6</li></ul> |
3536

3637

3738

toolshed/Dockerfile

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,15 @@ ENV LC_ALL=en_US.UTF-8
2323
# +---------------------------------------------------------------------------+
2424
FROM base AS provisioning
2525
WORKDIR /tmp
26+
ADD kitware-archive-latest.asc .
2627
ADD pre-provision.sh ./pre-provision.sh
2728
ADD provision.sh ./provision.sh
2829
ADD provision-${TARGETARCH}.sh ./provision-${TARGETARCH}.sh
2930
ADD post-provision.sh ./post-provision.sh
3031

32+
RUN apt update
3133
RUN ./pre-provision.sh
34+
RUN apt update
3235
RUN ./provision.sh
3336
RUN ./provision-${TARGETARCH}.sh
3437
RUN ./post-provision.sh
@@ -127,6 +130,35 @@ RUN ./gcc-select.sh 11 1
127130
RUN ./gcc-select.sh 12 99
128131
RUN update-alternatives --display gcc
129132

133+
# +---------------------------------------------------------------------------+
134+
# | arm-none-eabi-gcc
135+
# +---------------------------------------------------------------------------+
136+
FROM gcc-select AS arm-none-eabi-arm64
137+
ARG GCC_HOST_VERSION=aarch64
138+
139+
FROM gcc-select AS arm-none-eabi-amd64
140+
ARG GCC_HOST_VERSION=x86_64
141+
142+
FROM arm-none-eabi-${TARGETARCH} AS arm-none-eabi
143+
WORKDIR /tmp
144+
COPY cached-download.sh .
145+
146+
ARG ARM_NONE_EABI_VERSION=13.3.rel1
147+
ARG ARM_NONE_EABI_CHECKSUM_FILE=arm-gnu-toolchain-${ARM_NONE_EABI_VERSION}-${GCC_HOST_VERSION}-arm-none-eabi.tar.xz.sha256asc
148+
149+
COPY ${ARM_NONE_EABI_CHECKSUM_FILE} .
150+
RUN --mount=type=cache,target=/arm-none-eabi-download \
151+
./cached-download.sh \
152+
--cache-target "/arm-none-eabi-download" \
153+
--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" \
154+
--download-to-file "/arm-none-eabi-download/arm-gnu-toolchain-${ARM_NONE_EABI_VERSION}-${GCC_HOST_VERSION}-arm-none-eabi.tar.xz" \
155+
--checksums "/tmp/${ARM_NONE_EABI_CHECKSUM_FILE}" \
156+
--algorithm 256 \
157+
--unpack-dir "/opt"
158+
159+
ADD arm-none-eabi-gcc-select.sh ./arm-none-eabi-gcc-select.sh
160+
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/
161+
RUN update-alternatives --display arm-none-eabi-gcc
162+
130163
# LEAVE THE WORKDIR AS /repo
131164
WORKDIR /repo
132-
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
c8824bffd057afce2259f7618254e840715f33523a3d4e4294f471208f976764 arm-gnu-toolchain-13.3.rel1-aarch64-arm-none-eabi.tar.xz
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
95c011cee430e64dd6087c75c800f04b9c49832cc1000127a92a97f9c8d83af4 arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/bin/bash
2+
3+
GCC_VERSION=${1}
4+
5+
setup_gcc_alternatives()
6+
{
7+
local version=${1}
8+
local priority=${2}
9+
local group=${3}
10+
local members=${4}
11+
local path=${5}
12+
local cmdln
13+
14+
cmdln="--verbose --install /usr/bin/${group} ${group} ${path}${group}-${version} ${priority}"
15+
for member in ${members}; do
16+
cmdln="${cmdln} --slave ${path}${member} ${member} ${path}${member}-${version}"
17+
done
18+
update-alternatives ${cmdln}
19+
}
20+
21+
GCC_ALTERNATIVES_PRI=${2}
22+
GCC_ALTERNATIVES_PATH=${3}
23+
24+
# setup gcc group
25+
GCC_ALTERNATIVES_GROUP_GCC_CONFIG=""
26+
GCC_ALTERNATIVES_GROUP_GCC_CONFIG="${GCC_ALTERNATIVES_GROUP_GCC_CONFIG} arm-none-eabi-g++"
27+
GCC_ALTERNATIVES_GROUP_GCC_CONFIG="${GCC_ALTERNATIVES_GROUP_GCC_CONFIG} arm-none-eabi-gcc-ar"
28+
GCC_ALTERNATIVES_GROUP_GCC_CONFIG="${GCC_ALTERNATIVES_GROUP_GCC_CONFIG} arm-none-eabi-gcc-nm"
29+
GCC_ALTERNATIVES_GROUP_GCC_CONFIG="${GCC_ALTERNATIVES_GROUP_GCC_CONFIG} arm-none-eabi-gcc-ranlib"
30+
GCC_ALTERNATIVES_GROUP_GCC_CONFIG="${GCC_ALTERNATIVES_GROUP_GCC_CONFIG} arm-none-eabi-gcov"
31+
GCC_ALTERNATIVES_GROUP_GCC_CONFIG="${GCC_ALTERNATIVES_GROUP_GCC_CONFIG} arm-none-eabi-gcov-dump"
32+
GCC_ALTERNATIVES_GROUP_GCC_CONFIG="${GCC_ALTERNATIVES_GROUP_GCC_CONFIG} arm-none-eabi-gcov-tool"
33+
34+
setup_gcc_alternatives "${GCC_VERSION}" "${GCC_ALTERNATIVES_PRI}" "arm-none-eabi-gcc" "${GCC_ALTERNATIVES_GROUP_GCC_CONFIG}" "${GCC_ALTERNATIVES_PATH}"

toolshed/cached-download.sh

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,22 @@ echo_usage() {
2222
echo " -d, --download-url URL URL to download"
2323
echo " -f, --download-to-file NAME The filename to output the download to"
2424
echo " -s, --checksums FILE Checksums file"
25+
echo " -a, --algorithm 512 (default) 224, 256, 384, 512, 512224, 512256"
2526
echo " -u, --unpack-dir DIR Unpack directory"
2627
echo " -t, --tar-args ARGS (optional) Additional arguments for (un)tar command"
2728
echo " -h, --help Show help message"
2829
}
2930

3031
# Check if any required option is unset (except help)
3132
check_options() {
32-
if [[ -z $cache_target || -z $download_url || -z $download_to_file || -z $checksums_file || -z $unpack_dir ]]; then
33+
if [[ -z $cache_target || -z $download_url || -z $download_to_file || -z $checksums_file ]]; then
3334
echo "Error: Missing required options"
3435
echo_usage
3536
exit 1
3637
fi
3738
}
3839

40+
algorithm="512"
3941
tar_args=""
4042

4143
# Parse command line arguments
@@ -72,6 +74,11 @@ while [[ $# -gt 0 ]]; do
7274
shift
7375
shift
7476
;;
77+
-a|--algorithm)
78+
algorithm="$2"
79+
shift
80+
shift
81+
;;
7582
-h|--help)
7683
echo_usage
7784
exit 0
@@ -89,5 +96,10 @@ check_options
8996

9097
cd "$cache_target"
9198
wget --no-config --show-progress --progress=bar:noscroll:force -O "$download_to_file" "$download_url"
92-
sha512sum -c "$checksums_file"
99+
shasum -a $algorithm -c "$checksums_file"
100+
101+
if [[ -z $unpack_dir ]]; then
102+
echo "No --unpack-dir provided. Skipping untar step."
103+
else
93104
tar -xvf "$download_to_file" $tar_args -C "$unpack_dir"
105+
fi

toolshed/gcc-arm-11.2-2022.02-aarch64-arm-none-eabi.sha512.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

toolshed/gcc-arm-11.2-2022.02-aarch64-arm-none-linux-gnueabihf.sha512.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

toolshed/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi.sha512.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

toolshed/gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf.sha512.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)