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 cuda11.2.1-cudnn8-ubuntu20.04-manylinux2014-multipython.Dockerfile . \
8
+ # --tag "tfra/nosla-cuda11.2.1-cudnn8-ubuntu20.04-manylinux2014-multipython:r0.4"
9
+ # $ docker push tfra/nosla-cuda11.2.1-cudnn8-ubuntu20.04-manylinux2014-multipython:r0.4
10
+
11
+ FROM nvidia/cuda:11.2.1-cudnn8-devel-ubuntu20.04 as devtoolset
12
+
13
+ RUN chmod 777 /tmp/
14
+ ENV DEBIAN_FRONTEND=noninteractive
15
+ RUN apt-get update && apt-get install -y \
16
+ cpio \
17
+ file \
18
+ flex \
19
+ g++ \
20
+ make \
21
+ patch \
22
+ rpm2cpio \
23
+ unar \
24
+ wget \
25
+ xz-utils \
26
+ libjpeg-dev \
27
+ zlib1g-dev \
28
+ libgflags-dev \
29
+ libsnappy-dev \
30
+ libbz2-dev \
31
+ liblz4-dev \
32
+ libzstd-dev \
33
+ openssh-client \
34
+ && \
35
+ rm -rf /var/lib/apt/lists/*
36
+
37
+ ADD devtoolset/fixlinks.sh fixlinks.sh
38
+ ADD devtoolset/build_devtoolset.sh build_devtoolset.sh
39
+ ADD devtoolset/rpm-patch.sh rpm-patch.sh
40
+
41
+ # Set up a sysroot for glibc 2.12 / libstdc++ 4.4 / devtoolset-7 in /dt7.
42
+ RUN /build_devtoolset.sh devtoolset-7 /dt7
43
+ # Set up a sysroot for glibc 2.12 / libstdc++ 4.4 / devtoolset-8 in /dt8.
44
+ RUN /build_devtoolset.sh devtoolset-8 /dt8
45
+
46
+ # TODO(klimek): Split up into two different docker images.
47
+ FROM nvidia/cuda:11.2.0-cudnn8-devel-ubuntu18.04
48
+ COPY --from=devtoolset /dt7 /dt7
49
+ COPY --from=devtoolset /dt8 /dt8
50
+
51
+ ENV DEBIAN_FRONTEND=noninteractive
52
+
53
+ # Copy and run the install scripts.
54
+ ARG DEBIAN_FRONTEND=noninteractive
55
+
56
+ COPY install/install_bootstrap_deb_packages.sh /install/
57
+ RUN /install/install_bootstrap_deb_packages.sh
58
+
59
+ COPY install/install_deb_packages.sh /install/
60
+ RUN /install/install_deb_packages.sh
61
+
62
+ # Install additional packages needed for this image:
63
+ # - dependencies to build Python from source
64
+ # - patchelf, as it is required by auditwheel
65
+ RUN apt-get update && apt-get install -y \
66
+ libbz2-dev \
67
+ libffi-dev \
68
+ libgdbm-dev \
69
+ libncurses5-dev \
70
+ libnss3-dev \
71
+ libreadline-dev \
72
+ patchelf \
73
+ gcc-multilib \
74
+ && \
75
+ rm -rf /var/lib/apt/lists/*
76
+
77
+ RUN chmod 777 /tmp/
78
+ WORKDIR /tmp/
79
+
80
+ COPY install/install_nccl.sh /install/
81
+ RUN /install/install_nccl.sh "2.8.4-1+cuda11.2"
82
+
83
+ COPY install/install_rocksdb.sh /install/
84
+ RUN /install/install_rocksdb.sh "6.22.1"
85
+
86
+ COPY install/install_bazel.sh /install/
87
+ RUN /install/install_bazel.sh "5.1.1"
88
+
89
+ COPY install/build_and_install_python.sh /install/
90
+ RUN /install/build_and_install_python.sh "3.6.9"
91
+ RUN /install/build_and_install_python.sh "3.7.7"
92
+ RUN /install/build_and_install_python.sh "3.8.2"
93
+ RUN /install/build_and_install_python.sh "3.9.7"
94
+
95
+ COPY install/install_pip_packages_by_version.sh /install/
96
+ RUN /install/install_pip_packages_by_version.sh "/usr/local/bin/pip3.9"
97
+ RUN /install/install_pip_packages_by_version.sh "/usr/local/bin/pip3.8"
98
+ RUN /install/install_pip_packages_by_version.sh "/usr/local/bin/pip3.6"
99
+ RUN /install/install_pip_packages_by_version.sh "/usr/local/bin/pip3.7"
100
+
101
+ ENV CLANG_VERSION="r7f6f9f4cf966c78a315d15d6e913c43cfa45c47c"
102
+ COPY install/install_latest_clang.sh /install/
103
+ RUN /install/install_latest_clang.sh
104
+
105
+ COPY install/use_devtoolset_7.sh /install/
106
+ RUN /install/use_devtoolset_7.sh
107
+
108
+ COPY install/install_rocksdb.sh /install/
109
+ RUN /install/install_rocksdb.sh "6.22.1"
110
+
111
+ COPY install/install_openmpi.sh /install/
112
+ RUN /install/install_openmpi.sh "4.1.1"
113
+
114
+ # clean
115
+ RUN rm -rf /tmp/*
0 commit comments