Skip to content

Commit cd3ed6d

Browse files
committed
tooling: update docker image to use gcc-14 and ubuntu 24.04
1 parent f999b23 commit cd3ed6d

File tree

1 file changed

+72
-53
lines changed

1 file changed

+72
-53
lines changed

Dockerfile

Lines changed: 72 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
1-
FROM ubuntu:22.04
2-
1+
FROM ubuntu:24.04
2+
3+
# Set environment variables
4+
ENV DEBIAN_FRONTEND=noninteractive \
5+
LLVM_VERSION=18 \
6+
GCC_VERSION=14 \
7+
QT_VERSION=5.15.5 \
8+
QT_RELEASE_URL=https://github.com/parker-int64/qt-aarch64-binary/releases/download/5.15.5 \
9+
BAZELISK_URL=https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64 \
10+
BUILDIFIER_URL=https://github.com/bazelbuild/buildtools/releases/latest/download/buildifier-linux-amd64 \
11+
HOME=/root
12+
13+
# Update and install base dependencies
314
RUN apt-get update && apt-get install -y \
415
build-essential \
516
vim \
@@ -31,69 +42,77 @@ RUN apt-get update && apt-get install -y \
3142
libxcb-xkb1 \
3243
libxcb-cursor0 \
3344
locales \
34-
qtbase5-dev \
35-
&& apt-get clean
36-
37-
RUN wget -qO - https://apt.llvm.org/llvm-snapshot.gpg.key | tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc \
38-
&& echo "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main" | tee -a /etc/apt/sources.list.d/llvm.list
39-
40-
RUN apt-get update && apt-get install -y \
41-
llvm-18 \
42-
llvm-18-dev \
43-
clang-18 \
44-
clang-tools-18 \
45-
clang-format-18 \
46-
clang-tidy-18 \
47-
lld-18 \
48-
lldb-18
49-
50-
# Cross-compilation
51-
RUN apt-get install -y \
45+
qtbase5-dev \
5246
gcc-aarch64-linux-gnu \
53-
g++-aarch64-linux-gnu
54-
55-
RUN pip install yamllint
56-
57-
RUN pip install gitlint
58-
59-
RUN curl -fsSL https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/install.sh | sh
47+
g++-aarch64-linux-gnu \
48+
&& rm -rf /var/lib/apt/lists/*
49+
50+
# Add LLVM repository and install LLVM/Clang tools
51+
RUN wget -qO - https://apt.llvm.org/llvm-snapshot.gpg.key | tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc && \
52+
echo "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-${LLVM_VERSION} main" | tee /etc/apt/sources.list.d/llvm.list && \
53+
apt-get update && apt-get install -y \
54+
llvm-${LLVM_VERSION} \
55+
llvm-${LLVM_VERSION}-dev \
56+
clang-${LLVM_VERSION} \
57+
clangd-${LLVM_VERSION} \
58+
clang-tools-${LLVM_VERSION} \
59+
clang-format-${LLVM_VERSION} \
60+
clang-tidy-${LLVM_VERSION} \
61+
lld-${LLVM_VERSION} \
62+
lldb-${LLVM_VERSION} \
63+
&& rm -rf /var/lib/apt/lists/*
64+
65+
# Set up GCC
66+
RUN apt-get update && apt-get install -y \
67+
gcc-${GCC_VERSION} \
68+
g++-${GCC_VERSION} \
69+
&& rm -rf /var/lib/apt/lists/*
70+
71+
# Set up alternatives for LLVM and GCC tools
72+
RUN update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${LLVM_VERSION} 100 && \
73+
update-alternatives --install /usr/bin/clangd clangd /usr/bin/clangd-${LLVM_VERSION} 100 && \
74+
update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-${LLVM_VERSION} 100 && \
75+
update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-${LLVM_VERSION} 100 && \
76+
update-alternatives --install /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-${LLVM_VERSION} 100 && \
77+
update-alternatives --install /usr/bin/llvm-profdata llvm-profdata /usr/bin/llvm-profdata-${LLVM_VERSION} 100 && \
78+
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${GCC_VERSION} 100 && \
79+
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-${GCC_VERSION} 100
80+
81+
# Install Arduino lint, yamllint, and gitlint
82+
RUN curl -fsSL https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/install.sh | sh && \
83+
pip install --break-system-packages yamllint gitlint
6084

6185
# Download and extract precompiled Qt aarch64 libs
62-
ENV RELEASE_URL=https://github.com/parker-int64/qt-aarch64-binary/releases/download/5.15.5
63-
RUN wget ${RELEASE_URL}/qt-5.15.5-aarch64-cross-compile-gcc-5.tar.gz -O /tmp/qt-aarch64-binary.tar.gz && \
86+
RUN wget ${QT_RELEASE_URL}/qt-${QT_VERSION}-aarch64-cross-compile-gcc-5.tar.gz -O /tmp/qt-aarch64-binary.tar.gz && \
6487
mkdir -p /opt/qt && \
65-
tar -xzf /tmp/qt-aarch64-binary.tar.gz -C /opt/qt
88+
tar -xzf /tmp/qt-aarch64-binary.tar.gz -C /opt/qt && \
89+
rm /tmp/qt-aarch64-binary.tar.gz && \
90+
mv /opt/qt/qt-${QT_VERSION}-aarch64/lib/* /usr/lib/aarch64-linux-gnu && \
91+
cp /usr/aarch64-linux-gnu/lib/* /lib/aarch64-linux-gnu && \
92+
cp /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib
6693

67-
# Download and install libzmq3-dev
94+
# Install libzmq3-dev
6895
RUN echo 'deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/release-stable/xUbuntu_22.04/ /' | \
6996
tee /etc/apt/sources.list.d/network:messaging:zeromq:release-stable.list && \
7097
curl -fsSL https://download.opensuse.org/repositories/network:messaging:zeromq:release-stable/xUbuntu_22.04/Release.key | \
7198
gpg --dearmor | tee /etc/apt/trusted.gpg.d/network_messaging_zeromq_release-stable.gpg > /dev/null && \
72-
apt-get update && apt-get install -y libzmq3-dev
73-
74-
RUN rm /tmp/qt-aarch64-binary.tar.gz && \
75-
mv /opt/qt/qt-5.15.5-aarch64/lib/* /usr/lib/aarch64-linux-gnu
99+
apt-get update && apt-get install -y libzmq3-dev && \
100+
rm -rf /var/lib/apt/lists/*
76101

77-
RUN cp /usr/aarch64-linux-gnu/lib/* /lib/aarch64-linux-gnu && \
78-
cp /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib
79-
80-
RUN wget https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64 && \
102+
# Install Bazelisk
103+
RUN wget ${BAZELISK_URL} && \
81104
chmod 755 bazelisk-linux-amd64 && \
82-
mv bazelisk-linux-amd64 /usr/bin/bazelisk
83-
84-
ENV HOME=/root
85-
86-
RUN update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-18 100
87-
88-
RUN update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-18 100
89-
90-
RUN update-alternatives --install /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-18 100
91-
92-
RUN update-alternatives --install /usr/bin/llvm-profdata llvm-profdata /usr/bin/llvm-profdata-18 100
105+
mv bazelisk-linux-amd64 /usr/bin/bazelisk && \
106+
ln -s /usr/bin/bazelisk /usr/bin/bazel
93107

94-
RUN echo "alias bazel='bazelisk'" >> $HOME/.bashrc
108+
# Install Buildifier
109+
RUN wget ${BUILDIFIER_URL} && \
110+
chmod 755 buildifier-linux-amd64 && \
111+
mv buildifier-linux-amd64 /usr/bin/buildifier
95112

96-
RUN echo 'if [ -d "$HOME/bin" ] ; then\n PATH="$HOME/bin:$PATH"\nfi' >> $HOME/.bashrc && \
97-
echo 'if [ -d "$HOME/usr/bin" ] ; then\n PATH="$HOME/usr/bin:$PATH"\nfi' >> $HOME/.bashrc
113+
# Add bin paths to PATH
114+
RUN echo 'if [ -d "$HOME/bin" ]; then PATH="$HOME/bin:$PATH"; fi' >> $HOME/.bashrc && \
115+
echo 'if [ -d "$HOME/usr/bin" ]; then PATH="$HOME/usr/bin:$PATH"; fi' >> $HOME/.bashrc
98116

117+
# Configure Git
99118
RUN git config --global --add safe.directory /Team04

0 commit comments

Comments
 (0)