Skip to content

Commit d93349a

Browse files
authored
Merge pull request #14460 from velconia/add_py36_py37_dockerfile
Add python3.6 python3.7 support to manylinux Dockerfile
2 parents ae7d228 + bba6224 commit d93349a

File tree

3 files changed

+30
-14
lines changed

3 files changed

+30
-14
lines changed

tools/manylinux1/Dockerfile.x64

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,21 @@ RUN cd /opt && wget -q --no-check-certificate https://github.com/google/protobuf
3636
tar xzf protobuf-cpp-3.1.0.tar.gz && \
3737
cd protobuf-3.1.0 && ./configure && make -j4 && make install && cd .. && rm -f protobuf-cpp-3.1.0.tar.gz
3838

39-
RUN wget -O /root/requirements.txt https://raw.githubusercontent.com/PaddlePaddle/Paddle/develop/python/requirements.txt
39+
RUN wget https://raw.githubusercontent.com/PaddlePaddle/Paddle/develop/python/requirements.txt -O /root/requirements.txt
4040

4141
RUN LD_LIBRARY_PATH=/opt/_internal/cpython-2.7.11-ucs4/lib:${LD_LIBRARY_PATH} /opt/python/cp27-cp27mu/bin/pip install -r /root/requirements.txt && \
4242
LD_LIBRARY_PATH=/opt/_internal/cpython-2.7.11-ucs2/lib:${LD_LIBRARY_PATH} /opt/python/cp27-cp27m/bin/pip install -r /root/requirements.txt && \
4343
LD_LIBRARY_PATH=/opt/_internal/cpython-3.5.1/lib/:${LD_LIBRARY_PATH} /opt/_internal/cpython-3.5.1/bin/pip3 install -r /root/requirements.txt && \
44+
LD_LIBRARY_PATH=/opt/_internal/cpython-3.6.0/lib/:${LD_LIBRARY_PATH} /opt/_internal/cpython-3.6.0/bin/pip3 install -r /root/requirements.txt && \
45+
LD_LIBRARY_PATH=/opt/_internal/cpython-3.7.0/lib/:${LD_LIBRARY_PATH} /opt/_internal/cpython-3.7.0/bin/pip3 install -r /root/requirements.txt && \
4446
go get github.com/Masterminds/glide && \
4547
rm -rf /root/requirements.txt
4648

4749
RUN LD_LIBRARY_PATH=/opt/_internal/cpython-2.7.11-ucs4/lib:${LD_LIBRARY_PATH} /opt/python/cp27-cp27mu/bin/pip install pre-commit 'ipython==5.3.0' opencv-python && \
4850
LD_LIBRARY_PATH=/opt/_internal/cpython-2.7.11-ucs2/lib:${LD_LIBRARY_PATH} /opt/python/cp27-cp27m/bin/pip install pre-commit 'ipython==5.3.0' opencv-python && \
49-
LD_LIBRARY_PATH=/opt/_internal/cpython-3.5.1/lib/:${LD_LIBRARY_PATH} /opt/_internal/cpython-3.5.1/bin/pip3 install pre-commit 'ipython==5.3.0' opencv-python
51+
LD_LIBRARY_PATH=/opt/_internal/cpython-3.5.1/lib/:${LD_LIBRARY_PATH} /opt/_internal/cpython-3.5.1/bin/pip3 install pre-commit 'ipython==5.3.0' opencv-python && \
52+
LD_LIBRARY_PATH=/opt/_internal/cpython-3.6.0/lib/:${LD_LIBRARY_PATH} /opt/_internal/cpython-3.6.0/bin/pip3 install pre-commit 'ipython==5.3.0' opencv-python && \
53+
LD_LIBRARY_PATH=/opt/_internal/cpython-3.7.0/lib/:${LD_LIBRARY_PATH} /opt/_internal/cpython-3.7.0/bin/pip3 install pre-commit 'ipython==5.3.0' opencv-python
5054

5155
RUN wget -O /opt/swig-2.0.12.tar.gz https://cytranet.dl.sourceforge.net/project/swig/swig/swig-2.0.12/swig-2.0.12.tar.gz && \
5256
cd /opt && tar xzf swig-2.0.12.tar.gz && cd /opt/swig-2.0.12 && ./configure && make && make install && cd /opt && rm swig-2.0.12.tar.gz

tools/manylinux1/build_scripts/build.sh

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ set -ex
99
# remove others to expedite build and reduce docker image size. The original
1010
# manylinux docker image project builds many python versions.
1111
# NOTE We added back 3.5.1, since auditwheel requires python 3.3+
12-
CPYTHON_VERSIONS="2.7.11 3.5.1"
12+
CPYTHON_VERSIONS="3.7.0 3.6.0 3.5.1 2.7.11"
1313

1414
# openssl version to build, with expected sha256 hash of .tar.gz
1515
# archive
16-
OPENSSL_ROOT=openssl-1.0.2l
17-
OPENSSL_HASH=ce07195b659e75f4e1db43552860070061f156a98bb37b672b101ba6e3ddf30c
16+
OPENSSL_ROOT=openssl-1.1.0i
17+
OPENSSL_HASH=ebbfc844a8c8cc0ea5dc10b86c9ce97f401837f3fa08c17b2cdadc118253cf99
1818
EPEL_RPM_HASH=e5ed9ecf22d0c4279e92075a64c757ad2b38049bcf5c16c4f2b75d5f6860dc0d
1919
DEVTOOLS_HASH=a8ebeb4bed624700f727179e6ef771dafe47651131a00a78b342251415646acc
2020
PATCHELF_HASH=d9afdff4baeacfbc64861454f368b7f2c15c44d245293f7587bbf726bfe722fb
@@ -25,7 +25,7 @@ AUTOCONF_HASH=954bd69b391edc12d6a4a51a2dd1476543da5c6bbf05a95b59dc0dd6fd4c2969
2525

