build.sh 3.1 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
Y
yi.wu 已提交
9
  GPU_DOCKER_PKG="python-pip python-dev"
Y
yi.wu 已提交
10 11 12
else
  BASE_IMAGE="python:2.7.13-slim"
fi
13

H
Helin Wang 已提交
14 15 16
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}"
H
Helin Wang 已提交
17 18 19

    # for cmake to find cudnn
    ln -s /usr/lib/x86_64-linux-gnu/libcudnn.so /usr/lib/libcudnn.so
H
Helin Wang 已提交
20
fi
L
liaogang 已提交
21

H
Helin Wang 已提交
22 23 24 25
mkdir -p /paddle/build
cd /paddle/build

# build script will not fail if *.deb does not exist
H
Helin Wang 已提交
26
rm *.deb 2>/dev/null || true
H
Helin Wang 已提交
27 28 29 30 31 32 33 34 35

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} \
36
      -DWITH_COVERAGE=${TEST:-OFF} \
H
Helin Wang 已提交
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 62 63 64
      -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 已提交
65 66 67 68
        -b /paddle/build \
        -a \
        -o $WOBOQ_OUT \
        -p paddle:/paddle
H
Helin Wang 已提交
69 70 71
    /woboq/indexgenerator/codebrowser_indexgenerator $WOBOQ_OUT
    cd /woboq
    make clean
Z
zhangjinchao01 已提交
72
fi
Y
yuyang18 已提交
73

H
Helin Wang 已提交
74 75
paddle version

Y
yi.wu 已提交
76 77 78 79 80 81 82
# 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

Y
yi.wu 已提交
83
cat > /paddle/build/Dockerfile <<EOF
Y
yi.wu 已提交
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 && \
Y
yi.wu 已提交
91
    apt-get install -y libgfortran3 libpython2.7 ${GPU_DOCKER_PKG} && \
Y
yi.wu 已提交
92 93
    apt-get clean -y && \
    pip install --upgrade pip && \
Y
yi.wu 已提交
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 98
# 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
H
Helin Wang 已提交
99
${DOCKERFILE_GPU_ENV}
Y
yi.wu 已提交
100 101 102
# default command shows the paddle version and exit
CMD ["paddle", "version"]
EOF