@@ -7,7 +7,26 @@ function abort(){
7
7
8
8
trap ' abort' 0
9
9
set -e
10
-
10
+ mkdir -p /paddle/dist/cpu
11
+ mkdir -p /paddle/dist/gpu
12
+ mkdir -p /paddle/dist/cpu-noavx
13
+ mkdir -p /paddle/dist/gpu-noavx
14
+ # Set BASE_IMAGE and DEB_PATH according to env variables
15
+ if [ ${WITH_GPU} == " ON" ]; then
16
+ BASE_IMAGE=" nvidia/cuda:7.5-cudnn5-runtime-ubuntu14.04"
17
+ if [ ${WITH_AVX} == " ON" ]; then
18
+ DEB_PATH=" dist/gpu/"
19
+ else
20
+ DEB_PATH=" dist/gpu-noavx/"
21
+ fi
22
+ else
23
+ BASE_IMAGE=" python:2.7.13-slim"
24
+ if [ ${WITH_AVX} == " ON" ]; then
25
+ DEB_PATH=" dist/cpu/"
26
+ else
27
+ DEB_PATH=" dist/cpu-noavx/"
28
+ fi
29
+ fi
11
30
# If Dockerfile.* sets BUILD_AND_INSTALL to 'ON', it would have copied
12
31
# source tree to /paddle, and this scripts should build it into
13
32
# /paddle/build.
@@ -29,9 +48,13 @@ if [[ ${BUILD_AND_INSTALL:-OFF} == 'ON' ]]; then
29
48
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
30
49
make -j ` nproc`
31
50
make install
51
+ # generate deb package for current build
52
+ # FIXME(typhoonzero): should we remove paddle/scripts/deb ?
53
+ cpack -D CPACK_GENERATOR=' DEB' ..
54
+ mv /paddle/build/* .deb /paddle/${DEB_PATH}
32
55
33
56
if [[ ${BUILD_WOBOQ:- OFF} == ' ON' ]]; then
34
- apt-get install -y clang-3.8 llvm-3.8 libclang-3.8-dev
57
+ apt-get install -y clang-3.8 llvm-3.8 libclang-3.8-dev
35
58
# Install woboq_codebrowser.
36
59
git clone https://github.com/woboq/woboq_codebrowser /woboq
37
60
cd /woboq
@@ -65,4 +88,46 @@ if [[ ${BUILD_AND_INSTALL:-OFF} == 'ON' ]]; then
65
88
fi
66
89
fi
67
90
91
+ # generate production docker image Dockerfile
92
+ if [ ${USE_MIRROR} ]; then
93
+ MIRROR_UPDATE=" sed 's@http:\/\/archive.ubuntu.com\/ubuntu\/@mirror:\/\/mirrors.ubuntu.com\/mirrors.txt@' -i /etc/apt/sources.list && \\ "
94
+ else
95
+ MIRROR_UPDATE=" \\ "
96
+ fi
97
+
98
+ cat > /paddle/build/Dockerfile << EOF
99
+ FROM ${BASE_IMAGE}
100
+ MAINTAINER PaddlePaddle Authors <[email protected] >
101
+
102
+ # ENV variables
103
+ ARG WITH_AVX
104
+ ARG WITH_DOC
105
+ ARG WITH_STYLE_CHECK
106
+
107
+ ENV WITH_GPU=${WITH_GPU}
108
+ ENV WITH_AVX=\$ {WITH_AVX:-ON}
109
+ ENV WITH_DOC=\$ {WITH_DOC:-OFF}
110
+ ENV WITH_STYLE_CHECK=\$ {WITH_STYLE_CHECK:-OFF}
111
+
112
+ ENV HOME /root
113
+ ENV LANG en_US.UTF-8
114
+
115
+ # Use Fix locales to en_US.UTF-8
116
+
117
+ RUN ${MIRROR_UPDATE}
118
+ apt-get update && \
119
+ apt-get install -y libgfortran3 && \
120
+ apt-get clean -y && \
121
+ pip install --upgrade pip && \
122
+ pip install -U 'protobuf==3.1.0'
123
+ RUN pip install numpy
124
+ # Use different deb file when building different type of images
125
+ ADD \$ PWD/${DEB_PATH} *.deb /usr/local/opt/paddle/deb/
126
+ RUN dpkg --force-all -i /usr/local/opt/paddle/deb/*.deb && rm -f /usr/local/opt/paddle/deb/*.deb
127
+
128
+ ENV PATH="/usr/local/opt/paddle/bin/:${PATH} "
129
+ # default command shows the paddle version and exit
130
+ CMD ["paddle", "version"]
131
+ EOF
132
+
68
133
trap : 0
0 commit comments