build.sh 3.0 KB
Newer Older
Z
zhangjinchao01 已提交
1 2 3
#!/bin/bash

set -e
H
Helin Wang 已提交
4 5

# Set BASE_IMAGE according to env variables
Y
yi.wu 已提交
6 7
if [ ${WITH_GPU} == "ON" ]; then
  BASE_IMAGE="nvidia/cuda:7.5-cudnn5-runtime-ubuntu14.04"
Y
yi.wu 已提交
8
  # additional packages to install when building gpu images
H
Helin Wang 已提交
9
  GPU_DOCKER_PKG="python-pip python-dev"
Y
yi.wu 已提交
10 11 12
else
  BASE_IMAGE="python:2.7.13-slim"
fi
H
Helin Wang 已提交
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

DOCKERFILE_GPU_ENV=""
if [[ ${WITH_GPU:-OFF} == 'ON' ]]; then
    DOCKERFILE_GPU_ENV="ENV LD_LIBRARY_PATH /usr/lib/x86_64-linux-gnu:${LD_LIBRARY_PATH}"
fi

mkdir -p /paddle/build
cd /paddle/build

# build script will not fail if *.deb does not exist
rm *.deb || true

cmake .. \
      -DCMAKE_BUILD_TYPE=Release \
      -DWITH_DOC=${WITH_DOC:-OFF} \
      -DWITH_GPU=${WITH_GPU:-OFF} \
      -DWITH_AVX=${WITH_AVX:-OFF} \
      -DWITH_SWIG_PY=ON \
      -DCUDNN_ROOT=/usr/ \
      -DWITH_STYLE_CHECK=${WITH_STYLE_CHECK:-OFF} \
      -DON_COVERALLS=${TEST:-OFF} \
      -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
make -j `nproc`
if [[ ${TEST:-OFF} == "ON" ]]; then
    make coveralls
fi
make install

# generate deb package for current build
# FIXME(typhoonzero): should we remove paddle/scripts/deb ?
# FIXME: CPACK_DEBIAN_PACKAGE_DEPENDS removes all dev dependencies, must
# install them in docker
cpack -D CPACK_GENERATOR='DEB' -D CPACK_DEBIAN_PACKAGE_DEPENDS="" ..

if [[ ${BUILD_WOBOQ:-OFF} == 'ON' ]]; then
    apt-get install -y clang-3.8 llvm-3.8 libclang-3.8-dev
    # Install woboq_codebrowser.
    git clone https://github.com/woboq/woboq_codebrowser /woboq
    cd /woboq
    cmake -DLLVM_CONFIG_EXECUTABLE=/usr/bin/llvm-config-3.8 \
          -DCMAKE_BUILD_TYPE=Release \
          .
    make

    export WOBOQ_OUT=/usr/share/nginx/html/paddle
    export BUILD_DIR=/paddle/build
    mkdir -p $WOBOQ_OUT
    cp -rv /woboq/data $WOBOQ_OUT/../data
    /woboq/generator/codebrowser_generator \
L
liaogang 已提交
62 63 64 65
        -b /paddle/build \
        -a \
        -o $WOBOQ_OUT \
        -p paddle:/paddle
H
Helin Wang 已提交
66 67 68
    /woboq/indexgenerator/codebrowser_indexgenerator $WOBOQ_OUT
    cd /woboq
    make clean
Z
zhangjinchao01 已提交
69
fi
Y
yuyang18 已提交
70

H
Helin Wang 已提交
71 72
paddle version

Y
yi.wu 已提交
73 74 75 76 77 78 79
# generate production docker image Dockerfile
if [ ${USE_MIRROR} ]; then
  MIRROR_UPDATE="sed 's@http:\/\/archive.ubuntu.com\/ubuntu\/@mirror:\/\/mirrors.ubuntu.com\/mirrors.txt@' -i /etc/apt/sources.list && \\"
else
  MIRROR_UPDATE="\\"
fi

H
Helin Wang 已提交
80
cat > /paddle/build/Dockerfile <<EOF
Y
yi.wu 已提交
81 82 83 84 85 86 87 88 89 90
FROM ${BASE_IMAGE}
MAINTAINER PaddlePaddle Authors <paddle-dev@baidu.com>

ENV HOME /root
ENV LANG en_US.UTF-8

# Use Fix locales to en_US.UTF-8

RUN ${MIRROR_UPDATE}
    apt-get update && \
H
Helin Wang 已提交
91
    apt-get install -y libgfortran3 libpython2.7 ${GPU_DOCKER_PKG} && \
Y
yi.wu 已提交
92 93
    apt-get clean -y && \
    pip install --upgrade pip && \
H
Helin Wang 已提交
94
    pip install -U 'protobuf==3.1.0' requests numpy
Y
yi.wu 已提交
95
# Use different deb file when building different type of images
H
Helin Wang 已提交
96
ADD build/*.deb /usr/local/opt/paddle/deb/
Y
yi.wu 已提交
97

H
Helin Wang 已提交
98 99 100 101
# run paddle version to install python packages first
RUN dpkg -i /usr/local/opt/paddle/deb/*.deb && rm -f /usr/local/opt/paddle/deb/*.deb && paddle version

${DOCKERFILE_GPU_ENV}
Y
yi.wu 已提交
102 103 104
# default command shows the paddle version and exit
CMD ["paddle", "version"]
EOF