From ae4f2d9023bf4a2c29a305526d95988874083a90 Mon Sep 17 00:00:00 2001 From: Ayaz Salikhov Date: Tue, 8 Jul 2025 17:41:22 +0100 Subject: [PATCH] ci: Add mold to tools image (#2301) Work on: https://github.com/XRPLF/clio/issues/1242 --- .github/workflows/update_docker_ci.yml | 3 +++ docker/ci/README.md | 9 +++++---- docker/tools/Dockerfile | 28 ++++++++++++++++++++------ 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/.github/workflows/update_docker_ci.yml b/.github/workflows/update_docker_ci.yml index d19303cd..3a9c3a77 100644 --- a/.github/workflows/update_docker_ci.yml +++ b/.github/workflows/update_docker_ci.yml @@ -197,6 +197,7 @@ jobs: tools: name: Build and push tools docker image runs-on: heavy + needs: [gcc-merge] steps: - uses: actions/checkout@v4 @@ -220,6 +221,8 @@ jobs: type=raw,value=latest type=raw,value=${{ github.sha }} platforms: linux/amd64,linux/arm64 + build_args: | + GCC_VERSION=${{ env.GCC_VERSION }} ci: name: Build and push CI docker image diff --git a/docker/ci/README.md b/docker/ci/README.md index d72dd6ea..558d1f1d 100644 --- a/docker/ci/README.md +++ b/docker/ci/README.md @@ -6,13 +6,14 @@ It is used in [Clio Github Actions](https://github.com/XRPLF/clio/actions) but c The image is based on Ubuntu 20.04 and contains: - ccache 4.11.3 -- clang 19 +- Clang 19 - ClangBuildAnalyzer 1.6.0 -- conan 2.17.0 -- doxygen 1.12 -- gcc 12.3.0 +- Conan 2.17.0 +- Doxygen 1.12 +- GCC 12.3.0 - gh 2.74 - git-cliff 2.9.1 +- mold 2.40.1 - and some other useful tools Conan is set up to build Clio without any additional steps. diff --git a/docker/tools/Dockerfile b/docker/tools/Dockerfile index 9afc603f..bfd80273 100644 --- a/docker/tools/Dockerfile +++ b/docker/tools/Dockerfile @@ -1,24 +1,40 @@ -FROM ubuntu:20.04 +ARG GCC_VERSION=invalid + +FROM ghcr.io/xrplf/clio-gcc:${GCC_VERSION} ARG DEBIAN_FRONTEND=noninteractive ARG TARGETARCH SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG BUILD_VERSION=0 + RUN apt-get update \ && apt-get install -y --no-install-recommends --no-install-suggests \ bison \ - build-essential \ - cmake \ flex \ ninja-build \ + python3 \ + python3-pip \ software-properties-common \ wget \ + && pip3 install -q --no-cache-dir \ + cmake==3.31.6 \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* WORKDIR /tmp +ARG MOLD_VERSION=2.40.1 +RUN wget --progress=dot:giga "https://github.com/rui314/mold/archive/refs/tags/v${MOLD_VERSION}.tar.gz" \ + && tar xf "v${MOLD_VERSION}.tar.gz" \ + && cd "mold-${MOLD_VERSION}" \ + && mkdir build \ + && cd build \ + && cmake -GNinja -DCMAKE_BUILD_TYPE=Release .. \ + && ninja install \ + && rm -rf /tmp/* /var/tmp/* + ARG CCACHE_VERSION=4.11.3 RUN wget --progress=dot:giga "https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/ccache-${CCACHE_VERSION}.tar.gz" \ && tar xf "ccache-${CCACHE_VERSION}.tar.gz" \ @@ -26,7 +42,7 @@ RUN wget --progress=dot:giga "https://github.com/ccache/ccache/releases/download && mkdir build \ && cd build \ && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DENABLE_TESTING=False .. \ - && cmake --build . --target install \ + && ninja install \ && rm -rf /tmp/* /var/tmp/* ARG DOXYGEN_VERSION=1.12.0 @@ -36,7 +52,7 @@ RUN wget --progress=dot:giga "https://github.com/doxygen/doxygen/releases/downlo && mkdir build \ && cd build \ && cmake -GNinja -DCMAKE_BUILD_TYPE=Release .. \ - && cmake --build . --target install \ + && ninja install \ && rm -rf /tmp/* /var/tmp/* ARG CLANG_BUILD_ANALYZER_VERSION=1.6.0 @@ -46,7 +62,7 @@ RUN wget --progress=dot:giga "https://github.com/aras-p/ClangBuildAnalyzer/archi && mkdir build \ && cd build \ && cmake -GNinja -DCMAKE_BUILD_TYPE=Release .. \ - && cmake --build . --target install \ + && ninja install \ && rm -rf /tmp/* /var/tmp/* ARG GIT_CLIFF_VERSION=2.9.1