|
@@ -1,13 +1,13 @@
|
|
-#===- libcxx/utils/docker/debian9/Dockerfile -------------------------===//
|
|
|
|
|
|
+#===- libcxx/utils/docker/debian9/Dockerfile --------------------------------------------------===//
|
|
#
|
|
#
|
|
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
# See https://llvm.org/LICENSE.txt for license information.
|
|
# See https://llvm.org/LICENSE.txt for license information.
|
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
# 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.
|
|
# 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
|
|
|
|
|
|
+FROM launcher.gcr.io/google/debian9:latest AS builder-base
|
|
LABEL maintainer "libc++ Developers"
|
|
LABEL maintainer "libc++ Developers"
|
|
|
|
|
|
RUN apt-get update && \
|
|
RUN apt-get update && \
|
|
@@ -33,52 +33,127 @@ RUN apt-get update && \
|
|
autoconf \
|
|
autoconf \
|
|
binutils-dev \
|
|
binutils-dev \
|
|
binutils-gold \
|
|
binutils-gold \
|
|
- software-properties-common && \
|
|
|
|
|
|
+ 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.gold" 20 && \
|
|
- update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.bfd" 10
|
|
|
|
|
|
+ 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
|
|
|
|
|
|
-# Build GCC 4.9 for testing our C++11 against
|
|
|
|
FROM builder-base as gcc-49-builder
|
|
FROM builder-base as gcc-49-builder
|
|
LABEL maintainer "libc++ Developers"
|
|
LABEL maintainer "libc++ Developers"
|
|
|
|
|
|
-ADD scripts/build_gcc.sh /tmp/build_gcc.sh
|
|
|
|
|
|
+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"
|
|
|
|
|
|
-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
|
|
|
|
|
|
+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
|
|
|
|
|
|
-# Build GCC ToT for testing in all dialects.
|
|
|
|
FROM builder-base as gcc-tot-builder
|
|
FROM builder-base as gcc-tot-builder
|
|
LABEL maintainer "libc++ Developers"
|
|
LABEL maintainer "libc++ Developers"
|
|
|
|
|
|
-ADD scripts/build_gcc.sh /tmp/build_gcc.sh
|
|
|
|
|
|
+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"
|
|
|
|
|
|
-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
|
|
|
|
|
|
+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
|
|
|
|
|
|
-# Build LLVM 4.0 which is used to test against a "legacy" compiler.
|
|
|
|
FROM builder-base as llvm-4-builder
|
|
FROM builder-base as llvm-4-builder
|
|
LABEL maintainer "libc++ Developers"
|
|
LABEL maintainer "libc++ Developers"
|
|
|
|
|
|
-ADD scripts/checkout_git.sh /tmp/checkout_git.sh
|
|
|
|
-ADD scripts/build_install_llvm.sh /tmp/build_install_llvm.sh
|
|
|
|
|
|
+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"
|
|
|
|
|
|
-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
|
|
|
|
|
|
+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
|
|
|
|
|
|
-# Stage 2. Produce a minimal release image with build results.
|
|
|
|
-FROM launcher.gcr.io/google/debian9:latest
|
|
|
|
|
|
+FROM builder-base as llvm-8-builder
|
|
LABEL maintainer "libc++ Developers"
|
|
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 over the GCC and Clang installations
|
|
COPY --from=gcc-49-builder /opt/gcc-4.9.4 /opt/gcc-4.9.4
|
|
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=gcc-tot-builder /opt/gcc-tot /opt/gcc-tot
|
|
@@ -88,27 +163,40 @@ 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
|
|
ln -s /opt/gcc-4.9.4/bin/g++ /usr/local/bin/g++-4.9
|
|
|
|
|
|
RUN apt-get update && \
|
|
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
|
|
|
|
|
|
+ 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
|
|
ADD scripts/install_clang_packages.sh /tmp/install_clang_packages.sh
|
|
RUN /tmp/install_clang_packages.sh && rm /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
|
|
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
|
|
|
|
+
|
|
|
|
+
|