From 011ae65dfc599612ca7d8564f808f83f5451905e Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Mon, 18 May 2026 07:30:04 +0100 Subject: [PATCH] Use the compiler major version only in the created symlinks --- src/bebe/templates/compiler/clang.Dockerfile | 27 ++++++++++---------- src/bebe/templates/compiler/gcc.Dockerfile | 21 +++++++-------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/bebe/templates/compiler/clang.Dockerfile b/src/bebe/templates/compiler/clang.Dockerfile index 6fe5e56..73184b8 100644 --- a/src/bebe/templates/compiler/clang.Dockerfile +++ b/src/bebe/templates/compiler/clang.Dockerfile @@ -2,7 +2,8 @@ {# 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-', '') %} +{% set base_version = params.compiler.version.split('/') | last | replace('llvmorg-', '') %} +{% set major_version = base_version.split('.')[0] %} # 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 @@ -14,31 +15,31 @@ RUN cmake ../llvm \ -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF \ -DLLVM_INCLUDE_TESTS=OFF \ -DLLVM_INCLUDE_BENCHMARKS=OFF \ - -DCMAKE_INSTALL_PREFIX=/opt/clang-{{ clean_version }} \ - -DCMAKE_INSTALL_RPATH="/opt/clang-{{ clean_version }}/lib" \ + -DCMAKE_INSTALL_PREFIX=/opt/clang-{{ major_version }} \ + -DCMAKE_INSTALL_RPATH="/opt/clang-{{ major_version }}/lib" \ -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \ -G "Ninja" && \ cmake --build . --target install -j"$(nproc)" && \ - 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; \ + if [ -d /opt/clang-{{ major_version }}/include/x86_64-unknown-linux-gnu/c++/v1 ]; then \ + cp -a /opt/clang-{{ major_version }}/include/x86_64-unknown-linux-gnu/c++/v1/* /opt/clang-{{ major_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] %} +{% set base_version = params.compiler.version.split('/') | last | replace('llvmorg-', '') %} +{% set major_version = base_version.split('.')[0] %} # Copy the compiled Clang compiler from the build stage -COPY --from=compiler_stage /opt/clang-{{ clean_version }} /opt/clang-{{ clean_version }} +COPY --from=compiler_stage /opt/clang-{{ major_version }} /opt/clang-{{ major_version }} -ENV CC=/opt/clang-{{ clean_version }}/bin/clang -ENV CXX=/opt/clang-{{ clean_version }}/bin/clang++ +ENV CC=/opt/clang-{{ major_version }}/bin/clang +ENV CXX=/opt/clang-{{ major_version }}/bin/clang++ -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 }} && \ +RUN ln -sf /opt/clang-{{ major_version }}/bin/clang /usr/bin/clang-{{ major_version }} && \ + ln -sf /opt/clang-{{ major_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 }} -ENV PATH=/opt/clang-{{ clean_version }}/bin:$PATH +ENV PATH=/opt/clang-{{ major_version }}/bin:$PATH {% endmacro %} diff --git a/src/bebe/templates/compiler/gcc.Dockerfile b/src/bebe/templates/compiler/gcc.Dockerfile index ae05601..c3c28f0 100644 --- a/src/bebe/templates/compiler/gcc.Dockerfile +++ b/src/bebe/templates/compiler/gcc.Dockerfile @@ -2,7 +2,8 @@ {# 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-', '') %} +{% set base_version = params.compiler.version.split('/') | last | replace('gcc-', '') %} +{% set major_version = base_version.split('.')[0] %} # 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 @@ -10,7 +11,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-{{ clean_version }} && \ +RUN ../configure --enable-languages=c,c++ --disable-multilib --prefix=/opt/gcc-{{ major_version }} && \ make -j"$(nproc)" && \ make install-strip WORKDIR / @@ -18,18 +19,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] %} +{% set base_version = params.compiler.version.split('/') | last | replace('gcc-', '') %} +{% set major_version = base_version.split('.')[0] %} # Copy the compiled GCC compiler from the build stage -COPY --from=compiler_stage /opt/gcc-{{ clean_version }} /opt/gcc-{{ clean_version }} +COPY --from=compiler_stage /opt/gcc-{{ major_version }} /opt/gcc-{{ major_version }} -ENV CC=/opt/gcc-{{ clean_version }}/bin/gcc -ENV CXX=/opt/gcc-{{ clean_version }}/bin/g++ +ENV CC=/opt/gcc-{{ major_version }}/bin/gcc +ENV CXX=/opt/gcc-{{ major_version }}/bin/g++ -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 }} && \ +RUN ln -sf /opt/gcc-{{ major_version }}/bin/gcc /usr/bin/gcc-{{ major_version }} && \ + ln -sf /opt/gcc-{{ major_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 }} -ENV PATH=/opt/gcc-{{ clean_version }}/bin:$PATH +ENV PATH=/opt/gcc-{{ major_version }}/bin:$PATH {% endmacro %}