• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.cuda11.0-cudnn8-ubuntu18.04-manylinux2010-multipython \
8#  --tag "gcr.io/tensorflow-testing/nosla-cuda11.0-cudnn8-ubuntu18.04-manylinux2010-multipython" .
9# $ docker push gcr.io/tensorflow-testing/nosla-cuda11.0-cudnn8-ubuntu18.04-manylinux2010-multipython
10
11FROM nvidia/cuda:11.0-cudnn8-devel-ubuntu18.04 as devtoolset
12
13ENV DEBIAN_FRONTEND=noninteractive
14RUN apt-get update && apt-get install -y \
15      cpio \
16      file \
17      flex \
18      g++ \
19      make \
20      patch \
21      rpm2cpio \
22      unar \
23      wget \
24      xz-utils \
25      && \
26    rm -rf /var/lib/apt/lists/*
27
28ADD devtoolset/fixlinks.sh fixlinks.sh
29ADD devtoolset/build_devtoolset.sh build_devtoolset.sh
30ADD devtoolset/rpm-patch.sh rpm-patch.sh
31
32# Set up a sysroot for glibc 2.12 / libstdc++ 4.4 / devtoolset-7 in /dt7.
33RUN /build_devtoolset.sh devtoolset-7 /dt7
34# Set up a sysroot for glibc 2.12 / libstdc++ 4.4 / devtoolset-8 in /dt8.
35RUN /build_devtoolset.sh devtoolset-8 /dt8
36
37# TODO(klimek): Split up into two different docker images.
38FROM nvidia/cuda:11.0-cudnn8-devel-ubuntu18.04
39COPY --from=devtoolset /dt7 /dt7
40COPY --from=devtoolset /dt8 /dt8
41
42# Install TensorRT.
43RUN echo \
44    deb https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64 / \
45    > /etc/apt/sources.list.d/nvidia-ml.list \
46      && \
47    apt-get update && apt-get install -y \
48    libnvinfer-dev=7.1.3-1+cuda11.0 \
49    libnvinfer7=7.1.3-1+cuda11.0 \
50    libnvinfer-plugin-dev=7.1.3-1+cuda11.0 \
51    libnvinfer-plugin7=7.1.3-1+cuda11.0 \
52      && \
53    rm -rf /var/lib/apt/lists/*
54
55# Copy and run the install scripts.
56ARG DEBIAN_FRONTEND=noninteractive
57
58COPY install/install_bootstrap_deb_packages.sh /install/
59RUN /install/install_bootstrap_deb_packages.sh
60
61COPY install/install_deb_packages.sh /install/
62RUN /install/install_deb_packages.sh
63
64# Install additional packages needed for this image:
65# - dependencies to build Python from source
66# - patchelf, as it is required by auditwheel
67RUN apt-get update && apt-get install -y \
68    libbz2-dev \
69    libffi-dev \
70    libgdbm-dev \
71    libncurses5-dev \
72    libnss3-dev \
73    libreadline-dev \
74    patchelf \
75      && \
76    rm -rf /var/lib/apt/lists/*
77
78COPY install/install_bazel.sh /install/
79RUN /install/install_bazel.sh
80
81COPY install/build_and_install_python.sh /install/
82RUN /install/build_and_install_python.sh "3.6.9"
83RUN /install/build_and_install_python.sh "3.7.7"
84RUN /install/build_and_install_python.sh "3.8.2"
85
86COPY install/install_pip_packages_by_version.sh /install/
87RUN /install/install_pip_packages_by_version.sh "/usr/local/bin/pip3.6"
88RUN /install/install_pip_packages_by_version.sh "/usr/local/bin/pip3.7"
89RUN /install/install_pip_packages_by_version.sh "/usr/local/bin/pip3.8"
90
91ENV CLANG_VERSION="r7f6f9f4cf966c78a315d15d6e913c43cfa45c47c"
92COPY install/install_latest_clang.sh /install/
93RUN /install/install_latest_clang.sh
94