#===- libcxx/utils/docker/debian9/Dockerfile -------------------------===// # # The LLVM Compiler Infrastructure # # This file is distributed under the University of Illinois Open Source # License. See LICENSE.TXT for details. # #===----------------------------------------------------------------------===// # 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 && \ update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.gold" 20 && \ update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.bfd" 10 # Build GCC 4.9 for testing our C++11 against FROM builder-base as gcc-49-builder LABEL maintainer "libc++ Developers" ADD scripts/build_gcc.sh /tmp/build_gcc.sh RUN git clone --depth=1 --branch gcc-4_9_4-release git://gcc.gnu.org/git/gcc.git /tmp/gcc-4.9.4 RUN cd /tmp/gcc-4.9.4/ && ./contrib/download_prerequisites RUN /tmp/build_gcc.sh --source /tmp/gcc-4.9.4 --to /opt/gcc-4.9.4 # Build GCC ToT for testing in all dialects. FROM builder-base as gcc-tot-builder LABEL maintainer "libc++ Developers" ADD scripts/build_gcc.sh /tmp/build_gcc.sh RUN git clone --depth=1 git://gcc.gnu.org/git/gcc.git /tmp/gcc-tot RUN cd /tmp/gcc-tot && ./contrib/download_prerequisites RUN /tmp/build_gcc.sh --source /tmp/gcc-tot --to /opt/gcc-tot # Build LLVM 4.0 which is used to test against a "legacy" compiler. FROM builder-base as llvm-4-builder LABEL maintainer "libc++ Developers" ADD scripts/checkout_git.sh /tmp/checkout_git.sh ADD scripts/build_install_llvm.sh /tmp/build_install_llvm.sh RUN /tmp/checkout_git.sh --to /tmp/llvm-4.0 -p clang -p compiler-rt --branch release_40 RUN /tmp/build_install_llvm.sh \ --install /opt/llvm-4.0 \ --source /tmp/llvm-4.0 \ --build /tmp/build-llvm-4.0 \ -i install-clang -i install-clang-headers \ -i install-compiler-rt \ -- \ -DCMAKE_BUILD_TYPE=RELEASE \ -DLLVM_ENABLE_ASSERTIONS=ON # Stage 2. Produce a minimal release image with build results. FROM launcher.gcr.io/google/debian9:latest LABEL maintainer "libc++ Developers" # Copy over the GCC and Clang installations COPY --from=gcc-49-builder /opt/gcc-4.9.4 /opt/gcc-4.9.4 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-4.9.4/bin/gcc /usr/local/bin/gcc-4.9 && \ ln -s /opt/gcc-4.9.4/bin/g++ /usr/local/bin/g++-4.9 RUN apt-get update && \ apt-get install -y \ ca-certificates \ gnupg \ build-essential \ apt-transport-https \ curl \ software-properties-common RUN apt-get install -y --no-install-recommends \ systemd \ sysvinit-utils \ cmake \ subversion \ git \ ninja-build \ gcc-multilib \ g++-multilib \ python \ buildbot-slave 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