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