diff --git a/tools/dockerfile/Dockerfile.centos b/tools/dockerfile/Dockerfile.centos index c88d5927cf0cf179bbb990617474310e9bf024cd..337874dac1b3f21d9d7e03171d209b7441d826c2 100644 --- a/tools/dockerfile/Dockerfile.centos +++ b/tools/dockerfile/Dockerfile.centos @@ -10,13 +10,14 @@ ENV LC_ALL en_US.UTF-8 ENV LANG en_US.UTF-8 ENV LANGUAGE en_US.UTF-8 ENV PATH /opt/rh/devtoolset-2/root/usr/bin:$PATH -ENV LD_LIBRARY_PATH /opt/rh/devtoolset-2/root/usr/lib64:/opt/rh/devtoolset-2/root/usr/lib:/usr/local/lib64:/usr/local/lib:${LD_LIBRARY_PATH} +ENV LD_LIBRARY_PATH /usr/local/ssl/lib:/opt/rh/devtoolset-2/root/usr/lib64:/opt/rh/devtoolset-2/root/usr/lib:/usr/local/lib64:/usr/local/lib:${LD_LIBRARY_PATH} ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig -RUN yum install -y gettext-devel sqlite-devel zlib-devel openssl-devel pcre-devel vim tk-devel tkinter libtool xz graphviz wget curl-devel +RUN yum install -y bzip2 gettext-devel sqlite-devel zlib-devel openssl-devel pcre-devel vim tk-devel tkinter libtool xz graphviz wget curl-devel COPY build_scripts /build_scripts RUN bash build_scripts/build.sh RUN bash build_scripts/install_nccl2.sh +RUN bash build_scripts/install_trt.sh RUN rm -rf build_scripts ENV SSL_CERT_FILE=/opt/_internal/certs.pem @@ -25,7 +26,7 @@ ENV SSL_CERT_FILE=/opt/_internal/certs.pem RUN wget -q https://paddle-ci.gz.bcebos.com/git-2.17.1.tar.gz && \ tar -xvf git-2.17.1.tar.gz && \ cd git-2.17.1 && \ - ./configure --prefix=/usr/local && \ + ./configure --with-openssl=/usr/local/ssl --prefix=/usr/local && \ make -j8 && make install # for paddle @@ -37,10 +38,10 @@ RUN wget --no-check-certificate -qO- https://storage.googleapis.com/golang/go1.8 ENV GOROOT=/usr/local/go GOPATH=/root/gopath -ENV PATH=${GOROOT}/bin:${GOPATH}/bin:${PATH} +ENV PATH=/usr/local/ssl:${GOROOT}/bin:${GOPATH}/bin:${PATH} # protobuf 3.6.1 -RUN cd /opt && wget -q --no-check-certificate https://github.com/google/protobuf/releases/download/v3.6.1/protobuf-cpp-3.6.1.tar.gz && \ +RUN cd /opt && wget -q --no-check-certificate https://paddle-ci.cdn.bcebos.com/protobuf-cpp-3.6.1.tar.gz && \ tar xzf protobuf-cpp-3.6.1.tar.gz && \ cd protobuf-3.6.1 && ./configure && make -j4 && make install && cd .. && rm -f protobuf-cpp-3.6.1.tar.gz @@ -79,7 +80,4 @@ RUN wget https://paddle-ci.gz.bcebos.com/ccache-3.7.9.tar.gz && \ make -j8 && make install && \ ln -s /usr/local/ccache-3.7.9/bin/ccache /usr/local/bin/ccache -# Downgrade gcc&&g++ - - CMD ["bash", "/paddle/paddle/scripts/docker/build.sh"] diff --git a/tools/dockerfile/Dockerfile.cuda10_ubuntu18_cinn b/tools/dockerfile/Dockerfile.cuda10_ubuntu18_cinn index 964f082b56137194c4bf0ccd048a8c62ed49a422..ed4fe92a588a142f218ab8e0dda2f62e682c6b50 100644 --- a/tools/dockerfile/Dockerfile.cuda10_ubuntu18_cinn +++ b/tools/dockerfile/Dockerfile.cuda10_ubuntu18_cinn @@ -112,7 +112,7 @@ RUN pip3 --no-cache-dir install -r /root/requirements.txt && \ # Older versions of patchelf limited the size of the files being processed and were fixed in this pr. # https://github.com/NixOS/patchelf/commit/ba2695a8110abbc8cc6baf0eea819922ee5007fa # So install a newer version here. -RUN wget -q http://mirrors.kernel.org/ubuntu/pool/universe/p/patchelf/patchelf_0.10-2_amd64.deb && \ +RUN wget -q https://paddle-ci.cdn.bcebos.com/patchelf_0.10-2_amd64.deb && \ dpkg -i patchelf_0.10-2_amd64.deb # Configure OpenSSH server. c.f. https://docs.docker.com/engine/examples/running_ssh_service diff --git a/tools/dockerfile/Dockerfile.rocm b/tools/dockerfile/Dockerfile.rocm new file mode 100644 index 0000000000000000000000000000000000000000..d761b64dced021900a27dfb961d1c6b0b5001077 --- /dev/null +++ b/tools/dockerfile/Dockerfile.rocm @@ -0,0 +1,163 @@ +# A image for building paddle binaries +# Use rocm-terminal base image for both rocm environment +# When you modify it, please be aware of rocm version +FROM ubuntu:18.04 +MAINTAINER PaddlePaddle Authors + +# ENV variables +ARG WITH_GPU +ARG WITH_ROCM_PLATFORM + +ENV WITH_GPU=${WITH_GPU:-OFF} +ENV WITH_ROCM_PLATFORM=${WITH_ROCM_PLATFORM:-ON} + +ENV HOME /root +ENV DEBIAN_FRONTEND=noninteractive + +# Add bash enhancements +COPY paddle/scripts/docker/root/ /root/ + +# Update Environment +RUN apt-get update && apt-get upgrade -y +RUN apt-get update && apt-get install -y apt-utils sudo + +# Update Timezone +RUN apt install tzdata && \ + ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone && \ + dpkg-reconfigure -f noninteractive tzdata + +# Location +RUN apt-get update && apt-get install -y locales && locale-gen en_US.UTF-8 + ENV LANG="en_US.UTF-8" + ENV LANGUAGE="en_US.UTF-8" + ENV LC_ALL="en_US.UTF-8" + +RUN apt-get update && \ + apt-get install -y make cmake build-essential libssl-dev zlib1g-dev libbz2-dev \ + libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \ + xz-utils tk-dev libffi-dev liblzma-dev openmpi-bin openmpi-doc libopenmpi-dev \ + git vim texinfo patchelf openssl unzip pciutils net-tools python-pip python-dev \ + python-opencv python-matplotlib + +# Downgrade gcc&&g++ +WORKDIR /usr/bin +COPY tools/dockerfile/build_scripts /build_scripts +RUN bash /build_scripts/install_gcc.sh gcc82 && rm -rf /build_scripts +RUN cp gcc gcc.bak && cp g++ g++.bak && rm gcc && rm g++ && \ + ln -s /usr/local/gcc-8.2/bin/gcc /usr/local/bin/gcc && \ + ln -s /usr/local/gcc-8.2/bin/g++ /usr/local/bin/g++ && \ + ln -s /usr/local/gcc-8.2/bin/gcc /usr/bin/gcc && \ + ln -s /usr/local/gcc-8.2/bin/g++ /usr/bin/g++ +ENV PATH=/usr/local/gcc-8.2/bin:$PATH + +# install cmake +WORKDIR /opt +RUN wget -q https://cmake.org/files/v3.16/cmake-3.16.0-Linux-x86_64.tar.gz && tar -zxf cmake-3.16.0-Linux-x86_64.tar.gz && rm cmake-3.16.0-Linux-x86_64.tar.gz +ENV PATH=/opt/cmake-3.16.0-Linux-x86_64/bin:$PATH +RUN echo "export PATH=/opt/cmake-3.16.0-Linux-x86_64/bin:\${PATH}" >> ~/.bashrc + +# Install Go and glide +RUN wget -qO- https://paddle-ci.cdn.bcebos.com/go1.8.1.linux-amd64.tar.gz | \ + tar -xz -C /usr/local && \ + mkdir /root/gopath && \ + mkdir /root/gopath/bin && \ + mkdir /root/gopath/src +ENV GOROOT=/usr/local/go GOPATH=/root/gopath +# should not be in the same line with GOROOT definition, otherwise docker build could not find GOROOT. +ENV PATH=${PATH}:${GOROOT}/bin:${GOPATH}/bin +RUN echo "GOROOT=/usr/local/go" >> ~/.bashrc && \ + echo "GOPATH=/root/gopath" >> ~/.bashrc && \ + echo "export PATH=\${PATH}:\${GOROOT}/bin:\${GOPATH}/bin" >> ~/.bashrc + +# install glide +RUN curl -s -q https://glide.sh/get | sh + +# git credential to skip password typing +RUN git config --global credential.helper store + +# Fix locales to en_US.UTF-8 +RUN localedef -i en_US -f UTF-8 en_US.UTF-8 + +RUN apt-get update && \ + apt-get install -y python2.7 python2.7-dev \ + python3.6 python3.6-dev \ + python3.7 python3.7-dev \ + python3.8 python3.8-dev \ + python3-distutils && \ + curl https://bootstrap.pypa.io/get-pip.py -o - | python2.7 && \ + curl https://bootstrap.pypa.io/get-pip.py -o - | python3.6 && \ + curl https://bootstrap.pypa.io/get-pip.py -o - | python3.7 && \ + curl https://bootstrap.pypa.io/get-pip.py -o - | python3.8 && \ + rm /usr/bin/python && ln -s /usr/bin/python2.7 /usr/bin/python && \ + rm /usr/bin/python3 && ln -s /usr/bin/python3.7 /usr/bin/python3 && \ + rm /usr/local/bin/pip && ln -s /usr/local/bin/pip2.7 /usr/local/bin/pip && \ + rm /usr/local/bin/pip3 && ln -s /usr/local/bin/pip3.7 /usr/local/bin/pip3 + +RUN pip3 --no-cache-dir install pre-commit==1.10.4 ipython==5.3.0 && \ + pip3 --no-cache-dir install ipykernel==4.6.0 wheel && \ + pip3.6 --no-cache-dir install pre-commit==1.10.4 ipython==5.3.0 && \ + pip3.6 --no-cache-dir install ipykernel==4.6.0 wheel && \ + pip3.8 --no-cache-dir install pre-commit==1.10.4 ipython==5.3.0 && \ + pip3.8 --no-cache-dir install ipykernel==4.6.0 wheel && \ + pip --no-cache-dir install pre-commit==1.10.4 ipython==5.3.0 && \ + pip --no-cache-dir install ipykernel==4.6.0 wheel + +#For docstring checker +RUN pip3 --no-cache-dir install pylint pytest astroid isort && \ + pip3.6 --no-cache-dir install pylint pytest astroid isort && \ + pip3.8 --no-cache-dir install pylint pytest astroid isort && \ + pip --no-cache-dir install pylint pytest astroid isort + +COPY ./python/requirements.txt /root/ +RUN pip3 --no-cache-dir install -r /root/requirements.txt && \ + pip3.6 --no-cache-dir install -r /root/requirements.txt && \ + pip3.8 --no-cache-dir install -r /root/requirements.txt && \ + pip --no-cache-dir install -r /root/requirements.txt + +RUN apt-get install libprotobuf-dev -y + + +# Configure OpenSSH server. c.f. https://docs.docker.com/engine/examples/running_ssh_service +RUN apt-get update && apt-get install -y openssh-server +RUN mkdir /var/run/sshd && echo 'root:root' | chpasswd && \ + sed -ri 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config && \ + sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config +CMD source ~/.bashrc + +# ccache 3.7.9 +RUN wget https://paddle-ci.gz.bcebos.com/ccache-3.7.9.tar.gz && \ + tar xf ccache-3.7.9.tar.gz && mkdir /usr/local/ccache-3.7.9 && cd ccache-3.7.9 && \ + ./configure -prefix=/usr/local/ccache-3.7.9 && \ + make -j8 && make install && \ + ln -s /usr/local/ccache-3.7.9/bin/ccache /usr/local/bin/ccache + +# Install ROCM Package +RUN wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | apt-key add - +RUN echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt// xenial main' | tee /etc/apt/sources.list.d/rocm.list +RUN apt-get update && apt install rocm-dkms -y + +# Install ROCM Libs +RUN apt-get update && apt-get install rocblas miopen-hip rocrand rccl -y +# rocPRIM +RUN wget https://github.com/ROCmSoftwarePlatform/rocPRIM/archive/rocm-.tar.gz && tar zxf rocm-.tar.gz && rm -rf rocm-.tar.gz && \ + cd rocPRIM-rocm- && mkdir build && cd build && \ + CXX=/opt/rocm/hip/bin/hipcc cmake .. && \ + make -j8 && make install && \ + cd .. && rm -rf rocPRIM-rocm-/ +# rocThrust +RUN wget https://github.com/ROCmSoftwarePlatform/rocThrust/archive/rocm-.tar.gz && tar zxf rocm-.tar.gz && rm -rf rocm-.tar.gz && \ + cd rocThrust-rocm- && mkdir build && cd build && \ + CXX=/opt/rocm/hip/bin/hipcc cmake .. && \ + make -j8 && make install && \ + cd .. && rm -rf rocThrust-rocm-/ +# hipCUB +RUN wget https://github.com/ROCmSoftwarePlatform/hipCUB/archive/rocm-.tar.gz && tar zxf rocm-.tar.gz && rm -rf rocm-.tar.gz && \ + cd hipCUB-rocm- && mkdir build && cd build && \ + CXX=/opt/rocm/hip/bin/hipcc cmake .. && \ + make -j8 && make install && \ + cd .. && rm -rf hipCUB-rocm-/ + +ENV PATH=/opt/rocm/bin:$PATH +RUN echo "export PATH=/opt/rocm/bin:\${PATH}" >> ~/.bashrc + +EXPOSE 22 \ No newline at end of file diff --git a/tools/dockerfile/Dockerfile.ubuntu b/tools/dockerfile/Dockerfile.ubuntu index a4d458021ab9c09acf8bf48a4cce5116d520b000..d68992717c5126b4ddaa9e4a38dd728d8bf1f8c9 100644 --- a/tools/dockerfile/Dockerfile.ubuntu +++ b/tools/dockerfile/Dockerfile.ubuntu @@ -212,7 +212,7 @@ RUN apt-get install libprotobuf-dev -y # Older versions of patchelf limited the size of the files being processed and were fixed in this pr. # https://github.com/NixOS/patchelf/commit/ba2695a8110abbc8cc6baf0eea819922ee5007fa # So install a newer version here. -RUN wget -q http://mirrors.kernel.org/ubuntu/pool/universe/p/patchelf/patchelf_0.10-2_amd64.deb && \ +RUN wget -q https://paddle-ci.cdn.bcebos.com/patchelf_0.10-2_amd64.deb && \ dpkg -i patchelf_0.10-2_amd64.deb # Configure OpenSSH server. c.f. https://docs.docker.com/engine/examples/running_ssh_service diff --git a/tools/dockerfile/Dockerfile.ubuntu18 b/tools/dockerfile/Dockerfile.ubuntu18 index f8b7bbf91fb70979851be335f846ae4c484c5d78..62dd5734a8df2616e504959920c6247eed665496 100644 --- a/tools/dockerfile/Dockerfile.ubuntu18 +++ b/tools/dockerfile/Dockerfile.ubuntu18 @@ -11,6 +11,7 @@ ARG WITH_AVX ENV WITH_GPU=${WITH_GPU:-ON} ENV WITH_AVX=${WITH_AVX:-ON} ENV DEBIAN_FRONTEND=noninteractive +ENV LD_LIBRARY_PATH=/usr/local/cuda-11.0/targets/x86_64-linux/lib:LD_LIBRARY_PATH ENV HOME /root # Add bash enhancements @@ -20,25 +21,27 @@ RUN apt-get update && \ apt-get install -y software-properties-common && add-apt-repository ppa:deadsnakes/ppa && \ apt-get update && \ apt-get install -y curl wget vim git unzip unrar tar xz-utils bzip2 gzip \ - coreutils ntp language-pack-zh-hans python-qt4 libsm6 libxext6 libxrender-dev + coreutils ntp language-pack-zh-hans python-qt4 libsm6 libxext6 libxrender-dev \ + bison graphviz libjpeg-dev zlib1g-dev automake locales swig net-tools libtool module-init-tools # Downgrade gcc&&g++ WORKDIR /usr/bin - COPY tools/dockerfile/build_scripts /build_scripts - RUN bash /build_scripts/install_gcc.sh gcc82 && rm -rf /build_scripts - RUN cp gcc gcc.bak && cp g++ g++.bak && rm gcc && rm g++ - RUN ln -s /usr/local/gcc-8.2/bin/gcc /usr/local/bin/gcc - RUN ln -s /usr/local/gcc-8.2/bin/g++ /usr/local/bin/g++ - RUN ln -s /usr/local/gcc-8.2/bin/gcc /usr/bin/gcc - RUN ln -s /usr/local/gcc-8.2/bin/g++ /usr/bin/g++ - ENV PATH=/usr/local/gcc-8.2/bin:$PATH +COPY tools/dockerfile/build_scripts /build_scripts +RUN bash /build_scripts/install_trt.sh +RUN bash /build_scripts/install_gcc.sh gcc82 && rm -rf /build_scripts +RUN cp gcc gcc.bak && cp g++ g++.bak && rm gcc && rm g++ +RUN ln -s /usr/local/gcc-8.2/bin/gcc /usr/local/bin/gcc +RUN ln -s /usr/local/gcc-8.2/bin/g++ /usr/local/bin/g++ +RUN ln -s /usr/local/gcc-8.2/bin/gcc /usr/bin/gcc +RUN ln -s /usr/local/gcc-8.2/bin/g++ /usr/bin/g++ +ENV PATH=/usr/local/gcc-8.2/bin:$PATH RUN apt-get update && \ apt-get install -y python2.7 python2.7-dev \ python3.5 python3.5-dev \ python3.6 python3.6-dev \ python3.7 python3.7-dev \ - python3.8 python3.8-dev && \ + python3.8 python3.8-dev python3.8-distutils && \ curl https://bootstrap.pypa.io/ez_setup.py -o - | python2.7 && easy_install pip && \ curl https://bootstrap.pypa.io/ez_setup.py -o - | python3.5 && easy_install pip && \ curl https://bootstrap.pypa.io/ez_setup.py -o - | python3.6 && easy_install pip && \ @@ -110,7 +113,7 @@ RUN pip3 --no-cache-dir install -r /root/requirements.txt && \ # Older versions of patchelf limited the size of the files being processed and were fixed in this pr. # https://github.com/NixOS/patchelf/commit/ba2695a8110abbc8cc6baf0eea819922ee5007fa # So install a newer version here. -RUN wget -q http://mirrors.kernel.org/ubuntu/pool/universe/p/patchelf/patchelf_0.10-2_amd64.deb && \ +RUN wget -q https://paddle-ci.cdn.bcebos.com/patchelf_0.10-2_amd64.deb && \ dpkg -i patchelf_0.10-2_amd64.deb # Configure OpenSSH server. c.f. https://docs.docker.com/engine/examples/running_ssh_service @@ -124,4 +127,9 @@ RUN wget https://paddle-ci.gz.bcebos.com/ccache-3.7.9.tar.gz && \ make -j8 && make install && \ ln -s /usr/local/ccache-3.7.9/bin/ccache /usr/local/bin/ccache +# clang-form 3.8.0 +RUN wget https://paddle-ci.cdn.bcebos.com/clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz && \ + tar xf clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz && cd clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-16.04 && \ + cp -r * /usr/local && cd .. && rm -rf clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-16.04 && rm -rf clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz + EXPOSE 22 diff --git a/tools/dockerfile/build_scripts/build.sh b/tools/dockerfile/build_scripts/build.sh index 7b1eb65ed2888d3fde942596d67c284be3b60d0f..aca95a58f6b56f586efbe38cb7a56c2990c409ff 100644 --- a/tools/dockerfile/build_scripts/build.sh +++ b/tools/dockerfile/build_scripts/build.sh @@ -30,8 +30,6 @@ CPYTHON_VERSIONS="3.8.0 3.7.0 3.6.0 3.5.1 2.7.15" # archive OPENSSL_ROOT=openssl-1.1.0i OPENSSL_HASH=ebbfc844a8c8cc0ea5dc10b86c9ce97f401837f3fa08c17b2cdadc118253cf99 -EPEL_RPM_HASH=e5ed9ecf22d0c4279e92075a64c757ad2b38049bcf5c16c4f2b75d5f6860dc0d -DEVTOOLS_HASH=a8ebeb4bed624700f727179e6ef771dafe47651131a00a78b342251415646acc PATCHELF_HASH=f2aa40a6148cb3b0ca807a1bf836b081793e55ec9e5540a5356d800132be7e0a CURL_ROOT=curl-7.49.1 CURL_HASH=eb63cec4bef692eab9db459033f409533e6d10e20942f4b060b32819e81885f1 @@ -51,15 +49,6 @@ source $MY_DIR/build_utils.sh # EPEL support yum -y install wget curl epel-release -#curl -sLO https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm -#check_sha256sum epel-release-6-8.noarch.rpm $EPEL_RPM_HASH - -# Dev toolset (for LLVM and other projects requiring C++11 support) -#curl -sLO http://people.centos.org/tru/devtools-2/devtools-2.repo -#check_sha256sum devtools-2.repo $DEVTOOLS_HASH -#mv devtools-2.repo /etc/yum.repos.d/devtools-2.repo -#rpm -Uvh --replacepkgs epel-release-6*.rpm -#rm -f epel-release-6*.rpm # Development tools and libraries yum -y install bzip2 make git patch unzip bison yasm diffutils \ @@ -118,9 +107,6 @@ hash -r curl --version curl-config --features -# Now we can delete our built SSL -rm -rf /usr/local/ssl - # Install patchelf (latest with unreleased bug fixes) # FIXME(typhoonzero): restore this when the link is fixed. # curl -sLO http://nipy.bic.berkeley.edu/manylinux/patchelf-0.9njs2.tar.gz diff --git a/tools/dockerfile/build_scripts/build_utils.sh b/tools/dockerfile/build_scripts/build_utils.sh index 9f937cf9343784f10d186dd5bdcbace6f8a4e0e9..c8e0b6c3f2775b29cd3a32802a7172deca7dc3e0 100755 --- a/tools/dockerfile/build_scripts/build_utils.sh +++ b/tools/dockerfile/build_scripts/build_utils.sh @@ -1,4 +1,19 @@ #!/bin/bash + +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Helper utilities for build PYTHON_DOWNLOAD_URL=https://www.python.org/ftp/python @@ -51,7 +66,7 @@ function do_cpython_build { # -Wformat added for https://bugs.python.org/issue17547 on Python 2.6 if [ $(lex_pyver $py_ver) -ge $(lex_pyver 3.6) ]; then - wget https://www.sqlite.org/2018/sqlite-autoconf-3250300.tar.gz + wget -q https://www.sqlite.org/2018/sqlite-autoconf-3250300.tar.gz tar -zxf sqlite-autoconf-3250300.tar.gz cd sqlite-autoconf-3250300 ./configure --prefix=/usr/local @@ -88,8 +103,8 @@ function do_cpython_build { ln -s python3.8 ${prefix}/bin/python fi # NOTE Make libpython shared library visible to python calls below - LD_LIBRARY_PATH="${prefix}/lib" ${prefix}/bin/python get-pip.py - LD_LIBRARY_PATH="${prefix}/lib" ${prefix}/bin/pip install wheel==0.32.2 + LD_LIBRARY_PATH="/usr/local/ssl/lib:${prefix}/lib" ${prefix}/bin/python get-pip.py + LD_LIBRARY_PATH="/usr/local/ssl/lib:${prefix}/lib" ${prefix}/bin/pip install wheel==0.32.2 cd / ls ${MY_DIR} local abi_tag=$(LD_LIBRARY_PATH="${prefix}/lib" ${prefix}/bin/python ${MY_DIR}/python-tag-abi-tag.py) @@ -124,9 +139,10 @@ function build_cpythons { function do_openssl_build { - ./config no-ssl2 no-shared -fPIC --prefix=/usr/local/ssl > /dev/null + ./config -fPIC --prefix=/usr/local/ssl > /dev/null make > /dev/null make install > /dev/null + } @@ -160,6 +176,9 @@ function do_curl_build { LIBS=-ldl ./configure --with-ssl --disable-shared > /dev/null make > /dev/null make install > /dev/null + ln -s /usr/local/ssl/lib/libcrypto.so /usr/lib/libcrypto.so + ln -s /usr/local/ssl/lib/libssl.so /usr/lib/libssl.so + ln -s /usr/local/ssl/bin/openssl /usr/local/bin/openssl } diff --git a/tools/dockerfile/build_scripts/install_nccl2.sh b/tools/dockerfile/build_scripts/install_nccl2.sh index d158db59436796f81070b37307ed1fdba084c284..b06b3d44c6ec6b32688521a76f26b82acb4e0998 100644 --- a/tools/dockerfile/build_scripts/install_nccl2.sh +++ b/tools/dockerfile/build_scripts/install_nccl2.sh @@ -17,12 +17,18 @@ VERSION=$(nvcc --version | grep release | grep -oEi "release ([0-9]+)\.([0-9])"| sed "s/release //") if [ "$VERSION" == "10.0" ]; then DEB="nccl-repo-ubuntu1604-2.4.7-ga-cuda10.0_1-1_amd64.deb" -elif [ "$VERSION" == "11.0" ]; then - DEB="nccl-repo-ubuntu1604-2.7.8-ga-cuda11.0_1-1_amd64.deb" -elif [ "$VERSION" == "10.2" ]; then - DEB="nccl-repo-ubuntu1604-2.4.7-ga-cuda10.0_1-1_amd64.deb" -elif [ "$VERSION" == "10.1" ]; then - DEB="nccl-repo-ubuntu1604-2.4.7-ga-cuda10.0_1-1_amd64.deb" +elif [ "$VERSION" == "10.2" ] || [ "$VERSION" == "10.1" ] || [ "$VERSION" == "11.0" ]; then + if [ -f "/etc/redhat-release" ];then + rm -f /usr/local/lib/libnccl.so + wget --no-check-certificate -q https://nccl2-deb.cdn.bcebos.com/libnccl-2.7.8-1+cuda10.2.x86_64.rpm + wget --no-check-certificate -q https://nccl2-deb.cdn.bcebos.com/libnccl-devel-2.7.8-1+cuda10.2.x86_64.rpm + wget --no-check-certificate -q https://nccl2-deb.cdn.bcebos.com/libnccl-static-2.7.8-1+cuda10.2.x86_64.rpm + rpm -ivh libnccl-2.7.8-1+cuda10.2.x86_64.rpm + rpm -ivh libnccl-devel-2.7.8-1+cuda10.2.x86_64.rpm + rpm -ivh libnccl-static-2.7.8-1+cuda10.2.x86_64.rpm && rm -f libnccl-* + exit 0 + fi + DEB="nccl-repo-ubuntu1604-2.7.8-ga-cuda10.2_1-1_amd64.deb" elif [ "$VERSION" == "9.0" ]; then DEB="nccl-repo-ubuntu1604-2.3.7-ga-cuda9.0_1-1_amd64.deb" else diff --git a/tools/dockerfile/build_scripts/install_trt.sh b/tools/dockerfile/build_scripts/install_trt.sh index 02441efbe2b7f859a7f0cbea02d7b82055cfffc6..e5ec70d2f378d180a08a86d705f3e662a211dc91 100644 --- a/tools/dockerfile/build_scripts/install_trt.sh +++ b/tools/dockerfile/build_scripts/install_trt.sh @@ -20,12 +20,25 @@ if [[ "$VERSION" == "10.1" ]];then wget -q https://paddle-ci.gz.bcebos.com/TRT/TensorRT6-cuda10.1-cudnn7.tar.gz --no-check-certificate tar -zxf TensorRT6-cuda10.1-cudnn7.tar.gz -C /usr/local cp -rf /usr/local/TensorRT6-cuda10.1-cudnn7/include/* /usr/include/ && cp -rf /usr/local/TensorRT6-cuda10.1-cudnn7/lib/* /usr/lib/ + rm TensorRT6-cuda10.1-cudnn7.tar.gz +elif [[ "$VERSION" == "11.0" ]];then + wget -q https://paddle-ci.cdn.bcebos.com/TRT/TensorRT-7.1.3.4.Ubuntu-16.04.x86_64-gnu.cuda-11.0.cudnn8.0.tar.gz --no-check-certificate + tar -zxf TensorRT-7.1.3.4.Ubuntu-16.04.x86_64-gnu.cuda-11.0.cudnn8.0.tar.gz -C /usr/local + cp -rf /usr/local/TensorRT-7.1.3.4/include/* /usr/include/ && cp -rf /usr/local/TensorRT-7.1.3.4/lib/* /usr/lib/ + rm TensorRT-7.1.3.4.Ubuntu-16.04.x86_64-gnu.cuda-11.0.cudnn8.0.tar.gz +elif [[ "$VERSION" == "10.2" ]];then + wget https://paddle-ci.gz.bcebos.com/TRT/TensorRT7-cuda10.2-cudnn8.tar.gz --no-check-certificate + tar -zxf TensorRT7-cuda10.2-cudnn8.tar.gz -C /usr/local + cp -rf /usr/local/TensorRT-7.1.3.4/include/* /usr/include/ && cp -rf /usr/local/TensorRT-7.1.3.4/lib/* /usr/lib/ + rm TensorRT7-cuda10.2-cudnn8.tar.gz elif [[ "$VERSION" == "10.0" ]];then wget -q https://paddle-ci.gz.bcebos.com/TRT/TensorRT6-cuda10.0-cudnn7.tar.gz --no-check-certificate tar -zxf TensorRT6-cuda10.0-cudnn7.tar.gz -C /usr/local cp -rf /usr/local/TensorRT6-cuda10.0-cudnn7/include/* /usr/include/ && cp -rf /usr/local/TensorRT6-cuda10.0-cudnn7/lib/* /usr/lib/ + rm TensorRT6-cuda10.0-cudnn7.tar.gz elif [[ "$VERSION" == "9.0" ]];then wget -q https://paddle-ci.gz.bcebos.com/TRT/TensorRT6-cuda9.0-cudnn7.tar.gz --no-check-certificate tar -zxf TensorRT6-cuda9.0-cudnn7.tar.gz -C /usr/local cp -rf /usr/local/TensorRT6-cuda9.0-cudnn7/include/* /usr/include/ && cp -rf /usr/local/TensorRT6-cuda9.0-cudnn7/lib/* /usr/lib/ + rm TensorRT6-cuda9.0-cudnn7.tar.gz fi diff --git a/tools/dockerfile/centos6_manylinux.sh b/tools/dockerfile/centos6_manylinux.sh index 617c51a9f42a164faf4f1b9d3ad25c076178e2cf..490bff2282682637696d74982d2f2e481a55b942 100755 --- a/tools/dockerfile/centos6_manylinux.sh +++ b/tools/dockerfile/centos6_manylinux.sh @@ -19,31 +19,35 @@ set -xe REPO="${REPO:-paddledocker}" function make_cuda9cudnn7(){ - sed 's//9.0-cudnn7-devel-centos6/g' Dockerfile.centos >Dockerfile.tmp + sed 's//9.0-cudnn7-devel-centos7/g' Dockerfile.centos >Dockerfile.tmp } function make_cuda10cudnn7() { - sed 's//10.0-cudnn7-devel-centos6/g' Dockerfile.centos >Dockerfile.tmp + sed 's//10.0-cudnn7-devel-centos7/g' Dockerfile.centos >Dockerfile.tmp } function make_cuda101cudnn7() { - sed 's//10.1-cudnn7-devel-centos6/g' Dockerfile.centos >Dockerfile.tmp - sed -i "s#COPY build_scripts /build_scripts#COPY build_scripts /build_scripts \nRUN bash build_scripts/install_gcc.sh gcc82 \nENV PATH=/usr/local/gcc-8.2/bin:\$PATH#g" Dockerfile.tmp + sed 's//10.1-cudnn7-devel-centos7/g' Dockerfile.centos >Dockerfile.tmp + sed -i "s#RUN bash build_scripts/build.sh#RUN bash build_scripts/install_gcc.sh gcc82 \nRUN mv /usr/bin/cc /usr/bin/cc.bak \&\& ln -s /usr/local/gcc-8.2/bin/gcc /usr/bin/cc \nENV PATH=/usr/local/gcc-8.2/bin:\$PATH \nRUN bash build_scripts/build.sh#g" Dockerfile.tmp } function make_cuda102cudnn7() { - sed 's//10.2-cudnn7-devel-centos6/g' Dockerfile.centos >Dockerfile.tmp - sed -i "s#COPY build_scripts /build_scripts#COPY build_scripts /build_scripts \nRUN bash build_scripts/install_gcc.sh gcc82 \nENV PATH=/usr/local/gcc-8.2/bin:\$PATH#g" Dockerfile.tmp + sed 's//10.2-cudnn7-devel-centos7/g' Dockerfile.centos >Dockerfile.tmp + sed -i "s#RUN bash build_scripts/build.sh#RUN bash build_scripts/install_gcc.sh gcc82 \nRUN mv /usr/bin/cc /usr/bin/cc.bak \&\& ln -s /usr/local/gcc-8.2/bin/gcc /usr/bin/cc \nENV PATH=/usr/local/gcc-8.2/bin:\$PATH \nRUN bash build_scripts/build.sh#g" Dockerfile.tmp +} + +function make_cuda102cudnn8() { + sed 's//10.2-cudnn8-devel-centos7/g' Dockerfile.centos >Dockerfile.tmp + sed -i "s#RUN bash build_scripts/build.sh#RUN bash build_scripts/install_gcc.sh gcc82 \nRUN mv /usr/bin/cc /usr/bin/cc.bak \&\& ln -s /usr/local/gcc-8.2/bin/gcc /usr/bin/cc \nENV PATH=/usr/local/gcc-8.2/bin:\$PATH \nRUN bash build_scripts/build.sh#g" Dockerfile.tmp } function make_cuda11cudnn8() { sed 's//11.0-cudnn8-devel-centos7/g' Dockerfile.centos >Dockerfile.tmp - sed -i "s#COPY build_scripts /build_scripts#COPY build_scripts /build_scripts \nRUN bash build_scripts/install_gcc.sh gcc82 \nENV PATH=/usr/local/gcc-8.2/bin:\$PATH#g" Dockerfile.tmp + sed -i "s#RUN bash build_scripts/build.sh#RUN bash build_scripts/install_gcc.sh gcc82 \nRUN mv /usr/bin/cc /usr/bin/cc.bak \&\& ln -s /usr/local/gcc-8.2/bin/gcc /usr/bin/cc \nENV PATH=/usr/local/gcc-8.2/bin:\$PATH \nRUN bash build_scripts/build.sh#g" Dockerfile.tmp } - function main() { local CMD=$1 case $CMD in @@ -59,6 +63,9 @@ function main() { cuda102cudnn7) make_cuda102cudnn7 ;; + cuda102cudnn8) + make_cuda102cudnn8 + ;; cuda11cudnn8) make_cuda11cudnn8 ;; diff --git a/tools/dockerfile/ci_dockerfile.sh b/tools/dockerfile/ci_dockerfile.sh index 7138cd6f702db38345d88f2700237479c867c85b..2fa3d5141e5854aa832ce9a04d5cd3bbcfe8f4b5 100644 --- a/tools/dockerfile/ci_dockerfile.sh +++ b/tools/dockerfile/ci_dockerfile.sh @@ -39,22 +39,14 @@ function make_ubuntu_dockerfile(){ function make_centos_dockerfile(){ dockerfile_name="Dockerfile.cuda9_cudnn7_gcc48_py35_centos6" sed "s//11.0-cudnn8-devel-centos7/g" Dockerfile.centos >${dockerfile_name} - sed -i "s#COPY build_scripts /build_scripts#COPY tools/dockerfile/build_scripts ./build_scripts#g" ${dockerfile_name} + sed -i "s#COPY build_scripts /build_scripts#COPY tools/dockerfile/build_scripts ./build_scripts#g" ${dockerfile_name} dockerfile_line=$(wc -l ${dockerfile_name}|awk '{print $1}') sed -i "${dockerfile_line}i RUN ln -s /usr/lib64/libz.so /usr/local/lib/libz.so \\ RUN ln -s /usr/local/lib/libnccl.so /usr/local/cuda/lib64/ \\ RUN rm -rf /usr/include/NvInfer*" ${dockerfile_name} - sed -i $"${dockerfile_line}i RUN wget --no-check-certificate -q https://paddle-edl.bj.bcebos.com/hadoop-2.7.7.tar.gz \\ + sed -i $"${dockerfile_line}i RUN wget --no-check-certificate -q https://paddle-edl.bj.bcebos.com/hadoop-2.7.7.tar.gz \\ RUN tar -xzf hadoop-2.7.7.tar.gz && mv hadoop-2.7.7 /usr/local/" ${dockerfile_name} - sed -i "s##WORKDIR /usr/bin \\ - COPY tools/dockerfile/build_scripts /build_scripts \\ - RUN bash /build_scripts/install_gcc.sh gcc82 \&\& rm -rf /build_scripts \\ - RUN cp gcc gcc.bak \&\& cp g++ g++.bak \&\& rm gcc \&\& rm g++ \\ - RUN ln -s /usr/local/gcc-8.2/bin/gcc /usr/local/bin/gcc \\ - RUN ln -s /usr/local/gcc-8.2/bin/g++ /usr/local/bin/g++ \\ - RUN ln -s /usr/local/gcc-8.2/bin/gcc /usr/bin/gcc \\ - RUN ln -s /usr/local/gcc-8.2/bin/g++ /usr/bin/g++ \\ - ENV PATH=/usr/local/gcc-8.2/bin:\$PATH #g" ${dockerfile_name} + sed -i "s#RUN bash build_scripts/build.sh#RUN bash build_scripts/install_gcc.sh gcc82 \nRUN mv /usr/bin/cc /usr/bin/cc.bak \&\& ln -s /usr/local/gcc-8.2/bin/gcc /usr/bin/cc \nENV PATH=/usr/local/gcc-8.2/bin:\$PATH \nRUN bash build_scripts/build.sh#g" ${dockerfile_name} } diff --git a/tools/dockerfile/rocm_dev.sh b/tools/dockerfile/rocm_dev.sh new file mode 100755 index 0000000000000000000000000000000000000000..d6574563b735b53ad7dbd06270a194598c673e71 --- /dev/null +++ b/tools/dockerfile/rocm_dev.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +function rocm() { + # ROCM 3.3 - not work as rocthrust build fail without AMD GPU + # sed 's##3.3#g' Dockerfile.rocm >test/rocm33.dockerfile + # sed -ri 's##3.3.0#g' test/rocm33.dockerfile + # sed -ri 's##3.3.0#g' test/rocm33.dockerfile + # sed -ri 's##3.3.0#g' test/rocm33.dockerfile + + # ROCM 3.5 + sed 's##3.5.1#g' Dockerfile.rocm >test/rocm35.dockerfile + sed -ri 's##3.5.1#g' test/rocm35.dockerfile + sed -ri 's##3.5.0#g' test/rocm35.dockerfile + sed -ri 's##3.5.0#g' test/rocm35.dockerfile + + # ROCM 3.9 + sed 's##3.9.1#g' Dockerfile.rocm >test/rocm39.dockerfile + sed -ri 's##3.9.0#g' test/rocm39.dockerfile + sed -ri 's##3.9.0#g' test/rocm39.dockerfile + sed -ri 's##3.9.0#g' test/rocm39.dockerfile +} + +function main() { + if [ ! -d "test" ];then + mkdir test + fi + rocm +} + +main diff --git a/tools/dockerfile/ubuntu18_dev.sh b/tools/dockerfile/ubuntu18_dev.sh new file mode 100755 index 0000000000000000000000000000000000000000..03423b28255acdefcbe8b2fcbdd4d14709923abe --- /dev/null +++ b/tools/dockerfile/ubuntu18_dev.sh @@ -0,0 +1,124 @@ +#!/bin/bash + +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +docker_name=$1 + + +function ref_whl(){ + if [[ ${WITH_GPU} == "ON" ]]; then + ref_gpu=gpu-cuda${ref_CUDA_MAJOR}-cudnn${CUDNN_MAJOR} + install_gpu="_gpu" + else + ref_gpu="cpu" + install_gpu="" + fi + + if [[ ${WITH_MKL} == "ON" ]]; then + ref_mkl=mkl + else + ref_mkl=openblas + fi + + if [[ ${gcc_version} == "8.2.0" ]];then + ref_gcc=_gcc8.2 + fi + + if [[ ${ref_CUDA_MAJOR} == "10" ]];then + ref_version=.post100 + elif [[ ${ref_CUDA_MAJOR} == "10.1" ]];then + ref_version=.post101 + elif [[ ${ref_CUDA_MAJOR} == "10.2" ]];then + ref_version="" + elif [[ ${ref_CUDA_MAJOR} == "9" ]];then + ref_version=.post90 + fi + + ref_web="https://paddle-wheel.bj.bcebos.com/${PADDLE_BRANCH}-${ref_gpu}-${ref_mkl}${ref_gcc}" + + if [[ ${PADDLE_VERSION} == "0.0.0" && ${WITH_GPU} == "ON" ]]; then + ref_paddle_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}-cp27-cp27mu-linux_x86_64.whl + ref_paddle3_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}-cp35-cp35m-linux_x86_64.whl + ref_paddle36_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}-cp36-cp36m-linux_x86_64.whl + ref_paddle37_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}-cp37-cp37m-linux_x86_64.whl + ref_paddle38_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}-cp38-cp38-linux_x86_64.whl + else + ref_paddle_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}-cp27-cp27mu-linux_x86_64.whl + ref_paddle3_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}-cp35-cp35m-linux_x86_64.whl + ref_paddle36_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}-cp36-cp36m-linux_x86_64.whl + ref_paddle37_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}-cp37-cp37m-linux_x86_64.whl + ref_paddle38_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}-cp38-cp38-linux_x86_64.whl + fi + + if [[ ${PADDLE_VERSION} != "0.0.0" && ${WITH_GPU} == "ON" ]]; then + ref_paddle_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}${ref_version}-cp27-cp27mu-linux_x86_64.whl + ref_paddle3_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}${ref_version}-cp35-cp35m-linux_x86_64.whl + ref_paddle36_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}${ref_version}-cp36-cp36m-linux_x86_64.whl + ref_paddle37_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}${ref_version}-cp37-cp37m-linux_x86_64.whl + ref_paddle38_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}${ref_version}-cp38-cp38-linux_x86_64.whl + else + ref_paddle_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}-cp27-cp27mu-linux_x86_64.whl + ref_paddle3_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}-cp35-cp35m-linux_x86_64.whl + ref_paddle36_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}-cp36-cp36m-linux_x86_64.whl + ref_paddle37_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}-cp37-cp37m-linux_x86_64.whl + ref_paddle38_whl=paddlepaddle${install_gpu}-${PADDLE_VERSION}-cp38-cp38-linux_x86_64.whl + fi +} + + +function install_whl(){ + dockerfile_line=`wc -l Dockerfile.tmp|awk '{print $1}'` + sed -i "${dockerfile_line}i RUN wget -q ${ref_web}/${ref_paddle_whl} && pip install ${ref_paddle_whl} && rm -f ${ref_paddle_whl}" Dockerfile.tmp + sed -i "${dockerfile_line}i RUN wget -q ${ref_web}/${ref_paddle3_whl} && pip3.5 install ${ref_paddle3_whl} && rm -f ${ref_paddle3_whl}" Dockerfile.tmp + sed -i "${dockerfile_line}i RUN wget -q ${ref_web}/${ref_paddle36_whl} && pip3.6 install ${ref_paddle36_whl} && rm -f ${ref_paddle36_whl}" Dockerfile.tmp + sed -i "${dockerfile_line}i RUN wget -q ${ref_web}/${ref_paddle37_whl} && pip3.7 install ${ref_paddle37_whl} && rm -f ${ref_paddle37_whl}" Dockerfile.tmp + sed -i "${dockerfile_line}i RUN wget -q ${ref_web}/${ref_paddle38_whl} && pip3.8 install ${ref_paddle38_whl} && rm -f ${ref_paddle38_whl}" Dockerfile.tmp +} + + +function install_gcc(){ + if [ "${gcc_version}" == "8.2.0" ];then + sed -i 's##WORKDIR /usr/bin \ + COPY tools/dockerfile/build_scripts /build_scripts \ + RUN bash /build_scripts/install_trt.sh \ + RUN bash /build_scripts/install_gcc.sh gcc82 \&\& rm -rf /build_scripts \ + RUN cp gcc gcc.bak \&\& cp g++ g++.bak \&\& rm gcc \&\& rm g++ \ + RUN ln -s /usr/local/gcc-8.2/bin/gcc /usr/local/bin/gcc \ + RUN ln -s /usr/local/gcc-8.2/bin/g++ /usr/local/bin/g++ \ + RUN ln -s /usr/local/gcc-8.2/bin/gcc /usr/bin/gcc \ + RUN ln -s /usr/local/gcc-8.2/bin/g++ /usr/bin/g++ \ + ENV PATH=/usr/local/gcc-8.2/bin:$PATH #g' Dockerfile.tmp + else + sed -i 's##RUN apt-get update \ + WORKDIR /usr/bin \ + RUN apt install -y gcc-4.8 g++-4.8 \&\& cp gcc gcc.bak \&\& cp g++ g++.bak \&\& rm gcc \&\& rm g++ \&\& ln -s gcc-4.8 gcc \&\& ln -s g++-4.8 g++ #g' Dockerfile.tmp + fi +} + + + +function make_dockerfile(){ + sed "s//${docker_name}/g" tools/dockerfile/Dockerfile.ubuntu18 >Dockerfile.tmp +} + + +function main(){ + make_dockerfile + install_gcc + ref_whl + install_whl +} + +main $@