Salome HOME
bos #41564 [CEA] openturns 1.22
[tools/sat_salome.git] / products / compil_scripts / openturns-1.22.sh
1 #!/bin/bash                                                                                                                                                                              
2
3 echo "##########################################################################"
4 echo "openturns" $VERSION
5 echo "##########################################################################"
6
7 LINUX_DISTRIBUTION="$DIST_NAME$DIST_VERSION"
8
9 export PATH=$(pwd)/bin:$PATH
10 export PYTHONPATH=$(pwd):$PYTHONPATH
11 export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/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_INSTALL_LIBDIR:STRING=lib"
22 CMAKE_OPTIONS+=" -DCMAKE_BUILD_TYPE:STRING=Release"
23 CMAKE_OPTIONS+=" -DPYTHON_EXECUTABLE=${PYTHONBIN}"
24
25 if [ "$SAT_Python_IS_NATIVE" == "1" ] && [ "$LINUX_DISTRIBUTION" == "CO8" ] ; then
26     CMAKE_OPTIONS+=" -DPython_EXECUTABLE=${PYTHONBIN}"
27 fi
28
29 if [ -n "$SWIG_ROOT_DIR" ] && [ "$SAT_swig_IS_NATIVE" != "1" ]; then
30     CMAKE_OPTIONS+=" -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig"
31 fi
32
33 if [ -n "$TBB_ROOT_DIR" ] && [ "$SAT_tbb_IS_NATIVE" != "1" ]; then
34     CMAKE_OPTIONS+=" -DTBB_ROOT_DIR=${TBB_ROOT_DIR}"
35     CMAKE_OPTIONS+=" -Dtbb_DIR=${TBB_ROOT_DIR}/lib/cmake"
36 fi
37
38 # https://github.com/persalys/persalys/issues/745
39 case $LINUX_DISTRIBUTION in
40     UB22*|CO8*|CO9*|FD36|FD37|FD38)
41         echo "WARNING: switching OFF TBB support"
42         CMAKE_OPTIONS+=" -DUSE_TBB=OFF"
43         ;;
44     *)
45         ;;
46 esac
47
48 # Blas/Lapack
49 if [ -n "$LAPACK_ROOT_DIR" ] && [ "$SAT_lapack_IS_NATIVE" != "1" ]; then
50     CMAKE_OPTIONS+=" -DLAPACK_DIR=${LAPACK_ROOT_DIR}/lib/cmake/lapack-3.8.0"
51     CMAKE_OPTIONS+=" -DCBLAS_DIR=${LAPACK_ROOT_DIR}/lib/cmake/cblas-3.8.0"
52     CMAKE_OPTIONS+=" -DCBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libcblas.so"
53     CMAKE_OPTIONS+=" -DBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libblas.so"
54 fi
55
56 ### libxml2 settings
57 if [ -n "$LIBXML2_ROOT_DIR" ] && [ "$SAT_libxml2_IS_NATIVE" != "1" ]; then
58     CMAKE_OPTIONS+=" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
59     CMAKE_OPTIONS+=" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
60     CMAKE_OPTIONS+=" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
61 fi
62
63 # HDF5
64 if [ -n "$HDF5_ROOT_DIR" ] && [ "$SAT_hdf5_IS_NATIVE" != "1" ]; then
65     CMAKE_OPTIONS+=" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
66     CMAKE_OPTIONS+=" -DHDF5_USE_STATIC_LIBRARIES:BOOL=OFF"
67     CMAKE_OPTIONS+=" -DHDF5_ROOT:PATH=${HDF5_ROOT_DIR}"
68     CMAKE_OPTIONS+=" -DHDF5_hdf5_LIBRARY_RELEASE=${HDF5_ROOT_DIR}/lib"
69     CMAKE_OPTIONS+=" -DHDF5_hdf5_hl_LIBRARY_RELEASE=${HDF5_ROOT_DIR}/lib/libhdf5_hl.so"
70     CMAKE_OPTIONS+=" -DHDF5_HL_LIBRARY=${HDF5_ROOT_DIR}/lib/libhdf5_hl.so"
71     CMAKE_OPTIONS+=" -DHDF5_C_INCLUDE_DIR=${HDF5_ROOT_DIR}/include"
72 fi
73
74 # CMINPACK
75 if [ -n "$CMINPACK_ROOT_DIR" ] && [ "$SAT_cminpack_IS_NATIVE" != "1" ]; then
76     CMAKE_OPTIONS+=" -DCMINPACK_ROOT_DIR=${CMINPACK_ROOT_DIR}"
77     CMAKE_OPTIONS+=" -DCMINPACK_INCLUDE_DIR=${CMINPACK_ROOT_DIR}/include/cminpack-1"
78     CMAKE_OPTIONS+=" -DCMINPACK_LIBRARY=$CMINPACK_ROOT_DIR/lib/libcminpack_s.a"
79 else
80     CMAKE_OPTIONS+=" -DCMINPACK_ROOT_DIR=${CMINPACK_ROOT_DIR}"
81     CMAKE_OPTIONS+=" -DCMINPACK_INCLUDE_DIR=${CMINPACK_ROOT_DIR}/include/cminpack-1"
82 fi
83
84 # Blas/Lapack
85 if [ -n "$LAPACK_ROOT_DIR" ] && [ "$SAT_lapack_IS_NATIVE" != "1" ]; then
86     CMAKE_OPTIONS+=" -DLAPACK_DIR=${LAPACK_ROOT_DIR}/lib/cmake/lapack-3.8.0"
87     CMAKE_OPTIONS+=" -DCBLAS_DIR=${LAPACK_ROOT_DIR}/lib/cmake/cblas-3.8.0"
88     CMAKE_OPTIONS+=" -DCBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libcblas.so"
89     CMAKE_OPTIONS+=" -DBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libblas.so"
90 fi
91
92 if [[ $DIST_NAME == "CO" && $DIST_VERSION == "8" &&  -f /usr/lib64/libcblas.so && -f /usr/lib64/libblas.so ]]; then
93     CMAKE_OPTIONS+=" -DCBLAS_LIBRARIES=/usr/lib64/libcblas.so"
94     CMAKE_OPTIONS+=" -DBLAS_LIBRARIES=/usr/lib64/libblas.so"
95 fi
96
97 ### libxml2 settings
98 if [ -n "$LIBXML2_ROOT_DIR" ] && [ "$SAT_libxml2_IS_NATIVE" != "1" ]; then
99     CMAKE_OPTIONS+=" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
100     CMAKE_OPTIONS+=" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
101     CMAKE_OPTIONS+=" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
102 fi
103
104 ## nlopt
105 if [ -n "$NLOPT_ROOT_DIR" ] && [ "$SAT_nlopt_IS_NATIVE" != "1" ]; then
106     CMAKE_OPTIONS+=" -DNLOPT_INCLUDE_DIR:STRING=${NLOPT_ROOT_DIR}/include"
107     CMAKE_OPTIONS+=" -DNLOPT_LIBRARY:STRING=${NLOPT_ROOT_DIR}/lib/libnlopt.so"
108     CMAKE_OPTIONS+=" -DNLOPT_DIR:STRING=${NLOPT_ROOT_DIR}"
109 fi
110
111 # Boost
112 if [ -n "$BOOST_ROOT_DIR" ] && [ "$SAT_boost_IS_NATIVE" != "1" ]; then
113     CMAKE_OPTIONS+=" -DBOOST_DIR=${BOOST_ROOT_DIR}"
114 fi
115
116 echo
117 echo "*** cmake" $CMAKE_OPTIONS
118
119 rm -rf $BUILD_DIR
120 mkdir -p $BUILD_DIR/openturns
121 mkdir -p  $BUILD_DIR/cache/pip
122
123 # since we are using several nodes and share the same $HOME
124 # compilation can get screwed up.
125 # following this discussion: https://tex.stackexchange.com/questions/467824/is-it-possible-to-relocate-my-texmf-directory
126 # we define the following environment variables
127 export TEXMFHOME=$BUILD_DIR/texmf
128 export TEXMFVAR=$BUILD_DIR/texlive
129 export TEXMFCONFIG=$BUILD_DIR/texlive
130 mkdir -p $TEXMFHOME
131 mkdir -p $TEXMFVAR
132 mkdir -p $TEXMFCONFIG
133
134 cd  $BUILD_DIR/openturns
135 cmake $CMAKE_OPTIONS $SOURCE_DIR/openturns-1.22
136 if [ $? -ne 0 ]
137 then
138     echo "ERROR on cmake"
139     exit 1
140 fi
141
142 echo
143 echo "*** make" $MAKE_OPTIONS
144 make $MAKE_OPTIONS
145 if [ $? -ne 0 ]
146 then
147     echo "ERROR on make"
148     exit 2
149 fi
150
151 echo
152 echo "*** make install"
153 make install
154 if [ $? -ne 0 ]
155 then
156     echo "ERROR on make install"
157     exit 3
158 fi
159
160 echo
161 echo "*** check installation"
162 if [ ! -d "${PRODUCT_INSTALL}/lib" ]; then
163     mkdir -p ${PRODUCT_INSTALL}/lib
164 fi
165
166 if [ -d "${PRODUCT_INSTALL}/lib64" ]; then
167     echo "WARNING: moving lib64 to lib"
168     mv ${PRODUCT_INSTALL}/lib64/* ${PRODUCT_INSTALL}/lib/
169     rm -rf ${PRODUCT_INSTALL}/lib64
170 elif [ -d "${PRODUCT_INSTALL}/local/lib64" ]; then
171     echo "WARNING: moving local/lib64 to lib"
172     mv ${PRODUCT_INSTALL}/local/lib64/* ${PRODUCT_INSTALL}/lib/
173     rm -rf ${PRODUCT_INSTALL}/local/lib64
174 fi
175
176 if [ -d ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/dist-packages ]; then
177     mv ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/dist-packages ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
178 fi
179
180 export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:${PYTHONPATH}
181 export LD_LIBRARY_PATH=${PRODUCT_INSTALL}/lib:${LD_LIBRARY_PATH}
182 chmod +x ${SOURCE_DIR}/openturns-1.22/python/test/t_features.py
183 ${PYTHONBIN} ${SOURCE_DIR}/openturns-1.22/python/test/t_features.py
184 if [ $? -ne 0 ]
185 then
186     echo "ERROR  testing Openturns features...."
187     exit 4
188 fi
189
190 cd  $BUILD_DIR
191 mkdir ${BUILD_DIR}/mixmod
192 cd ${BUILD_DIR}/mixmod
193
194 CMAKE_EXTRA_OPTIONS=
195 CMAKE_EXTRA_OPTIONS+=" -DMIXMOD_BUILD_EXAMPLES=ON"
196 CMAKE_EXTRA_OPTIONS+=" -DMIXMOD_BUILD_IOSTREAM=ON"
197 CMAKE_EXTRA_OPTIONS+=" -DMIXMOD_BUILD_CLI=ON"
198
199 case $LINUX_DISTRIBUTION in
200     DB9)
201         echo "WARNING: Skipping MIXMOD - since libxml++ compilation is quite tedious on that platform"
202         echo "WARNING: You can either target the stretch archives and install libxml++-dev and compile or leave it as it is"
203         
204         ;;
205     *)
206         echo
207         echo "*** cmake " $CMAKE_OPTIONS ${CMAKE_EXTRA_OPTIONS} $SOURCE_DIR/mixmod-2.1.10
208         cmake $CMAKE_OPTIONS ${CMAKE_EXTRA_OPTIONS} $SOURCE_DIR/mixmod-2.1.10
209         if [ $? -ne 0 ]; then
210             echo "ERROR on cmake"
211             exit 1
212         fi
213         
214         echo
215         echo "*** make" $MAKE_OPTIONS
216         make $MAKE_OPTIONS
217         if [ $? -ne 0 ]; then
218             echo "ERROR on make"
219             exit 2
220         fi
221         
222         echo
223         echo "*** make install"
224         make install
225         if [ $? -ne 0 ]; then
226             echo "ERROR on make install"
227             exit 3
228         fi
229         ;;
230 esac
231
232 LD_LIBRARY_PATH_REF=${LD_LIBRARY_PATH}
233 if [[ -d "$SOURCE_DIR/otfftw-0.14" ]]; then
234     declare -A OTC
235     OTC["otagrum"]="0.9"
236     OTC["otfftw"]="0.14"
237     OTC["otmixmod"]="0.16"
238     OTC["otmorris"]="0.15"
239     OTC["otrobopt"]="0.13"
240     OTC["otsubsetinverse"]="1.10"
241     OTC["otsvm"]="0.13"
242
243     for k in ${!OTC[@]};
244     do         
245         echo
246         echo "*** C O M P O N E N T : $k-${OTC[$k]} "
247         if [[ $k == "otagrum" ]]; then
248             echo "WARNING: skipping $k.."
249             continue
250         fi
251         cd  $BUILD_DIR
252         mkdir ${BUILD_DIR}/$k
253         cd ${BUILD_DIR}/$k 
254         CMAKE_EXTRA_OPTIONS=
255         if [[ $DIST_NAME == "CO" ]]; then
256             CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"  # needs extra latex modules on CentOS 7, 8
257             CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF"
258         fi
259         if [[ $k == "otmixmod" ]]; then
260             CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
261             CMAKE_EXTRA_OPTIONS+=" -DSOURCEFILES=$SOURCE_DIR/$k-${OTC[$k]}"
262             CMAKE_EXTRA_OPTIONS+=" -DMIXMOD_INCLUDE_DIR=$PRODUCT_INSTALL/include"
263             CMAKE_EXTRA_OPTIONS+=" -DMIXMOD_LIBRARIES=$PRODUCT_INSTALL/lib/libmixmod.so"
264             if [ ! -f $PRODUCT_INSTALL/lib/libmixmod.so ]; then
265                 echo "WARNING: libmixmod.so is not installed where it is expected to be. Skipping..."
266                 continue
267             fi
268         elif [[ $k == "otsubsetinverse" ]]; then
269             CMAKE_EXTRA_OPTIONS+=" -DOPENTURNS_HOME=$PRODUCT_INSTALL"
270             CMAKE_EXTRA_OPTIONS+=" -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON"
271             CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF"
272         elif  [[ $k == "otfftw" ]]; then
273             CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
274         elif [[ $k == "otmorris" ]]; then
275             case $LINUX_DISTRIBUTION in
276                 DB*|FD*|UB*)
277                     echo "WARNING: switching OFF documentation build"
278                     CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
279                     CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF" # missing package to be installed.
280                     ;;
281             esac
282         elif [[ $k == "otrobopt" ]]; then
283             case $LINUX_DISTRIBUTION in
284                 DB*|FD*|UB*)
285                     echo "WARNING: switching OFF documentation build"
286                     CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
287                     CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF" # missing package to be installed.
288                     ;;
289             esac
290         elif [[ $k == "otsvm" ]]; then
291             case $LINUX_DISTRIBUTION in
292                 DB*|FD*|UB*)
293                     echo "WARNING: switching OFF documentation build"
294                     CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
295                     CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF" # missing package to be installed.
296                     ;;
297             esac
298         elif  [[ $k == "otpmml" ]]; then
299             CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
300         fi
301
302         echo
303         echo "*** cmake " $CMAKE_OPTIONS ${CMAKE_EXTRA_OPTIONS}  $SOURCE_DIR/$k-${OTC[$k]}
304         cmake $CMAKE_OPTIONS ${CMAKE_EXTRA_OPTIONS} $SOURCE_DIR/$k-${OTC[$k]}
305         if [ $? -ne 0 ]
306         then
307             echo "ERROR on cmake"
308             exit 1
309         fi
310         
311         echo
312         echo "*** make" $MAKE_OPTIONS
313         make $MAKE_OPTIONS
314         if [ $? -ne 0 ]
315         then
316             echo "ERROR on make"
317             exit 2
318         fi
319         
320         echo
321         echo "*** make install"
322         make install
323         if [ $? -ne 0 ]
324         then
325             echo "ERROR on make install"
326             exit 3
327         fi
328         echo "INFO: check presence of $PRODUCT_INSTALL/local"
329         if [ -d "$PRODUCT_INSTALL/local" ]; then
330             echo "INFO: $PRODUCT_INSTALL/local is present -  reearrange ..."
331             if [ -d ${PRODUCT_INSTALL}/local/lib/python${PYTHON_VERSION}/dist-packages ]; then
332                 mv ${PRODUCT_INSTALL}/local/lib/python${PYTHON_VERSION}/dist-packages ${PRODUCT_INSTALL}/local/lib/python${PYTHON_VERSION}/site-packages
333             fi
334             for D in $(ls $PRODUCT_INSTALL/local); do
335                 echo "INFO: next subdirectory: $PRODUCT_INSTALL/local/$D"
336                 if [ -d $PRODUCT_INSTALL/$D ]; then
337                     cp -r $PRODUCT_INSTALL/local/$D/* $PRODUCT_INSTALL/$D/
338                 else
339                     mv $PRODUCT_INSTALL/local/$D $PRODUCT_INSTALL/$D
340                 fi
341             done
342             rm -rf $PRODUCT_INSTALL/local
343         fi
344     done
345
346     declare -A OTP
347     OTP["otfmi"]="0.16.2"
348     OTP["otpod"]="0.6.10"
349     OTP["otwrapy"]="0.11"
350     for k in ${!OTP[@]};
351     do 
352         echo
353         echo "*** C O M P O N E N T : $k-${OTP[$k]} "
354
355         if [ "$SAT_Python_IS_NATIVE" == "1" ]; then
356             if [ $k == "otfmi" ]; then
357                 echo "INFO: install dill-0.3.4"
358                 ${PYTHONBIN} -m pip install  --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/dill-0.3.4/dill-0.3.4-py2.py3-none-any.whl --no-deps  --prefix=$PRODUCT_INSTALL
359                 if [ $? -ne 0 ]
360                 then
361                     echo "FATAL: could not install dill-0.3.4"
362                     exit 6
363                 fi
364                 echo "INFO: install pythonfmu-0.6.3"
365                 ${PYTHONBIN} -m pip install  --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/pythonfmu-0.6.3/pythonfmu-0.6.3-py3-none-any.whl --no-deps  --prefix=$PRODUCT_INSTALL
366                 if [ $? -ne 0 ]
367                 then
368                     echo "FATAL: could not install pythonfmu-0.6.3"
369                     exit 6
370                 fi
371             elif [ $k == "otpod" ]; then
372                 if [[ $DIST_NAME == "CO" && $DIST_VERSION == "8" ]]; then
373                     echo "*** skipping: since system Cython too old"
374                     continue
375                 fi
376                 echo "INFO: install scikit-learn-0.24.2"
377                 # use --no-build-isolation and --no-use-pep517 flags
378                 ${PYTHONBIN} -m pip install  --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/scikit-learn-0.24.2/scikit-learn-0.24.2.tar.gz --no-deps  --prefix=$PRODUCT_INSTALL --no-build-isolation --no-use-pep517
379                 if [ $? -ne 0 ]
380                 then
381                     echo "FATAL: could not install scikit-0.24.2"
382                     exit 6
383                 fi
384                 echo "INFO: install threadpoolctl-3.0.0"
385                 ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip  $SOURCE_DIR/threadpoolctl-3.0.0/threadpoolctl-3.0.0-py3-none-any.whl --no-deps --prefix=$PRODUCT_INSTALL
386                 if [ $? -ne 0 ]
387                 then
388                     echo "FATAL: could not install threadpoolctl 3.0.0"
389                     exit 6
390                 fi
391             fi
392             echo "INFO: check presence of $PRODUCT_INSTALL/local"
393             if [ -d "$PRODUCT_INSTALL/local" ]; then
394                 echo "INFO: $PRODUCT_INSTALL/local is present -  reearrange ..."
395                 if [ -d ${PRODUCT_INSTALL}/local/lib/python${PYTHON_VERSION}/dist-packages ]; then
396                     mv ${PRODUCT_INSTALL}/local/lib/python${PYTHON_VERSION}/dist-packages ${PRODUCT_INSTALL}/local/lib/python${PYTHON_VERSION}/site-packages
397                 fi
398                 for D in $(ls $PRODUCT_INSTALL/local); do
399                     echo "INFO: next subdirectory: $PRODUCT_INSTALL/local/$D"
400                     if [ -d $PRODUCT_INSTALL/$D ]; then
401                         cp -r $PRODUCT_INSTALL/local/$D/* $PRODUCT_INSTALL/$D/
402                     else
403                         mv $PRODUCT_INSTALL/local/$D $PRODUCT_INSTALL/$D
404                     fi
405                 done
406                 rm -rf $PRODUCT_INSTALL/local
407             fi
408             #
409         else # non native Python
410             if [[ $k == "otfmi" ]]; then
411                 echo "INFO: install dill-0.3.4"
412                 ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/dill-0.3.4/dill-0.3.4-py2.py3-none-any.whl --no-deps
413                 if [ $? -ne 0 ]
414                 then
415                     echo "FATAL: could not install dill-0.3.4"
416                     exit 5
417                 fi
418             elif [[ $k == "otpod" ]]; then
419                 echo "INFO: install threadpoolctl-3.0.0"
420                 ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/threadpoolctl-3.0.0/threadpoolctl-3.0.0-py3-none-any.whl --no-deps
421                 if [ $? -ne 0 ]
422                 then
423                     echo "FATAL: could not install readpoolctl 3.0.0"
424                     exit 6
425                 fi
426                 echo "INFO: install joblib-1.1.0"
427                 ${PYTHONBIN} -m pip install  --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/joblib-1.1.0/joblib-1.1.0-py2.py3-none-any.whl --no-deps
428                 if [ $? -ne 0 ]
429                 then
430                     echo "FATAL: could not install joblib-1.1.0"
431                     exit 6
432                 fi
433                 echo "INFO: install decorator-5.1.0"
434                 ${PYTHONBIN} -m pip install  --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/decorator-5.1.0/decorator-5.1.0-py3-none-any.whl --no-deps
435                 if [ $? -ne 0 ]
436                 then
437                     echo "FATAL: could not install decorator-5.1.0"
438                     exit 6
439                 fi
440                 echo "INFO: install scikit-learn-0.24.2"
441                 ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/scikit-learn-0.24.2/scikit-learn-0.24.2.tar.gz --no-deps
442                 if [ $? -ne 0 ]
443                 then
444                     echo "FATAL: could not install scikit-0.24.2"
445                     exit 6
446                 fi
447             fi
448         fi
449
450         cd  $BUILD_DIR
451         mkdir ${BUILD_DIR}/$k
452         cd ${BUILD_DIR}/$k
453         cp -R $SOURCE_DIR/$k-${OTP[$k]}/* .
454         #
455         if [ $k == "otpod" ]; then
456             ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip . --no-deps  --prefix=$PRODUCT_INSTALL
457             if [ $? -ne 0 ]; then
458                 echo "ERROR on ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip . --no-deps  --prefix=$PRODUCT_INSTALL"
459                 exit 4
460             fi
461         else
462             $PYTHONBIN setup.py build
463             if [ $? -ne 0 ]
464             then
465                 echo "ERROR on ${PYTHONBIN} setup.py  build"
466                 exit 4
467             fi
468             #
469             $PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
470             if [ $? -ne 0 ]
471             then
472                 echo "ERROR on ${PYTHONBIN} setup.py  install --prefix=$PRODUCT_INSTALL"
473                 exit 5
474             fi
475         fi
476         echo "INFO: check presence of $PRODUCT_INSTALL/local"
477         if [ -d "$PRODUCT_INSTALL/local" ]; then
478             echo "INFO: $PRODUCT_INSTALL/local is present -  reearrange ..."
479             if [ -d ${PRODUCT_INSTALL}/local/lib/python${PYTHON_VERSION}/dist-packages ]; then
480                 mv ${PRODUCT_INSTALL}/local/lib/python${PYTHON_VERSION}/dist-packages ${PRODUCT_INSTALL}/local/lib/python${PYTHON_VERSION}/site-packages
481             fi
482             for D in $(ls $PRODUCT_INSTALL/local); do
483                 echo "INFO: next subdirectory: $PRODUCT_INSTALL/local/$D"
484                 if [ -d $PRODUCT_INSTALL/$D ]; then
485                     cp -r $PRODUCT_INSTALL/local/$D/* $PRODUCT_INSTALL/$D/
486                 else
487                     mv $PRODUCT_INSTALL/local/$D $PRODUCT_INSTALL/$D
488                 fi
489             done
490             rm -rf $PRODUCT_INSTALL/local
491         fi
492     done
493
494     #
495     # O P E N T U R N S
496     #
497     if [ -f ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py ]; then
498         echo "INFO: site.py already installed"
499     elif [ "$SAT_Python_IS_NATIVE" == "1" ]; then
500         # check first whether the init.py file is installed
501         echo "WARNING: missing init.py file. Installing it from system Python installation"
502         SITE_PATCH=
503         LINUX_DISTRIBUTION="$DIST_NAME$DIST_VERSION"
504         case $LINUX_DISTRIBUTION in
505             DB11)
506                 SITE_PATCH=/usr/lib/pypy/dist-packages/setuptools/site-patch.py
507                 ;;
508             DB10)
509                 SITE_PATCH=/usr/lib/python3/dist-packages/setuptools/site-patch.py
510                 ;;
511             UB22*)
512                 SITE_PATCH=/usr/lib/pypy/dist-packages/setuptools/site-patch.py
513                 ;;
514             UB20*)
515                 SITE_PATCH=/usr/lib/python3/dist-packages/setuptools/site-patch.py
516                 ;;
517             FD32)
518                 SITE_PATCH=/usr/lib/python3.8/site-packages/setuptools/site-patch.py
519                 ;;
520             FD34)
521                 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
522                 ;;
523             FD36)
524                 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
525                 ;;
526             FD37)
527                 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
528                 ;;
529             FD38)
530                 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
531                 ;;
532             CO8*)
533                 SITE_PATCH=/usr/lib/pypy/dist-packages/setuptools/site-patch.py
534                 ;;
535             *)
536                 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
537                 ;;
538         esac
539         # check whether this file exists
540         if [ "${SITE_PATCH}" == "" ]; then
541             cp $SOURCE_DIR/addons/site-patch.py ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py
542         else
543             cp $SITE_PATCH ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py
544         fi
545     elif [ -f ${PYTHON_ROOT_DIR}/lib/python${PYTHON_VERSION}/site-packages/setuptools/site-patch.py ]; then
546         cp ${PYTHON_ROOT_DIR}/lib/python${PYTHON_VERSION}/site-packages/setuptools/site-patch.py ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py
547     else
548         echo "ERROR: could not find site-patch.py"
549         exit 7
550     fi
551 fi
552
553 cd ${PRODUCT_INSTALL}/lib
554 # On some nodes, the link to OT is not done properly.
555 if [[ ! -f libOT.so.0 ]]; then
556     echo "INFO: Fixing libOT.so"
557     ln -sf libOT.so.0.23.0 libOT.so.0.23
558     ln -sf libOT.so.0.23 libOT.so.0
559     ln -sf libOT.so.0 libOT.so
560 fi
561
562 echo
563 echo "########## END"