• 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.cuda10.1-cudnn7-ubuntu18.04-manylinux2010-multipython \
8#  --tag "gcr.io/tensorflow-testing/nosla-cuda10.1-cudnn7-ubuntu18.04-manylinux2010-multipython" .
9# $ docker push gcr.io/tensorflow-testing/nosla-cuda10.1-cudnn7-ubuntu18.04-manylinux2010-multipython
10
11FROM nvidia/cuda:10.1-cudnn7-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      rpm2cpio \
21      unar \
22      wget \
23      && \
24    rm -rf /var/lib/apt/lists/*
25
26ADD devtoolset/fixlinks.sh fixlinks.sh
27ADD devtoolset/build_devtoolset.sh build_devtoolset.sh
28ADD devtoolset/rpm-patch.sh rpm-patch.sh
29
30# Set up a sysroot for glibc 2.12 / libstdc++ 4.4 / devtoolset-7 in /dt7.
31RUN /build_devtoolset.sh devtoolset-7 /dt7
32# Set up a sysroot for glibc 2.12 / libstdc++ 4.4 / devtoolset-8 in /dt8.
33RUN /build_devtoolset.sh devtoolset-8 /dt8
34
35# TODO(klimek): Split up into two different docker images.
36FROM nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04
37COPY --from=devtoolset /dt7 /dt7
38COPY --from=devtoolset /dt8 /dt8
39
40# Install TensorRT.
41RUN apt-get update && apt-get install -y \
42    libnvinfer-dev=6.0.1-1+cuda10.1 \
43    libnvinfer6=6.0.1-1+cuda10.1 \
44    libnvinfer-plugin-dev=6.0.1-1+cuda10.1 \
45    libnvinfer-plugin6=6.0.1-1+cuda10.1 \
46      && \
47    rm -rf /var/lib/apt/lists/*
48
49# Copy and run the install scripts.
50ARG DEBIAN_FRONTEND=noninteractive
51
52COPY install/install_bootstrap_deb_packages.sh /install/
53RUN /install/install_bootstrap_deb_packages.sh
54
55COPY install/install_deb_packages.sh /install/
56RUN /install/install_deb_packages.sh
57
58# Install additional packages needed for this image:
59# - dependencies to build Python from source
60# - patchelf, as it is required by auditwheel
61RUN apt-get update && apt-get install -y \
62    libbz2-dev \
63    libffi-dev \
64    libgdbm-dev \
65    libncurses5-dev \
66    libnss3-dev \
67    libreadline-dev \
68    patchelf \
69      && \
70    rm -rf /var/lib/apt/lists/*
71
72COPY install/install_bazel.sh /install/
73RUN /install/install_bazel.sh
74
75COPY install/build_and_install_python.sh /install/
76RUN /install/build_and_install_python.sh "3.5.9"
77RUN /install/build_and_install_python.sh "3.6.9"
78RUN /install/build_and_install_python.sh "3.7.7"
79RUN /install/build_and_install_python.sh "3.8.2"
80
81COPY install/install_pip_packages_by_version.sh /install/
82RUN /install/install_pip_packages_by_version.sh "/usr/local/bin/pip3.6"
83RUN /install/install_pip_packages_by_version.sh "/usr/local/bin/pip3.7"
84RUN /install/install_pip_packages_by_version.sh "/usr/local/bin/pip3.8"
85
86ENV CLANG_VERSION="r42cab985fd95ba4f3f290e7bb26b93805edb447d"
87COPY install/install_latest_clang.sh /install/
88RUN /install/install_latest_clang.sh
89