• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#===- libcxx/utils/docker/debian9/Dockerfile -------------------------===//
2#
3#                     The LLVM Compiler Infrastructure
4#
5# This file is distributed under the University of Illinois Open Source
6# License. See LICENSE.TXT for details.
7#
8#===----------------------------------------------------------------------===//
9
10# Setup the base builder image with the packages we'll need to build GCC and Clang from source.
11FROM launcher.gcr.io/google/debian9:latest as builder-base
12LABEL maintainer "libc++ Developers"
13
14RUN apt-get update && \
15    apt-get install -y --no-install-recommends \
16      ca-certificates \
17      gnupg \
18      build-essential \
19      wget \
20      subversion \
21      unzip \
22      automake \
23      python \
24      cmake \
25      ninja-build \
26      curl \
27      git \
28      gcc-multilib \
29      g++-multilib \
30      libc6-dev \
31      bison \
32      flex \
33      libtool \
34      autoconf \
35      binutils-dev \
36      binutils-gold \
37      software-properties-common && \
38  update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.gold" 20 && \
39  update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.bfd" 10
40
41# Build GCC 4.9 for testing our C++11 against
42FROM builder-base as gcc-49-builder
43LABEL maintainer "libc++ Developers"
44
45ADD scripts/build_gcc.sh /tmp/build_gcc.sh
46
47RUN git clone --depth=1 --branch gcc-4_9_4-release git://gcc.gnu.org/git/gcc.git /tmp/gcc-4.9.4
48RUN cd /tmp/gcc-4.9.4/ && ./contrib/download_prerequisites
49RUN /tmp/build_gcc.sh --source /tmp/gcc-4.9.4 --to /opt/gcc-4.9.4
50
51# Build GCC ToT for testing in all dialects.
52FROM builder-base as gcc-tot-builder
53LABEL maintainer "libc++ Developers"
54
55ADD scripts/build_gcc.sh /tmp/build_gcc.sh
56
57RUN git clone --depth=1 git://gcc.gnu.org/git/gcc.git /tmp/gcc-tot
58RUN cd /tmp/gcc-tot && ./contrib/download_prerequisites
59RUN /tmp/build_gcc.sh --source /tmp/gcc-tot --to /opt/gcc-tot
60
61# Build LLVM 4.0 which is used to test against a "legacy" compiler.
62FROM builder-base as llvm-4-builder
63LABEL maintainer "libc++ Developers"
64
65ADD scripts/checkout_git.sh /tmp/checkout_git.sh
66ADD scripts/build_install_llvm.sh /tmp/build_install_llvm.sh
67
68RUN /tmp/checkout_git.sh --to /tmp/llvm-4.0 -p clang -p compiler-rt --branch release_40
69RUN /tmp/build_install_llvm.sh \
70    --install /opt/llvm-4.0 \
71    --source /tmp/llvm-4.0 \
72    --build /tmp/build-llvm-4.0 \
73    -i install-clang -i install-clang-headers \
74    -i install-compiler-rt \
75    -- \
76    -DCMAKE_BUILD_TYPE=RELEASE \
77    -DLLVM_ENABLE_ASSERTIONS=ON
78
79# Stage 2. Produce a minimal release image with build results.
80FROM launcher.gcr.io/google/debian9:latest
81LABEL maintainer "libc++ Developers"
82
83# Copy over the GCC and Clang installations
84COPY --from=gcc-49-builder /opt/gcc-4.9.4 /opt/gcc-4.9.4
85COPY --from=gcc-tot-builder /opt/gcc-tot /opt/gcc-tot
86COPY --from=llvm-4-builder /opt/llvm-4.0 /opt/llvm-4.0
87
88RUN ln -s /opt/gcc-4.9.4/bin/gcc /usr/local/bin/gcc-4.9 && \
89    ln -s /opt/gcc-4.9.4/bin/g++ /usr/local/bin/g++-4.9
90
91RUN apt-get update && \
92    apt-get install -y \
93      ca-certificates \
94      gnupg \
95      build-essential \
96      apt-transport-https \
97      curl \
98      software-properties-common
99
100RUN apt-get install -y --no-install-recommends \
101    systemd \
102    sysvinit-utils \
103    cmake \
104    subversion \
105    git \
106    ninja-build \
107    gcc-multilib \
108    g++-multilib \
109    python \
110    buildbot-slave
111
112ADD scripts/install_clang_packages.sh /tmp/install_clang_packages.sh
113RUN /tmp/install_clang_packages.sh && rm /tmp/install_clang_packages.sh
114
115RUN git clone https://git.llvm.org/git/libcxx.git /libcxx
116