Skip to content

Commit e26f305

Browse files
#56 adding GCC7 and upgrading to 24.04 (#58)
1 parent 11a2413 commit e26f305

13 files changed

+125
-537
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ like [libcanard](https://github.com/OpenCyphal/libcanard) and
2525

2626
| tag | Python | GCC (native) | GCC (arm-none-eabi) | Clang (native) | Cmake | Host Platforms | Other Utilities |
2727
|----------|--------|--------------|---------------------|----------------|-------|----------------|-----------------|
28+
| [ts24.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | <ul><li>3.12</li><li>3.10</li></ul> | <ul><li>13.3.0</li><li>12.3.0</li><li>11.4.0</li><li>10.5.0</li><li>7.5.0</li></ul>| 13.3.1 | <ul><li>19.1.7</li><li>18.1.8</li></ul> | 3.31.5 | <ul><li>linux/amd64</li><li>linux/arm64</li></ul> | <li>can-utils</li><li>doxygen 1.13.2</li><li>tox</li><li>nox</li><li>govr</li><li>gcc-multilib (amd64 only)</li></ul> |
2829
| [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 | <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> |
2930
| [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> |
3031
| [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> |

toolshed/Dockerfile

Lines changed: 21 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#
22
# Builds the toolshed/ubuntu-22.04 toolchain container.
33
#
4-
FROM ubuntu:22.04 AS base
4+
FROM ubuntu:24.04 AS base
55

66
LABEL org.opencontainers.image.source=https://github.com/OpenCyphal/docker_toolchains
77
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."
@@ -25,48 +25,38 @@ FROM base AS provisioning
2525
WORKDIR /tmp
2626
ADD kitware-archive-latest.asc .
2727
ADD pre-provision.sh ./pre-provision.sh
28+
ADD provision-repositories.sh ./provision-repositories.sh
29+
ADD provision-repositories-${TARGETARCH}.sh ./provision-repositories-${TARGETARCH}.sh
2830
ADD provision.sh ./provision.sh
2931
ADD provision-${TARGETARCH}.sh ./provision-${TARGETARCH}.sh
3032
ADD post-provision.sh ./post-provision.sh
3133

3234
RUN apt update
3335
RUN ./pre-provision.sh
36+
RUN ./provision-repositories.sh
37+
RUN ./provision-repositories-${TARGETARCH}.sh
3438
RUN apt update
3539
RUN ./provision.sh
3640
RUN ./provision-${TARGETARCH}.sh
3741
RUN ./post-provision.sh
3842

39-
# INSTALL THE PATH FOR INTERATIVE SESSIONS
43+
# INSTALL THE PATH FOR INTERACTIVE SESSIONS
4044
RUN echo "export PATH=$PATH" >> ~/.bashrc
4145

4246
# LEAVE THE WORKDIR AS /repo
4347
WORKDIR /repo
4448

45-
# +---------------------------------------------------------------------------+
46-
# | NVM/nodejs
47-
# +---------------------------------------------------------------------------+
48-
FROM provisioning AS node
49-
50-
WORKDIR /tmp
51-
ADD nvm-install.sh ./nvm-install.sh
52-
RUN cat ./nvm-install.sh | bash
53-
ENV NVM_DIR="~/.nvm"
54-
RUN . ~/.nvm/nvm.sh && nvm install v20
55-
56-
# LEAVE THE WORKDIR AS /repo
57-
WORKDIR /repo
58-
5949
# +---------------------------------------------------------------------------+
6050
# | INSTALL PYTHON STUFF
6151
# +---------------------------------------------------------------------------+
62-
FROM node AS python
52+
FROM provisioning AS python
6353
WORKDIR /tmp
6454

65-
RUN pip3 install virtualenv
66-
RUN pip3 install tox
67-
RUN pip3 install nox
68-
RUN pip3 install gcovr
69-
RUN pip3 list
55+
RUN apt-get -y install pipx
56+
RUN echo "export PATH=/root/.local/bin:$PATH" >> ~/.bashrc
57+
RUN pipx install tox
58+
RUN pipx install nox
59+
RUN pipx install gcovr
7060

7161
# LEAVE THE WORKDIR AS /repo
7262
WORKDIR /repo
@@ -80,7 +70,9 @@ WORKDIR /tmp
8070
ADD llvm-install.sh ./llvm-install.sh
8171
ADD llvm-select.sh ./llvm-select.sh
8272
RUN ./llvm-install.sh 18 all
83-
RUN ./llvm-select.sh 18
73+
RUN ./llvm-select.sh 18 18
74+
RUN ./llvm-install.sh 19 all
75+
RUN ./llvm-select.sh 19 99
8476

8577
# LEAVE THE WORKDIR AS /repo
8678
WORKDIR /repo
@@ -94,7 +86,7 @@ RUN mkdir doxygen-Release
9486
RUN mkdir doxygen-Release/build
9587
COPY cached-download.sh .
9688

97-
ARG DOXYGEN_VERSION=1_10_0
89+
ARG DOXYGEN_VERSION=1_13_2
9890

9991
COPY doxygen-Release_${DOXYGEN_VERSION}.sha512.txt .
10092
RUN --mount=type=cache,target=/doxygen-download \
@@ -126,8 +118,11 @@ FROM doxygen AS gcc-select
126118
WORKDIR /tmp
127119

128120
ADD gcc-select.sh ./gcc-select.sh
129-
RUN ./gcc-select.sh 11 1
130-
RUN ./gcc-select.sh 12 99
121+
RUN ./gcc-select.sh 7 7
122+
RUN ./gcc-select.sh 10 10
123+
RUN ./gcc-select.sh 11 11
124+
RUN ./gcc-select.sh 12 12
125+
RUN ./gcc-select.sh 13 99
131126
RUN update-alternatives --display gcc
132127

133128
# +---------------------------------------------------------------------------+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ec9e0c40c87a2a9477203b6df66323ca221468013094980e17965fa5a631d97af6286a66d7010c5ed94b825dd4e7bc8db18a48f30aa48b9a2e4f0ca6d9a5ddf0 doxygen-Release_1_13_2.tar.gz

toolshed/llvm-install.sh

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,9 @@ LLVM_VERSION_PATTERNS[15]="-15"
127127
LLVM_VERSION_PATTERNS[16]="-16"
128128
LLVM_VERSION_PATTERNS[17]="-17"
129129
LLVM_VERSION_PATTERNS[18]="-18"
130-
LLVM_VERSION_PATTERNS[19]=""
130+
LLVM_VERSION_PATTERNS[19]="-19"
131+
LLVM_VERSION_PATTERNS[20]="-20"
132+
LLVM_VERSION_PATTERNS[21]=""
131133

132134
if [ ! ${LLVM_VERSION_PATTERNS[$LLVM_VERSION]+_} ]; then
133135
echo "This script does not support LLVM version $LLVM_VERSION"
@@ -161,9 +163,15 @@ fi
161163

162164
if [[ -z "`apt-key list 2> /dev/null | grep -i llvm`" ]]; then
163165
# Delete the key in the old format
164-
apt-key del AF4F7421
166+
apt-key del AF4F7421 || true
165167
fi
166-
add-apt-repository "${REPO_NAME}"
168+
if [[ "${VERSION_CODENAME}" == "bookworm" ]]; then
169+
# add it twice to workaround:
170+
# https://github.com/llvm/llvm-project/issues/62475
171+
add-apt-repository -y "${REPO_NAME}"
172+
fi
173+
174+
add-apt-repository -y "${REPO_NAME}"
167175
apt-get update
168176
PKG="clang-$LLVM_VERSION lldb-$LLVM_VERSION lld-$LLVM_VERSION clangd-$LLVM_VERSION"
169177
if [[ $ALL -eq 1 ]]; then

toolshed/llvm-select.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ setup_llvm_alternatives()
2020
update-alternatives ${cmdln}
2121
}
2222

23-
LLVM_ALTERNATIVES_PRI=99
23+
LLVM_ALTERNATIVES_PRI=${2}
2424
LLVM_ALTERNATIVES_PATH="/usr/bin/"
2525

2626
# setup llvm-config group

0 commit comments

Comments
 (0)