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