#===- libcxx/utils/docker/debian9/Dockerfile --------------------------------------------------===// # # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. # See https://llvm.org/LICENSE.txt for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # #===-------------------------------------------------------------------------------------------===// # Setup the base builder image with the packages we'll need to build GCC and Clang from source. FROM launcher.gcr.io/google/debian9:latest AS builder-base LABEL maintainer "libc++ Developers" RUN apt-get update && \ apt-get install -y --no-install-recommends \ ca-certificates \ gnupg \ build-essential \ wget \ subversion \ unzip \ automake \ python \ cmake \ ninja-build \ curl \ git \ gcc-multilib \ g++-multilib \ libc6-dev \ bison \ flex \ libtool \ autoconf \ binutils-dev \ binutils-gold \ software-properties-common \ gnupg \ apt-transport-https \ systemd \ sysvinit-utils && \ update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.gold" 20 && \ update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.bfd" 10 && \ rm -rf /var/lib/apt/lists/* # Build GCC versions FROM builder-base as gcc-48-builder LABEL maintainer "libc++ Developers" ADD scripts/build_gcc_version.sh /tmp/build_gcc_version.sh RUN /tmp/build_gcc_version.sh --install /opt/gcc-4.8.5 --branch gcc-4_8_5-release \ --cherry-pick ec1cc0263f156f70693a62cf17b254a0029f4852 FROM builder-base as gcc-49-builder LABEL maintainer "libc++ Developers" ADD scripts/build_gcc_version.sh /tmp/build_gcc_version.sh RUN /tmp/build_gcc_version.sh --install /opt/gcc-4.9.4 --branch gcc-4_9_4-release FROM builder-base as gcc-5-builder LABEL maintainer "libc++ Developers" ADD scripts/build_gcc_version.sh /tmp/build_gcc_version.sh RUN /tmp/build_gcc_version.sh --install /opt/gcc-5 --branch gcc-5_5_0-release FROM builder-base as gcc-6-builder LABEL maintainer "libc++ Developers" ADD scripts/build_gcc_version.sh /tmp/build_gcc_version.sh RUN /tmp/build_gcc_version.sh --install /opt/gcc-6 --branch gcc-6_5_0-release FROM builder-base as gcc-7-builder LABEL maintainer "libc++ Developers" ADD scripts/build_gcc_version.sh /tmp/build_gcc_version.sh RUN /tmp/build_gcc_version.sh --install /opt/gcc-7 --branch gcc-7_4_0-release FROM builder-base as gcc-8-builder LABEL maintainer "libc++ Developers" ADD scripts/build_gcc_version.sh /tmp/build_gcc_version.sh RUN /tmp/build_gcc_version.sh --install /opt/gcc-8 --branch gcc-8_2_0-release FROM builder-base as gcc-tot-builder LABEL maintainer "libc++ Developers" ADD scripts/build_gcc_version.sh /tmp/build_gcc_version.sh RUN /tmp/build_gcc_version.sh --install /opt/gcc-tot --branch master # Build additional LLVM versions FROM builder-base as llvm-36-builder LABEL maintainer "libc++ Developers" ADD scripts/build_llvm_version.sh /tmp/build_llvm_version.sh RUN /tmp/build_llvm_version.sh --install /opt/llvm-3.6 --branch release/3.6.x FROM builder-base as llvm-37-builder LABEL maintainer "libc++ Developers" ADD scripts/build_llvm_version.sh /tmp/build_llvm_version.sh RUN /tmp/build_llvm_version.sh --install /opt/llvm-3.7 --branch release/3.7.x FROM builder-base as llvm-38-builder LABEL maintainer "libc++ Developers" ADD scripts/build_llvm_version.sh /tmp/build_llvm_version.sh RUN /tmp/build_llvm_version.sh --install /opt/llvm-3.8 --branch release/3.8.x FROM builder-base as llvm-39-builder LABEL maintainer "libc++ Developers" ADD scripts/build_llvm_version.sh /tmp/build_llvm_version.sh RUN /tmp/build_llvm_version.sh --install /opt/llvm-3.9 --branch release/3.9.x FROM builder-base as llvm-4-builder LABEL maintainer "libc++ Developers" ADD scripts/build_llvm_version.sh /tmp/build_llvm_version.sh RUN /tmp/build_llvm_version.sh --install /opt/llvm-4.0 --branch release/4.x FROM builder-base as llvm-5-builder LABEL maintainer "libc++ Developers" ADD scripts/build_llvm_version.sh /tmp/build_llvm_version.sh RUN /tmp/build_llvm_version.sh --install /opt/llvm-5.0 --branch release/5.x FROM builder-base as llvm-6-builder LABEL maintainer "libc++ Developers" ADD scripts/build_llvm_version.sh /tmp/build_llvm_version.sh RUN /tmp/build_llvm_version.sh --install /opt/llvm-6.0 --branch release/6.x FROM builder-base as llvm-7-builder LABEL maintainer "libc++ Developers" ADD scripts/build_llvm_version.sh /tmp/build_llvm_version.sh RUN /tmp/build_llvm_version.sh --install /opt/llvm-7.0 --branch release/7.x FROM builder-base as llvm-8-builder LABEL maintainer "libc++ Developers" ADD scripts/build_llvm_version.sh /tmp/build_llvm_version.sh RUN /tmp/build_llvm_version.sh --install /opt/llvm-8.0 --branch release/8.x FROM builder-base as llvm-tot-builder LABEL maintainer "libc++ Developers" ADD scripts/build_llvm_version.sh /tmp/build_llvm_version.sh RUN /tmp/build_llvm_version.sh --install /opt/llvm-tot --branch master #===-------------------------------------------------------------------------------------------===// # buildslave #===-------------------------------------------------------------------------------------------===// FROM builder-base AS buildbot # Copy over the GCC and Clang installations COPY --from=gcc-5-builder /opt/gcc-5 /opt/gcc-5 COPY --from=gcc-tot-builder /opt/gcc-tot /opt/gcc-tot COPY --from=llvm-4-builder /opt/llvm-4.0 /opt/llvm-4.0 RUN ln -s /opt/gcc-5/bin/gcc /usr/local/bin/gcc-4.9 && \ ln -s /opt/gcc-5/bin/g++ /usr/local/bin/g++-4.9 RUN apt-get update && \ apt-get install -y --no-install-recommends \ bash-completion \ buildbot-slave \ && rm -rf /var/lib/apt/lists/* ADD scripts/install_clang_packages.sh /tmp/install_clang_packages.sh RUN /tmp/install_clang_packages.sh && rm /tmp/install_clang_packages.sh RUN git clone https://git.llvm.org/git/libcxx.git /libcxx #===-------------------------------------------------------------------------------------------===// # compiler-zoo #===-------------------------------------------------------------------------------------------===// FROM buildbot AS compiler-zoo LABEL maintainer "libc++ Developers" # Copy over the GCC and Clang installations COPY --from=gcc-48-builder /opt/gcc-4.8.5 /opt/gcc-4.8.5 COPY --from=gcc-49-builder /opt/gcc-4.9.4 /opt/gcc-4.9.4 COPY --from=gcc-5-builder /opt/gcc-5 /opt/gcc-5 COPY --from=gcc-6-builder /opt/gcc-6 /opt/gcc-6 COPY --from=gcc-7-builder /opt/gcc-7 /opt/gcc-7 COPY --from=gcc-8-builder /opt/gcc-8 /opt/gcc-8 COPY --from=gcc-tot-builder /opt/gcc-tot /opt/gcc-tot COPY --from=llvm-36-builder /opt/llvm-3.6 /opt/llvm-3.6 COPY --from=llvm-37-builder /opt/llvm-3.7 /opt/llvm-3.7 COPY --from=llvm-38-builder /opt/llvm-3.8 /opt/llvm-3.8 COPY --from=llvm-39-builder /opt/llvm-3.9 /opt/llvm-3.9 COPY --from=llvm-4-builder /opt/llvm-4.0 /opt/llvm-4.0 COPY --from=llvm-5-builder /opt/llvm-5.0 /opt/llvm-5.0 COPY --from=llvm-6-builder /opt/llvm-6.0 /opt/llvm-6.0 COPY --from=llvm-7-builder /opt/llvm-7.0 /opt/llvm-7.0 COPY --from=llvm-8-builder /opt/llvm-8.0 /opt/llvm-8.0 COPY --from=llvm-tot-builder /opt/llvm-tot /opt/llvm-tot