[Concept,4/5] docker: Update Dockerfile for build compatibility
Commit Message
From: Simon Glass <simon.glass@canonical.com>
Pin trace-cmd dependencies to avoid libtraceevent 1.9+ which requires
BTF kernel headers newer than Jammy's 5.15:
- libtraceevent: b3f5849 (pre-BTF)
- libtracefs: 1.8.1
- trace-cmd: 364faec
Install libtraceevent/libtracefs with prefix=/usr and ldconfig for
cross-platform library path compatibility (arm64 vs amd64).
Update coreboot from 24.08 to 24.12 since Intel took down the ACPICA
download used by 24.08.
Make a few other changes to bring us in line with upstream commit
d75998b476de ("Docker, CI: Add vexpress_fvp / vexpress_fvp_bloblist support")
Update .gitlab-ci.yml to use the new image tag.
Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Simon Glass <simon.glass@canonical.com>
---
.gitlab-ci.yml | 2 +-
tools/docker/Dockerfile | 24 ++++++++++++++++++------
2 files changed, 19 insertions(+), 7 deletions(-)
@@ -27,7 +27,7 @@ default:
- ${DEFAULT_TAG}
# Grab our configured image. The source for this is found
# in the u-boot tree at tools/docker/Dockerfile
- image: ${MIRROR_DOCKER}/sjg20/u-boot-gitlab-ci-runner:jammy-20250404-24Oct2025p1
+ image: ${MIRROR_DOCKER}/sjg20/u-boot-gitlab-ci-runner:jammy-20250404-19feb26
services:
- name: container-$(CI_JOB_ID)
command: ["--rm"]
@@ -64,6 +64,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
binutils-dev \
bison \
build-essential \
+ byacc \
cgpt \
clang-18 \
coreutils \
@@ -74,8 +75,10 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
e2fsprogs \
efitools \
erofs-utils \
+ exfatprogs \
expect \
fakeroot \
+ fdisk \
flex \
gawk \
gdisk \
@@ -281,24 +284,30 @@ RUN git clone https://github.com/stefanberger/swtpm /tmp/swtpm && \
rm -rf /tmp/swtpm
# Build trace-cmd
+# Pin to commits from Oct 2025 to avoid libtraceevent 1.9+ BTF dependency
+# which requires kernel headers newer than Jammy's 5.15
RUN mkdir /tmp/trace && \
git clone https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git /tmp/trace/libtraceevent && \
cd /tmp/trace/libtraceevent && \
+ git checkout b3f5849 && \
make -j$(nproc) && \
- sudo make install && \
- git clone https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git /tmp/trace/libtracefs && \
+ sudo make install prefix=/usr && \
+ sudo ldconfig && \
+ git clone --branch libtracefs-1.8.1 --depth 1 https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git /tmp/trace/libtracefs && \
cd /tmp/trace/libtracefs && \
make -j$(nproc) && \
- sudo make install && \
+ sudo make install prefix=/usr && \
+ sudo ldconfig && \
git clone https://github.com/rostedt/trace-cmd.git /tmp/trace/trace-cmd && \
cd /tmp/trace/trace-cmd && \
+ git checkout 364faec && \
make -j$(nproc) && \
sudo make install && \
rm -rf /tmp/trace
# Build coreboot
-RUN wget -O - https://coreboot.org/releases/coreboot-24.08.tar.xz | tar -C /tmp -xJ && \
- cd /tmp/coreboot-24.08 && \
+RUN wget -O - https://coreboot.org/releases/coreboot-24.12.tar.xz | tar -C /tmp -xJ && \
+ cd /tmp/coreboot-24.12 && \
make crossgcc-i386 CPUS=$(nproc) && \
make -C payloads/coreinfo olddefconfig && \
make -C payloads/coreinfo && \
@@ -308,7 +317,8 @@ RUN wget -O - https://coreboot.org/releases/coreboot-24.08.tar.xz | tar -C /tmp
make olddefconfig && \
make -j $(nproc) && \
sudo mkdir /opt/coreboot && \
- sudo cp build/coreboot.rom build/cbfstool /opt/coreboot/
+ sudo cp build/coreboot.rom build/cbfstool /opt/coreboot/ && \
+ rm -rf /tmp/coreboot-24.08
# Create our user/group
RUN echo uboot ALL=NOPASSWD: ALL > /etc/sudoers.d/uboot
@@ -330,6 +340,7 @@ ENV PATH="/home/uboot/.cargo/bin:${PATH}"
# COPY / ADD directives don't work as we need them to.
RUN wget -O /tmp/pytest-requirements.txt https://source.denx.de/u-boot/u-boot/-/raw/master/test/py/requirements.txt
RUN wget -O /tmp/sphinx-requirements.txt https://source.denx.de/u-boot/u-boot/-/raw/master/doc/sphinx/requirements.txt
+RUN wget -O /tmp/binman-requirements.txt https://source.denx.de/u-boot/u-boot/-/raw/master/tools/binman/requirements.txt
RUN wget -O /tmp/buildman-requirements.txt https://source.denx.de/u-boot/u-boot/-/raw/master/tools/buildman/requirements.txt
RUN wget -O /tmp/patman-requirements.txt https://source.denx.de/u-boot/u-boot/-/raw/master/tools/patman/requirements.txt
RUN wget -O /tmp/u_boot_pylib-requirements.txt https://source.denx.de/u-boot/u-boot/-/raw/master/tools/u_boot_pylib/requirements.txt
@@ -337,6 +348,7 @@ RUN python3 -m venv /tmp/venv && \
. /tmp/venv/bin/activate && \
pip install -r /tmp/pytest-requirements.txt \
-r /tmp/sphinx-requirements.txt \
+ -r /tmp/binman-requirements.txt \
-r /tmp/buildman-requirements.txt \
-r /tmp/patman-requirements.txt \
-r /tmp/u_boot_pylib-requirements.txt && \