2626
# Dependencies for compiling Python that we want to remove from
2727
# the final image after compiling Python
28-
PYTHON_COMPILE_DEPS="zlib-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel"
28+
PYTHON_COMPILE_DEPS="zlib-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel"
2929

3030
# Libraries that are allowed as part of the manylinux1 profile
3131
MANYLINUX1_DEPS="glibc-devel libstdc++-devel glib2-devel libX11-devel libXext-devel libXrender-devel mesa-libGL-devel libICE-devel libSM-devel ncurses-devel freetype-devel libpng-devel"
@@ -61,7 +61,7 @@ yum -y install bzip2 make git patch unzip bison yasm diffutils \
6161

6262
wget -q https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz && tar xzf cmake-3.5.2.tar.gz && \
6363
cd cmake-3.5.2 && ./bootstrap && \
64-
make -j4 && make install && cd .. && rm cmake-3.5.2.tar.gz
64+
make -j8 && make install && cd .. && rm cmake-3.5.2.tar.gz
6565

6666

6767
# Install newest autoconf
@@ -77,11 +77,13 @@ mkdir -p /opt/python
7777
build_cpythons $CPYTHON_VERSIONS
7878

7979
PY35_BIN=/opt/python/cp35-cp35m/bin
80+
PY36_BIN=/opt/python/cp36-cp36m/bin
81+
PY37_BIN=/opt/python/cp37-cp37m/bin
8082
# NOTE Since our custom manylinux image builds pythons with shared
8183
# libpython, we need to add libpython's dir to LD_LIBRARY_PATH before running
8284
# python.
8385
ORIGINAL_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}"
84-
LD_LIBRARY_PATH="${ORIGINAL_LD_LIBRARY_PATH}:$(dirname ${PY35_BIN})/lib"
86+
LD_LIBRARY_PATH="${ORIGINAL_LD_LIBRARY_PATH}:$(dirname ${PY35_BIN})/lib:$(dirname ${PY36_BIN})/lib:$(dirname ${PY37_BIN})/lib"
8587

8688
# Our openssl doesn't know how to find the system CA trust store
8789
# (https://github.com/pypa/manylinux/issues/53)
@@ -119,9 +121,8 @@ ln -s $PY35_BIN/auditwheel /usr/local/bin/auditwheel
119121
# final image
120122
yum -y erase wireless-tools gtk2 libX11 hicolor-icon-theme \
121123
avahi freetype bitstream-vera-fonts \
122-
${PYTHON_COMPILE_DEPS} > /dev/null 2>&1
123-
yum -y install ${MANYLINUX1_DEPS}
124-
yum -y clean all > /dev/null 2>&1
124+
${PYTHON_COMPILE_DEPS} > /dev/null 2>&1 || true
125+
yum -y install ${MANYLINUX1_DEPS} && yum -y clean all > /dev/null 2>&1 || true
125126
yum list installed
126127
# we don't need libpython*.a, and they're many megabytes
127128
find /opt/_internal -name '*.a' -print0 | xargs -0 rm -f

tools/manylinux1/build_scripts/build_utils.sh

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,17 @@ function do_cpython_build {
5252

5353
# NOTE --enable-shared for generating libpython shared library needed for
5454
# linking of some of the nupic.core test executables.
55-
CFLAGS="-Wformat" ./configure --prefix=${prefix} --enable-shared $unicode_flags > /dev/null
56-
make -j2 > /dev/null
57-
make install > /dev/null
55+
if [ $(lex_pyver $py_ver) -ge $(lex_pyver 3.7) ]; then
56+
# NOTE python 3.7 should be installed via make altinstall rather than
57+
# make install, and we should specify the location of ssl
58+
CFLAGS="-Wformat" ./configure --prefix=${prefix} --with-openssl=/usr/local/ssl --enable-shared $unicode_flags > /dev/null
59+
make -j8 > /dev/null
60+
make altinstall > /dev/null
61+
else
62+
CFLAGS="-Wformat" ./configure --prefix=${prefix} --enable-shared $unicode_flags > /dev/null
63+
make -j8 > /dev/null
64+
make install > /dev/null
65+
fi
5866
popd
5967
echo "ZZZ looking for libpython"
6068
find / -name 'libpython*.so*'
@@ -64,6 +72,9 @@ function do_cpython_build {
6472
if [ -e ${prefix}/bin/python3 ]; then
6573
ln -s python3 ${prefix}/bin/python
6674
fi
75+
if [ -e ${prefix}/bin/python3.7 ]; then
76+
ln -s python3.7 ${prefix}/bin/python
77+
fi
6778
# NOTE Make libpython shared library visible to python calls below
6879
LD_LIBRARY_PATH="${prefix}/lib" ${prefix}/bin/python get-pip.py
6980
LD_LIBRARY_PATH="${prefix}/lib" ${prefix}/bin/pip install wheel

0 commit comments

Comments
 (0)