Salome HOME
normalisation des logs
[tools/sat_salome.git] / products / compil_scripts / openturns-1.17.sh
1 #!/bin/bash                                                                                                                                                                              
2
3 echo "##########################################################################"
4 echo "openturns" $VERSION
5 echo "##########################################################################"
6
7 # we don't install in python directory -> modify environment as described in INSTALL file
8 mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
9 export PATH=$(pwd)/bin:$PATH
10 export PYTHONPATH=$(pwd):$PYTHONPATH
11 export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
12
13 if [ -n "$MPI_ROOT_DIR" ]
14 then
15     echo "WARNING: setting CC and CXX environment variables and target MPI wrapper"
16     export CC=${MPI_ROOT_DIR}/bin/mpicc
17     export CXX=${MPI_ROOT_DIR}/bin/mpicxx
18 fi
19
20 CMAKE_OPTIONS=""
21 CMAKE_OPTIONS+=" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
22 CMAKE_OPTIONS+=" -DCMAKE_BUILD_TYPE:STRING=Release"
23 CMAKE_OPTIONS+=" -DPYTHON_EXECUTABLE=${PYTHONBIN}"
24 CMAKE_OPTIONS+=" -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig"
25
26 if [ -n "$TBB_ROOT_DIR" ] && [ "${TBB_ROOT_DIR}" != "/usr" ]; then
27     CMAKE_OPTIONS+=" -DTBB_ROOT_DIR=${TBB_ROOT_DIR}"
28 fi
29
30 ### libxml2 settings
31 if [ -n "$LIBXML2_ROOT_DIR" ] && [ "${LIBXML2_ROOT_DIR}" != "/usr" ]; then
32     CMAKE_OPTIONS+=" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
33     CMAKE_OPTIONS+=" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
34     CMAKE_OPTIONS+=" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
35 fi
36
37 # HDF5
38 if [ -n "$HDF5_ROOT_DIR" ] && [ "${HDF5_ROOT_DIR}" != "/usr" ]; then
39     CMAKE_OPTIONS+=" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
40     CMAKE_OPTIONS+=" -DHDF5_USE_STATIC_LIBRARIES:BOOL=OFF"
41     CMAKE_OPTIONS+=" -DHDF5_ROOT:PATH=${HDF5_ROOT_DIR}"
42     CMAKE_OPTIONS+=" -DHDF5_hdf5_LIBRARY_RELEASE=${HDF5_ROOT_DIR}/lib"
43     CMAKE_OPTIONS+=" -DHDF5_hdf5_hl_LIBRARY_RELEASE=${HDF5_ROOT_DIR}/lib/libhdf5_hl.so"
44     CMAKE_OPTIONS+=" -DHDF5_HL_LIBRARY=${HDF5_ROOT_DIR}/lib/libhdf5_hl.so"
45     CMAKE_OPTIONS+=" -DHDF5_C_INCLUDE_DIR=${HDF5_ROOT_DIR}/include"
46 fi
47
48 # CMINPACK
49 if [ -n "$CMINPACK_ROOT_DIR" ] && [ "${CMINPACK_ROOT_DIR}" != "/usr" ]; then
50     CMAKE_OPTIONS+=" -DCMINPACK_ROOT_DIR=${CMINPACK_ROOT_DIR}"
51     CMAKE_OPTIONS+=" -DCMINPACK_INCLUDE_DIR=${CMINPACK_ROOT_DIR}/include/cminpack-1"
52     CMAKE_OPTIONS+=" -DCMINPACK_LIBRARY=$CMINPACK_ROOT_DIR/lib/libcminpack_s.a"
53 else
54     CMAKE_OPTIONS+=" -DCMINPACK_ROOT_DIR=${CMINPACK_ROOT_DIR}"
55     CMAKE_OPTIONS+=" -DCMINPACK_INCLUDE_DIR=${CMINPACK_ROOT_DIR}/include/cminpack-1"
56 fi
57
58 # Blas/Lapack
59 if [ -n "$LAPACK_ROOT_DIR" ] && [ "${LAPACK_ROOT_DIR}" != "/" ]; then
60     CMAKE_OPTIONS+=" -DLAPACK_DIR=${LAPACK_ROOT_DIR}/lib/cmake/lapack-3.8.0"
61     CMAKE_OPTIONS+=" -DCBLAS_DIR=${LAPACK_ROOT_DIR}/lib/cmake/cblas-3.8.0"
62     CMAKE_OPTIONS+=" -DCBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libcblas.so"
63     CMAKE_OPTIONS+=" -DBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libblas.so"
64 fi
65
66 if [[ $DIST_NAME == "CO" && $DIST_VERSION == "8" && $APPLICATION_NAME =~ native && -f /usr/lib64/libcblas.so && -f /usr/lib64/libblas.so ]]; then
67     CMAKE_OPTIONS+=" -DCBLAS_LIBRARIES=/usr/lib64/libcblas.so"
68     CMAKE_OPTIONS+=" -DBLAS_LIBRARIES=/usr/lib64/libblas.so"
69 fi
70
71 ### libxml2 settings
72 if [ -n "$LIBXML2_ROOT_DIR" ] && [ "${LIBXML2_ROOT_DIR}" != "/usr" ]; then
73     CMAKE_OPTIONS+=" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
74     CMAKE_OPTIONS+=" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
75     CMAKE_OPTIONS+=" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
76 fi
77
78 ## nlopt
79 if [ -n "$NLOPT_ROOT_DIR" ] && [ "${NLOPT_ROOT_DIR}" != "/usr" ]; then
80     CMAKE_OPTIONS+=" -DNLOPT_INCLUDE_DIRS:STRING=${NLOPT_ROOT_DIR}/include"
81     CMAKE_OPTIONS+=" -DNLOPT_LIBRARIES:STRING=${NLOPT_ROOT_DIR}/lib"
82     CMAKE_OPTIONS+=" -DNLOPT_DIR:STRING=${NLOPT_ROOT_DIR}"
83 fi
84
85 echo
86 echo "*** cmake" $CMAKE_OPTIONS
87 mkdir -p $BUILD_DIR/openturns
88 cd  $BUILD_DIR/openturns
89 cmake $CMAKE_OPTIONS $SOURCE_DIR/openturns-1.17
90 if [ $? -ne 0 ]
91 then
92     echo "ERROR on cmake"
93     exit 1
94 fi
95
96 echo
97 echo "*** make" $MAKE_OPTIONS
98 make $MAKE_OPTIONS
99 if [ $? -ne 0 ]
100 then
101     echo "ERROR on make"
102     exit 2
103 fi
104
105 echo
106 echo "*** make install"
107 make install
108 if [ $? -ne 0 ]
109 then
110     echo "ERROR on make install"
111     exit 3
112 fi
113
114 echo
115 echo "*** check installation"
116
117 if [ -d "${PRODUCT_INSTALL}/lib64" ]
118 then
119     mv ${PRODUCT_INSTALL}/lib64/* ${PRODUCT_INSTALL}/lib
120     rmdir ${PRODUCT_INSTALL}/lib64
121 fi
122
123 export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:${PYTHONPATH}
124 export LD_LIBRARY_PATH=${PRODUCT_INSTALL}/lib:${LD_LIBRARY_PATH}
125 chmod +x ${SOURCE_DIR}/openturns-1.17/python/test/t_features.py
126 ${SOURCE_DIR}/openturns-1.17/python/test/t_features.py
127 if [ $? -ne 0 ]
128 then
129     echo "ERROR  testing Openturns features...."
130     exit 4
131 fi
132
133 LD_LIBRARY_PATH_REF=${LD_LIBRARY_PATH}
134 if [[ -d "$SOURCE_DIR/otfftw-0.11" ]]; then
135
136     declare -A OTC
137     OTC["otagrum"]="0.4"
138     OTC["otfftw"]="0.11"
139     OTC["otmixmod"]="0.12"
140     OTC["otmorris"]="0.10"
141     OTC["otpmml"]="1.11"
142     OTC["otrobopt"]="0.9"
143     OTC["otsubsetinverse"]="1.8"
144     OTC["otsvm"]="0.10"
145
146     for k in ${!OTC[@]};
147     do         
148         echo
149         echo "*** C O M P O N E N T : $k-${OTC[$k]} "
150         if [[ $k == "otagrum" ]]; then
151             echo "WARNING: skipping $k.."
152             continue
153         fi
154
155         cd  $BUILD_DIR
156         mkdir ${BUILD_DIR}/$k
157         cd ${BUILD_DIR}/$k 
158         CMAKE_EXTRA_OPTIONS=
159         if [[ $k == "otmixmod" ]]; then
160             CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
161             CMAKE_EXTRA_OPTIONS+=" -DSOURCEFILES=$SOURCE_DIR/$k-${OTC[$k]}"
162         elif [[ $k == "otsubsetinverse" ]]; then
163             CMAKE_EXTRA_OPTIONS+=" -DOPENTURNS_HOME=$PRODUCT_INSTALL"
164             CMAKE_EXTRA_OPTIONS+=" -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON"
165             CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF"
166         elif  [[ $k == "otfftw" ]]; then
167             CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"  # needs extra latex modules on CentOS 7
168         elif  [[ $k == "otpmml" ]]; then
169             CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"  # needs extra latex modules on CentOS 7
170         fi
171
172         echo
173         echo "*** cmake " $CMAKE_OPTIONS ${CMAKE_EXTRA_OPTIONS}  $SOURCE_DIR/$k-${OTC[$k]}
174         cmake $CMAKE_OPTIONS ${CMAKE_EXTRA_OPTIONS} $SOURCE_DIR/$k-${OTC[$k]}
175         if [ $? -ne 0 ]
176         then
177             echo "ERROR on cmake"
178             exit 1
179         fi
180         
181         echo
182         echo "*** make" $MAKE_OPTIONS
183         make $MAKE_OPTIONS
184         if [ $? -ne 0 ]
185         then
186             echo "ERROR on make"
187             exit 2
188         fi
189         
190         echo
191         echo "*** make install"
192         make install
193         if [ $? -ne 0 ]
194         then
195             echo "ERROR on make install"
196             exit 3
197         fi
198     done
199     declare -A OTP
200     OTP["otfmi"]="0.11"
201     OTP["otpod"]="0.6.7"
202     OTP["otwrapy"]="0.10"
203     for k in ${!OTP[@]};
204     do 
205         echo
206         echo "*** C O M P O N E N T : $k-${OTP[$k]} "
207         
208         if [[ $DIST_NAME == "CO" && $DIST_VERSION == "8" && $APPLICATION_NAME =~ native && $k == "otpod" ]]; then
209             echo "*** skipping: since system Cython too old"
210             continue
211         fi
212         # For non native builds install everything, since Python is embedded
213         if [[ ! $APPLICATION_NAME =~ native ]]; then
214             if [[ $k == "otfmi" ]]; then
215                 echo "INFO: install dill-0.3.4"
216                 ${PYTHONBIN} -m pip install $SOURCE_DIR/dill-0.3.4/dill-0.3.4-py2.py3-none-any.whl --no-deps
217                 if [ $? -ne 0 ]
218                 then
219                     echo "FATAL: could not install dikk-0.3.4"
220                     exit 5
221                 fi
222             elif [[ $k == "otpod" ]]; then
223                 echo "INFO: install threadpoolctl-3.0.0"
224                 ${PYTHONBIN} -m pip install $SOURCE_DIR/threadpoolctl-3.0.0/threadpoolctl-3.0.0-py3-none-any.whl --no-deps
225                 if [ $? -ne 0 ]
226                 then
227                     echo "FATAL: could not install readpoolctl 3.0.0"
228                     exit 6
229                 fi
230                 echo "INFO: install joblib-1.1.0"
231                 ${PYTHONBIN} -m pip install $SOURCE_DIR/joblib-1.1.0/joblib-1.1.0-py2.py3-none-any.whl --no-deps
232                 if [ $? -ne 0 ]
233                 then
234                     echo "FATAL: could not install joblib-1.1.0"
235                     exit 6
236                 fi
237                 echo "INFO: install decorator-5.1.0"
238                 ${PYTHONBIN} -m pip install $SOURCE_DIR/decorator-5.1.0/decorator-5.1.0-py3-none-any.whl --no-deps
239                 if [ $? -ne 0 ]
240                 then
241                     echo "FATAL: could not install decorator-5.1.0"
242                     exit 6
243                 fi
244                 echo "INFO: install scikit-learn-0.24.2"
245                 ${PYTHONBIN} -m pip install $SOURCE_DIR/scikit-learn-0.24.2/scikit-learn-0.24.2.tar.gz --no-deps
246                 if [ $? -ne 0 ]
247                 then
248                     echo "FATAL: could not install scikit-0.24.2"
249                     exit 6
250                 fi
251             fi
252         fi
253
254         cd  $BUILD_DIR
255         mkdir ${BUILD_DIR}/$k
256         cd ${BUILD_DIR}/$k
257         cp -R $SOURCE_DIR/$k-${OTP[$k]}/* .
258         #
259         $PYTHONBIN setup.py build
260         if [ $? -ne 0 ]
261         then
262             echo "ERROR on ${PYTHONBIN} setup.py  build"
263             exit 4
264         fi
265         #
266         $PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
267         if [ $? -ne 0 ]
268         then
269             echo "ERROR on ${PYTHONBIN} setup.py  install --prefix=$PRODUCT_INSTALL"
270             exit 5
271         fi
272     done
273 fi
274
275 echo
276 echo "########## END"