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