116 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Docker
		
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Docker
		
	
	
	
| #===- 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
 |