[Concept,4/5] docker: Update Dockerfile for build compatibility

Message ID 20260219192130.737116-5-sjg@u-boot.org
State New
Headers
Series docker: Update Docker image and fix trace test |

Commit Message

Simon Glass Feb. 19, 2026, 7:21 p.m. UTC
  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(-)
  

Patch

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0b6ca99a8ba..648c3f52c44 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -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"]
diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile
index 71932e5433c..90ad3708101 100644
--- a/tools/docker/Dockerfile
+++ b/tools/docker/Dockerfile
@@ -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 && \