3 echo "##########################################################################"
4 echo "openturns" $VERSION
5 echo "##########################################################################"
7 # we don't install in python directory -> modify environment as described in INSTALL file
9 #mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION}/site-packages
10 export PATH=$(pwd)/bin:$PATH
11 export PYTHONPATH=$(pwd):$PYTHONPATH
12 export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:$PYTHONPATH
15 if [ -n "$SAT_HPC" ] && [ -n "$MPI_ROOT_DIR" ]; then
16 echo "WARNING: setting CC and CXX environment variables and target MPI wrapper"
17 CMAKE_OPTIONS+=" -DCMAKE_CXX_COMPILER:STRING=${MPI_CXX_COMPILER}"
18 CMAKE_OPTIONS+=" -DCMAKE_C_COMPILER:STRING=${MPI_C_COMPILER}"
21 CMAKE_OPTIONS+=" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
22 CMAKE_OPTIONS+=" -DCMAKE_INSTALL_LIBDIR:STRING=lib"
23 CMAKE_OPTIONS+=" -DCMAKE_BUILD_TYPE:STRING=Release"
24 CMAKE_OPTIONS+=" -DPYTHON_EXECUTABLE=${PYTHONBIN}"
26 if [ -n "$SWIG_ROOT_DIR" ] && [ "$SAT_swig_IS_NATIVE" != "1" ]; then
27 CMAKE_OPTIONS+=" -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig"
30 if [ -n "$TBB_ROOT_DIR" ] && [ "$SAT_tbb_IS_NATIVE" != "1" ]; then
31 CMAKE_OPTIONS+=" -DTBB_ROOT_DIR=${TBB_ROOT_DIR}"
32 CMAKE_OPTIONS+=" -Dtbb_DIR=${TBB_ROOT_DIR}/lib/cmake"
35 # https://github.com/persalys/persalys/issues/745
36 LINUX_DISTRIBUTION="$DIST_NAME$DIST_VERSION"
37 case $LINUX_DISTRIBUTION in
38 UB22*|CO8*|CO9*|FD36|FD37)
39 echo "WARNING: switching OFF TBB support"
40 CMAKE_OPTIONS+=" -DUSE_TBB=OFF"
47 if [ -n "$LAPACK_ROOT_DIR" ] && [ "$SAT_lapack_IS_NATIVE" != "1" ]; then
48 CMAKE_OPTIONS+=" -DLAPACK_DIR=${LAPACK_ROOT_DIR}/lib/cmake/lapack-3.8.0"
49 CMAKE_OPTIONS+=" -DCBLAS_DIR=${LAPACK_ROOT_DIR}/lib/cmake/cblas-3.8.0"
50 CMAKE_OPTIONS+=" -DCBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libcblas.so"
51 CMAKE_OPTIONS+=" -DBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libblas.so"
55 if [ -n "$LIBXML2_ROOT_DIR" ] && [ "$SAT_libxml2_IS_NATIVE" != "1" ]; then
56 CMAKE_OPTIONS+=" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
57 CMAKE_OPTIONS+=" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
58 CMAKE_OPTIONS+=" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
62 if [ -n "$HDF5_ROOT_DIR" ] && [ "$SAT_hdf5_IS_NATIVE" != "1" ]; then
63 CMAKE_OPTIONS+=" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
64 CMAKE_OPTIONS+=" -DHDF5_USE_STATIC_LIBRARIES:BOOL=OFF"
65 CMAKE_OPTIONS+=" -DHDF5_ROOT:PATH=${HDF5_ROOT_DIR}"
66 CMAKE_OPTIONS+=" -DHDF5_hdf5_LIBRARY_RELEASE=${HDF5_ROOT_DIR}/lib"
67 CMAKE_OPTIONS+=" -DHDF5_hdf5_hl_LIBRARY_RELEASE=${HDF5_ROOT_DIR}/lib/libhdf5_hl.so"
68 CMAKE_OPTIONS+=" -DHDF5_HL_LIBRARY=${HDF5_ROOT_DIR}/lib/libhdf5_hl.so"
69 CMAKE_OPTIONS+=" -DHDF5_C_INCLUDE_DIR=${HDF5_ROOT_DIR}/include"
73 if [ -n "$CMINPACK_ROOT_DIR" ] && [ "$SAT_cminpack_IS_NATIVE" != "1" ]; then
74 CMAKE_OPTIONS+=" -DCMINPACK_ROOT_DIR=${CMINPACK_ROOT_DIR}"
75 CMAKE_OPTIONS+=" -DCMINPACK_INCLUDE_DIR=${CMINPACK_ROOT_DIR}/include/cminpack-1"
76 CMAKE_OPTIONS+=" -DCMINPACK_LIBRARY=$CMINPACK_ROOT_DIR/lib/libcminpack_s.a"
78 CMAKE_OPTIONS+=" -DCMINPACK_ROOT_DIR=${CMINPACK_ROOT_DIR}"
79 CMAKE_OPTIONS+=" -DCMINPACK_INCLUDE_DIR=${CMINPACK_ROOT_DIR}/include/cminpack-1"
83 if [ -n "$LAPACK_ROOT_DIR" ] && [ "$SAT_lapack_IS_NATIVE" != "1" ]; then
84 CMAKE_OPTIONS+=" -DLAPACK_DIR=${LAPACK_ROOT_DIR}/lib/cmake/lapack-3.8.0"
85 CMAKE_OPTIONS+=" -DCBLAS_DIR=${LAPACK_ROOT_DIR}/lib/cmake/cblas-3.8.0"
86 CMAKE_OPTIONS+=" -DCBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libcblas.so"
87 CMAKE_OPTIONS+=" -DBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libblas.so"
90 if [[ $DIST_NAME == "CO" && $DIST_VERSION == "8" && -f /usr/lib64/libcblas.so && -f /usr/lib64/libblas.so ]]; then
91 CMAKE_OPTIONS+=" -DCBLAS_LIBRARIES=/usr/lib64/libcblas.so"
92 CMAKE_OPTIONS+=" -DBLAS_LIBRARIES=/usr/lib64/libblas.so"
96 if [ -n "$LIBXML2_ROOT_DIR" ] && [ "$SAT_libxml2_IS_NATIVE" != "1" ]; then
97 CMAKE_OPTIONS+=" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
98 CMAKE_OPTIONS+=" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
99 CMAKE_OPTIONS+=" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
103 if [ -n "$NLOPT_ROOT_DIR" ] && [ "$SAT_nlopt_IS_NATIVE" != "1" ]; then
104 CMAKE_OPTIONS+=" -DNLOPT_INCLUDE_DIR:STRING=${NLOPT_ROOT_DIR}/include"
105 CMAKE_OPTIONS+=" -DNLOPT_LIBRARY:STRING=${NLOPT_ROOT_DIR}/lib/libnlopt.so"
106 CMAKE_OPTIONS+=" -DNLOPT_DIR:STRING=${NLOPT_ROOT_DIR}"
110 echo "*** cmake" $CMAKE_OPTIONS
113 mkdir -p $BUILD_DIR/openturns
114 mkdir -p $BUILD_DIR/cache/pip
116 # since we are using several nodes and share the same $HOME
117 # compilation can get screwed up.
118 # following this discussion: https://tex.stackexchange.com/questions/467824/is-it-possible-to-relocate-my-texmf-directory
119 # we define the following environment variables
120 export TEXMFHOME=$BUILD_DIR/texmf
121 export TEXMFVAR=$BUILD_DIR/texlive
122 export TEXMFCONFIG=$BUILD_DIR/texlive
125 mkdir -p $TEXMFCONFIG
127 cd $BUILD_DIR/openturns
128 cmake $CMAKE_OPTIONS $SOURCE_DIR/openturns-1.19
131 echo "ERROR on cmake"
136 echo "*** make" $MAKE_OPTIONS
145 echo "*** make install"
149 echo "ERROR on make install"
154 echo "*** check installation"
155 if [ ! -d "${PRODUCT_INSTALL}/lib" ]; then
156 mkdir -p ${PRODUCT_INSTALL}/lib
159 if [ -d "${PRODUCT_INSTALL}/lib64" ]; then
160 echo "WARNING: moving lib64 to lib"
161 mv ${PRODUCT_INSTALL}/lib64/* ${PRODUCT_INSTALL}/lib/
162 rmdir ${PRODUCT_INSTALL}/lib64
163 elif [ -d "${PRODUCT_INSTALL}/local/lib64" ]; then
164 echo "WARNING: moving local/lib64 to lib"
165 mv ${PRODUCT_INSTALL}/local/lib64/* ${PRODUCT_INSTALL}/lib/
166 rmdir ${PRODUCT_INSTALL}/local/lib64
169 if [[ -d "${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/dist-packages" ]]; then
170 echo "WARNING: renaming ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/dist-packages as ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages"
171 cd ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}
173 mv dist-packages site-packages
175 cd $BUILD_DIR/openturns
178 export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:${PYTHONPATH}
179 export LD_LIBRARY_PATH=${PRODUCT_INSTALL}/lib:${LD_LIBRARY_PATH}
180 chmod +x ${SOURCE_DIR}/openturns-1.19/python/test/t_features.py
181 ${PYTHONBIN} ${SOURCE_DIR}/openturns-1.19/python/test/t_features.py
184 echo "ERROR testing Openturns features...."
188 LD_LIBRARY_PATH_REF=${LD_LIBRARY_PATH}
189 if [[ -d "$SOURCE_DIR/otfftw-0.12" ]]; then
193 OTC["otmixmod"]="0.13"
194 OTC["otmorris"]="0.13"
196 OTC["otrobopt"]="0.11"
197 OTC["otsubsetinverse"]="1.9"
203 echo "*** C O M P O N E N T : $k-${OTC[$k]} "
204 if [[ $k == "otagrum" ]]; then
205 echo "WARNING: skipping $k.."
209 mkdir ${BUILD_DIR}/$k
212 if [[ $DIST_NAME == "CO" ]]; then
213 CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF" # needs extra latex modules on CentOS 7, 8
214 CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF"
216 if [[ $k == "otmixmod" ]]; then
217 CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
218 CMAKE_EXTRA_OPTIONS+=" -DSOURCEFILES=$SOURCE_DIR/$k-${OTC[$k]}"
219 elif [[ $k == "otsubsetinverse" ]]; then
220 CMAKE_EXTRA_OPTIONS+=" -DOPENTURNS_HOME=$PRODUCT_INSTALL"
221 CMAKE_EXTRA_OPTIONS+=" -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON"
222 CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF"
223 elif [[ $k == "otfftw" ]]; then
224 CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
225 elif [[ $k == "otmorris" ]]; then
226 case $LINUX_DISTRIBUTION in
228 echo "WARNING: switching OFF documentation build"
229 CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
230 CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF" # missing package to be installed.
233 elif [[ $k == "otrobopt" ]]; then
234 case $LINUX_DISTRIBUTION in
236 echo "WARNING: switching OFF documentation build"
237 CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
238 CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF" # missing package to be installed.
241 elif [[ $k == "otsvm" ]]; then
242 case $LINUX_DISTRIBUTION in
244 echo "WARNING: switching OFF documentation build"
245 CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
246 CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF" # missing package to be installed.
249 elif [[ $k == "otpmml" ]]; then
250 CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
254 echo "*** cmake " $CMAKE_OPTIONS ${CMAKE_EXTRA_OPTIONS} $SOURCE_DIR/$k-${OTC[$k]}
255 cmake $CMAKE_OPTIONS ${CMAKE_EXTRA_OPTIONS} $SOURCE_DIR/$k-${OTC[$k]}
258 echo "ERROR on cmake"
263 echo "*** make" $MAKE_OPTIONS
272 echo "*** make install"
276 echo "ERROR on make install"
284 OTP["otwrapy"]="0.11"
288 echo "*** C O M P O N E N T : $k-${OTP[$k]} "
290 if [ "$SAT_Python_IS_NATIVE" == "1" ]; then
291 if [ $k == "otfmi" ]; then
292 echo "INFO: install dill-0.3.4"
293 ${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
296 echo "FATAL: could not install dill-0.3.4"
299 elif [ $k == "otpod" ]; then
300 if [[ $DIST_NAME == "CO" && $DIST_VERSION == "8" ]]; then
301 echo "*** skipping: since system Cython too old"
304 echo "INFO: install scikit-learn-0.24.2"
305 ${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
308 echo "FATAL: could not install scikit-0.24.2"
311 echo "INFO: install threadpoolctl-3.0.0"
312 ${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
315 echo "FATAL: could not install threadpoolctl 3.0.0"
319 else # non native Python
320 if [[ $k == "otfmi" ]]; then
321 echo "INFO: install dill-0.3.4"
322 ${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
325 echo "FATAL: could not install dikk-0.3.4"
328 elif [[ $k == "otpod" ]]; then
329 echo "INFO: install threadpoolctl-3.0.0"
330 ${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
333 echo "FATAL: could not install readpoolctl 3.0.0"
336 echo "INFO: install joblib-1.1.0"
337 ${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
340 echo "FATAL: could not install joblib-1.1.0"
343 echo "INFO: install decorator-5.1.0"
344 ${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
347 echo "FATAL: could not install decorator-5.1.0"
350 echo "INFO: install scikit-learn-0.24.2"
351 ${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
354 echo "FATAL: could not install scikit-0.24.2"
361 mkdir ${BUILD_DIR}/$k
363 cp -R $SOURCE_DIR/$k-${OTP[$k]}/* .
365 $PYTHONBIN setup.py build
368 echo "ERROR on ${PYTHONBIN} setup.py build"
372 $PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
375 echo "ERROR on ${PYTHONBIN} setup.py install --prefix=$PRODUCT_INSTALL"
383 if [ -f ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py ]; then
384 echo "INFO: site.py already installed"
385 elif [ "$SAT_Python_IS_NATIVE" == "1" ]; then
386 # check first whether the init.py file is installed
387 echo "WARNING: missing init.py file. Installing it from system Python installation"
389 LINUX_DISTRIBUTION="$DIST_NAME$DIST_VERSION"
390 case $LINUX_DISTRIBUTION in
392 SITE_PATCH=/usr/lib/pypy/dist-packages/setuptools/site-patch.py
395 SITE_PATCH=/usr/lib/python3/dist-packages/setuptools/site-patch.py
398 SITE_PATCH=/usr/lib/pypy/dist-packages/setuptools/site-patch.py
401 SITE_PATCH=/usr/lib/python3/dist-packages/setuptools/site-patch.py
404 SITE_PATCH=/usr/lib/python3.8/site-packages/setuptools/site-patch.py
407 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
410 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
413 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
416 SITE_PATCH=/usr/lib/pypy/dist-packages/setuptools/site-patch.py
419 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
422 # check whether this file exists
423 if [ "${SITE_PATCH}" == "" ]; then
424 cp $SOURCE_DIR/addons/site-patch.py ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py
426 cp $SITE_PATCH ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py
428 elif [ -f ${PYTHON_ROOT_DIR}/lib/python${PYTHON_VERSION}/site-packages/setuptools/site-patch.py ]; then
429 cp ${PYTHON_ROOT_DIR}/lib/python${PYTHON_VERSION}/site-packages/setuptools/site-patch.py ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py
431 echo "ERROR: could not find site-patch.py"
436 cd ${PRODUCT_INSTALL}/lib
437 # On some nodes, the link to OT is not done properly.
438 # In addition to this issue, it seems that there is a bug in openturns 1.19 which uses 20 instead of 19 as suffix.
439 if [[ ! -f libOT.so.0 ]]; then
440 echo "INFO: Fixing libOT.so"
441 ln -sf libOT.so.0.20.0 libOT.so.0.20
442 ln -sf libOT.so.0.20 libOT.so.0
443 ln -sf libOT.so.0 libOT.so
447 echo "########## END"