1# Dockerfile to build a manylinux 2010 compliant cross-compiler.
2#
3# Builds a devtoolset gcc/libstdc++ that targets manylinux 2010 compatible
4# glibc (2.12) and system libstdc++ (4.4).
5#
6# To push a new version, run:
7# $ docker build -f Dockerfile.rbe.cuda10.2-cudnn7-ubuntu18.04-manylinux2010-multipython \
8#  --tag "gcr.io/tensorflow-testing/nosla-cuda10.2-cudnn7-ubuntu18.04-manylinux2010-multipython" .
9# $ docker push gcr.io/tensorflow-testing/nosla-cuda10.2-cudnn7-ubuntu18.04-manylinux2010-multipython
10
11FROM gcr.io/tensorflow-testing/nosla-cuda10.0-cudnn7-ubuntu16.04-manylinux2010
12
13RUN apt-get update
14RUN apt-get remove -y --allow-change-held-packages cuda-license-10-0 libcudnn7 libcudnn8 libnccl2 libnccl-dev
15RUN apt-get install -y --no-install-recommends --allow-downgrades --allow-change-held-packages \
16  libcublas10 \
17  libcublas-dev \
18  cuda-nvml-dev-10.2 \
19  cuda-command-line-tools-10.2 \
20  cuda-libraries-dev-10.2 \
21  cuda-minimal-build-10.2 \
22  libcudnn7=7.6.5.32-1+cuda10.2 \
23  libcudnn7-dev=7.6.5.32-1+cuda10.2
24RUN rm -f /usr/local/cuda
25RUN ln -s /usr/local/cuda-10.2 /usr/local/cuda
26
27ENV DEBIAN_FRONTEND=noninteractive
28RUN apt-get update && apt-get install -y \
29      cpio \
30      file \
31      flex \
32      g++ \
33      make \
34      rpm2cpio \
35      unar \
36      wget \
37      && \
38    rm -rf /var/lib/apt/lists/*
39
40# Copy and run the install scripts.
41ARG DEBIAN_FRONTEND=noninteractive
42
43COPY install/install_bootstrap_deb_packages.sh /install/
44RUN /install/install_bootstrap_deb_packages.sh
45
46COPY install/install_deb_packages.sh /install/
47RUN /install/install_deb_packages.sh
48
49# Install additional packages needed for this image:
50# - dependencies to build Python from source
51# - patchelf, as it is required by auditwheel
52RUN apt-get update && apt-get install -y \
53    libbz2-dev \
54    libffi-dev \
55    libgdbm-dev \
56    libncurses5-dev \
57    libnss3-dev \
58    libreadline-dev \
59    patchelf \
60      && \
61    rm -rf /var/lib/apt/lists/*
62
63COPY install/install_bazel.sh /install/
64RUN /install/install_bazel.sh
65
66COPY install/build_and_install_python.sh /install/
67RUN /install/build_and_install_python.sh "3.7.7"
68RUN /install/build_and_install_python.sh "3.8.2"
69RUN /install/build_and_install_python.sh "3.9.0"
70
71COPY install/install_pip_packages_by_version.sh /install/
72RUN /install/install_pip_packages_by_version.sh "/usr/local/bin/pip3.7"
73RUN /install/install_pip_packages_by_version.sh "/usr/local/bin/pip3.8"
74RUN /install/install_pip_packages_by_version.sh "/usr/local/bin/pip3.9"
75
76ENV CLANG_VERSION="r42cab985fd95ba4f3f290e7bb26b93805edb447d"
77COPY install/install_latest_clang.sh /install/
78RUN /install/install_latest_clang.sh
79