From 0df60ba8c9b948f66ccf98bb1874fd3f0672357c Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sun, 17 May 2026 18:09:42 +0100 Subject: [PATCH 1/2] Use the compiler major version only in the created symlinks --- src/bebe/templates/compiler/clang.Dockerfile | 7 ++++--- src/bebe/templates/compiler/gcc.Dockerfile | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/bebe/templates/compiler/clang.Dockerfile b/src/bebe/templates/compiler/clang.Dockerfile index 232c1cd..8975449 100644 --- a/src/bebe/templates/compiler/clang.Dockerfile +++ b/src/bebe/templates/compiler/clang.Dockerfile @@ -32,9 +32,10 @@ COPY --from=compiler_stage /opt/clang-{{ params.compiler.version }} /opt/clang-{ ENV CC=/opt/clang-{{ params.compiler.version }}/bin/clang ENV CXX=/opt/clang-{{ params.compiler.version }}/bin/clang++ -{% set version_parts = params.compiler.version.split('-') %} -{% if version_parts|length > 1 %} -{% set major_version = version_parts[1].split('.')[0] %} +{% set base_version = params.compiler.version.split('/') | last %} +{% set version_parts = base_version.split('.') %} +{% if version_parts|length > 0 %} +{% set major_version = version_parts[0] %} RUN ln -sf /opt/clang-{{ params.compiler.version }}/bin/clang /usr/bin/clang-{{ major_version }} && \ ln -sf /opt/clang-{{ params.compiler.version }}/bin/clang++ /usr/bin/clang++-{{ major_version }} && \ update-alternatives --install /usr/bin/clang clang /usr/bin/clang-{{ major_version }} 100 \ diff --git a/src/bebe/templates/compiler/gcc.Dockerfile b/src/bebe/templates/compiler/gcc.Dockerfile index 009f86e..619957f 100644 --- a/src/bebe/templates/compiler/gcc.Dockerfile +++ b/src/bebe/templates/compiler/gcc.Dockerfile @@ -23,9 +23,10 @@ COPY --from=compiler_stage /opt/gcc-{{ params.compiler.version }} /opt/gcc-{{ pa ENV CC=/opt/gcc-{{ params.compiler.version }}/bin/gcc ENV CXX=/opt/gcc-{{ params.compiler.version }}/bin/g++ -{% set version_parts = params.compiler.version.split('-') %} -{% if version_parts|length > 1 %} -{% set major_version = version_parts[1].split('.')[0] %} +{% set base_version = params.compiler.version.split('/') | last | replace('gcc-', '') %} +{% set version_parts = base_version.split('.') %} +{% if version_parts|length > 0 %} +{% set major_version = version_parts[0] %} RUN ln -sf /opt/gcc-{{ params.compiler.version }}/bin/gcc /usr/bin/gcc-{{ major_version }} && \ ln -sf /opt/gcc-{{ params.compiler.version }}/bin/g++ /usr/bin/g++-{{ major_version }} && \ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-{{ major_version }} 100 \ From 95c9412b1de1fb7a71be8abf5fa376d100fa4a80 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sun, 17 May 2026 18:29:42 +0100 Subject: [PATCH 2/2] Fully clean compiler paths --- src/bebe/templates/compiler/clang.Dockerfile | 28 +++++++++----------- src/bebe/templates/compiler/gcc.Dockerfile | 22 +++++++-------- 2 files changed, 23 insertions(+), 27 deletions(-) diff --git a/src/bebe/templates/compiler/clang.Dockerfile b/src/bebe/templates/compiler/clang.Dockerfile index 8975449..6fe5e56 100644 --- a/src/bebe/templates/compiler/clang.Dockerfile +++ b/src/bebe/templates/compiler/clang.Dockerfile @@ -2,6 +2,7 @@ {# Import this file and call build() in the build stage, copy() in the runtime stage. #} {% macro build(params) %} +{% set clean_version = params.compiler.version.split('/') | last | replace('llvmorg-', '') %} # Clone and build LLVM/Clang from source RUN git clone --depth 1 --branch {{ params.compiler.version }} https://github.com/llvm/llvm-project.git /tmp/llvm-project WORKDIR /tmp/llvm-project/build @@ -13,34 +14,31 @@ RUN cmake ../llvm \ -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF \ -DLLVM_INCLUDE_TESTS=OFF \ -DLLVM_INCLUDE_BENCHMARKS=OFF \ - -DCMAKE_INSTALL_PREFIX=/opt/clang-{{ params.compiler.version }} \ - -DCMAKE_INSTALL_RPATH="/opt/clang-{{ params.compiler.version }}/lib" \ + -DCMAKE_INSTALL_PREFIX=/opt/clang-{{ clean_version }} \ + -DCMAKE_INSTALL_RPATH="/opt/clang-{{ clean_version }}/lib" \ -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \ -G "Ninja" && \ cmake --build . --target install -j"$(nproc)" && \ - if [ -d /opt/clang-{{ params.compiler.version }}/include/x86_64-unknown-linux-gnu/c++/v1 ]; then \ - cp -a /opt/clang-{{ params.compiler.version }}/include/x86_64-unknown-linux-gnu/c++/v1/* /opt/clang-{{ params.compiler.version }}/include/c++/v1/ || true; \ + if [ -d /opt/clang-{{ clean_version }}/include/x86_64-unknown-linux-gnu/c++/v1 ]; then \ + cp -a /opt/clang-{{ clean_version }}/include/x86_64-unknown-linux-gnu/c++/v1/* /opt/clang-{{ clean_version }}/include/c++/v1/ || true; \ fi WORKDIR / RUN rm -rf /tmp/llvm-project {% endmacro %} {% macro copy(params) %} +{% set clean_version = params.compiler.version.split('/') | last | replace('llvmorg-', '') %} +{% set major_version = clean_version.split('.')[0] %} # Copy the compiled Clang compiler from the build stage -COPY --from=compiler_stage /opt/clang-{{ params.compiler.version }} /opt/clang-{{ params.compiler.version }} +COPY --from=compiler_stage /opt/clang-{{ clean_version }} /opt/clang-{{ clean_version }} -ENV CC=/opt/clang-{{ params.compiler.version }}/bin/clang -ENV CXX=/opt/clang-{{ params.compiler.version }}/bin/clang++ +ENV CC=/opt/clang-{{ clean_version }}/bin/clang +ENV CXX=/opt/clang-{{ clean_version }}/bin/clang++ -{% set base_version = params.compiler.version.split('/') | last %} -{% set version_parts = base_version.split('.') %} -{% if version_parts|length > 0 %} -{% set major_version = version_parts[0] %} -RUN ln -sf /opt/clang-{{ params.compiler.version }}/bin/clang /usr/bin/clang-{{ major_version }} && \ - ln -sf /opt/clang-{{ params.compiler.version }}/bin/clang++ /usr/bin/clang++-{{ major_version }} && \ +RUN ln -sf /opt/clang-{{ clean_version }}/bin/clang /usr/bin/clang-{{ major_version }} && \ + ln -sf /opt/clang-{{ clean_version }}/bin/clang++ /usr/bin/clang++-{{ major_version }} && \ update-alternatives --install /usr/bin/clang clang /usr/bin/clang-{{ major_version }} 100 \ --slave /usr/bin/clang++ clang++ /usr/bin/clang++-{{ major_version }} -{% endif %} -ENV PATH=/opt/clang-{{ params.compiler.version }}/bin:$PATH +ENV PATH=/opt/clang-{{ clean_version }}/bin:$PATH {% endmacro %} diff --git a/src/bebe/templates/compiler/gcc.Dockerfile b/src/bebe/templates/compiler/gcc.Dockerfile index 619957f..ae05601 100644 --- a/src/bebe/templates/compiler/gcc.Dockerfile +++ b/src/bebe/templates/compiler/gcc.Dockerfile @@ -2,6 +2,7 @@ {# Import this file and call build() in the build stage, copy() in the runtime stage. #} {% macro build(params) %} +{% set clean_version = params.compiler.version.split('/') | last | replace('gcc-', '') %} # Clone and build GCC from source # The version config acts as the branch/tag to checkout RUN git clone --depth 1 --branch {{ params.compiler.version }} https://github.com/gcc-mirror/gcc.git /tmp/gcc @@ -9,7 +10,7 @@ WORKDIR /tmp/gcc RUN ./contrib/download_prerequisites && \ mkdir build WORKDIR /tmp/gcc/build -RUN ../configure --enable-languages=c,c++ --disable-multilib --prefix=/opt/gcc-{{ params.compiler.version }} && \ +RUN ../configure --enable-languages=c,c++ --disable-multilib --prefix=/opt/gcc-{{ clean_version }} && \ make -j"$(nproc)" && \ make install-strip WORKDIR / @@ -17,21 +18,18 @@ RUN rm -rf /tmp/gcc {% endmacro %} {% macro copy(params) %} +{% set clean_version = params.compiler.version.split('/') | last | replace('gcc-', '') %} +{% set major_version = clean_version.split('.')[0] %} # Copy the compiled GCC compiler from the build stage -COPY --from=compiler_stage /opt/gcc-{{ params.compiler.version }} /opt/gcc-{{ params.compiler.version }} +COPY --from=compiler_stage /opt/gcc-{{ clean_version }} /opt/gcc-{{ clean_version }} -ENV CC=/opt/gcc-{{ params.compiler.version }}/bin/gcc -ENV CXX=/opt/gcc-{{ params.compiler.version }}/bin/g++ +ENV CC=/opt/gcc-{{ clean_version }}/bin/gcc +ENV CXX=/opt/gcc-{{ clean_version }}/bin/g++ -{% set base_version = params.compiler.version.split('/') | last | replace('gcc-', '') %} -{% set version_parts = base_version.split('.') %} -{% if version_parts|length > 0 %} -{% set major_version = version_parts[0] %} -RUN ln -sf /opt/gcc-{{ params.compiler.version }}/bin/gcc /usr/bin/gcc-{{ major_version }} && \ - ln -sf /opt/gcc-{{ params.compiler.version }}/bin/g++ /usr/bin/g++-{{ major_version }} && \ +RUN ln -sf /opt/gcc-{{ clean_version }}/bin/gcc /usr/bin/gcc-{{ major_version }} && \ + ln -sf /opt/gcc-{{ clean_version }}/bin/g++ /usr/bin/g++-{{ major_version }} && \ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-{{ major_version }} 100 \ --slave /usr/bin/g++ g++ /usr/bin/g++-{{ major_version }} -{% endif %} -ENV PATH=/opt/gcc-{{ params.compiler.version }}/bin:$PATH +ENV PATH=/opt/gcc-{{ clean_version }}/bin:$PATH {% endmacro %}