diff --git a/src/bebe/templates/compiler/clang.Dockerfile b/src/bebe/templates/compiler/clang.Dockerfile index 232c1cd..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,33 +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 version_parts = params.compiler.version.split('-') %} -{% if version_parts|length > 1 %} -{% set major_version = version_parts[1].split('.')[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 009f86e..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,20 +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 version_parts = params.compiler.version.split('-') %} -{% if version_parts|length > 1 %} -{% set major_version = version_parts[1].split('.')[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 %}