Salome HOME
spns #41606: add sections for py3.6 and py3.9 in openturns 1.22 compil script for...
[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                 if [ "${PYTHON_VERSION}" == "3.6" ]; then
441                     echo "INFO: install scikit-learn-0.24.2"
442                     ${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
443                     if [ $? -ne 0 ]
444                     then
445                         echo "FATAL: could not install scikit-0.24.2"
446                         exit 6
447                     fi
448                 elif [ "${PYTHON_VERSION}" == "3.9" ]; then
449                     echo "INFO: install scikit-learn-1.2.2"
450                     ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/scikit-learn-1.2.2/scikit-learn-1.2.2.tar.gz --no-deps
451                     if [ $? -ne 0 ]
452                     then
453                         echo "FATAL: could not install scikit-1.2.2"
454                         exit 6
455                     fi
456                 fi
457             fi
458         fi
459
460         cd  $BUILD_DIR
461         mkdir ${BUILD_DIR}/$k
462         cd ${BUILD_DIR}/$k
463         cp -R $SOURCE_DIR/$k-${OTP[$k]}/* .
464         #
465         if [ $k == "otpod" ]; then
466             ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip . --no-deps  --prefix=$PRODUCT_INSTALL
467             if [ $? -ne 0 ]; then
468                 echo "ERROR on ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip . --no-deps  --prefix=$PRODUCT_INSTALL"
469                 exit 4
470             fi
471         else
472             $PYTHONBIN setup.py build
473             if [ $? -ne 0 ]
474             then
475                 echo "ERROR on ${PYTHONBIN} setup.py  build"
476                 exit 4
477             fi
478             #
479             $PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
480             if [ $? -ne 0 ]
481             then
482                 echo "ERROR on ${PYTHONBIN} setup.py  install --prefix=$PRODUCT_INSTALL"
483                 exit 5
484             fi
485         fi
486         echo "INFO: check presence of $PRODUCT_INSTALL/local"
487         if [ -d "$PRODUCT_INSTALL/local" ]; then
488             echo "INFO: $PRODUCT_INSTALL/local is present -  reearrange ..."
489             if [ -d ${PRODUCT_INSTALL}/local/lib/python${PYTHON_VERSION}/dist-packages ]; then
490                 mv ${PRODUCT_INSTALL}/local/lib/python${PYTHON_VERSION}/dist-packages ${PRODUCT_INSTALL}/local/lib/python${PYTHON_VERSION}/site-packages
491             fi
492             for D in $(ls $PRODUCT_INSTALL/local); do
493                 echo "INFO: next subdirectory: $PRODUCT_INSTALL/local/$D"
494                 if [ -d $PRODUCT_INSTALL/$D ]; then
495                     cp -r $PRODUCT_INSTALL/local/$D/* $PRODUCT_INSTALL/$D/
496                 else
497                     mv $PRODUCT_INSTALL/local/$D $PRODUCT_INSTALL/$D
498                 fi
499             done
500             rm -rf $PRODUCT_INSTALL/local
501         fi
502     done
503
504     #
505     # O P E N T U R N S
506     #
507     if [ -f ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py ]; then
508         echo "INFO: site.py already installed"
509     elif [ "$SAT_Python_IS_NATIVE" == "1" ]; then
510         # check first whether the init.py file is installed
511         echo "WARNING: missing init.py file. Installing it from system Python installation"
512         SITE_PATCH=
513         LINUX_DISTRIBUTION="$DIST_NAME$DIST_VERSION"
514         case $LINUX_DISTRIBUTION in
515             DB11)
516                 SITE_PATCH=/usr/lib/pypy/dist-packages/setuptools/site-patch.py
517                 ;;
518             DB10)
519                 SITE_PATCH=/usr/lib/python3/dist-packages/setuptools/site-patch.py
520                 ;;
521             UB22*)
522                 SITE_PATCH=/usr/lib/pypy/dist-packages/setuptools/site-patch.py
523                 ;;
524             UB20*)
525                 SITE_PATCH=/usr/lib/python3/dist-packages/setuptools/site-patch.py
526                 ;;
527             FD32)
528                 SITE_PATCH=/usr/lib/python3.8/site-packages/setuptools/site-patch.py
529                 ;;
530             FD34)
531                 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
532                 ;;
533             FD36)
534                 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
535                 ;;
536             FD37)
537                 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
538                 ;;
539             FD38)
540                 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
541                 ;;
542             CO8*)
543                 SITE_PATCH=/usr/lib/pypy/dist-packages/setuptools/site-patch.py
544                 ;;
545             *)
546                 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
547                 ;;
548         esac
549         # check whether this file exists
550         if [ "${SITE_PATCH}" == "" ]; then
551             cp $SOURCE_DIR/addons/site-patch.py ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py
552         else
553             cp $SITE_PATCH ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py
554         fi
555     elif [ -f ${PYTHON_ROOT_DIR}/lib/python${PYTHON_VERSION}/site-packages/setuptools/site-patch.py ]; then
556         cp ${PYTHON_ROOT_DIR}/lib/python${PYTHON_VERSION}/site-packages/setuptools/site-patch.py ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py
557     elif [ -f ${PYTHON_ROOT_DIR}/lib/python${PYTHON_VERSION}/site.py ]; then
558         cp ${PYTHON_ROOT_DIR}/lib/python${PYTHON_VERSION}/site.py ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py
559     else
560         echo "ERROR: could not find site-patch.py"
561         exit 7
562     fi
563 fi
564
565 cd ${PRODUCT_INSTALL}/lib
566 # On some nodes, the link to OT is not done properly.
567 if [[ ! -f libOT.so.0 ]]; then
568     echo "INFO: Fixing libOT.so"
569     ln -sf libOT.so.0.23.0 libOT.so.0.23
570     ln -sf libOT.so.0.23 libOT.so.0
571     ln -sf libOT.so.0 libOT.so
572 fi
573
574 echo
575 echo "########## END"