3 echo "##########################################################################"
4 echo "openturns" $VERSION
5 echo "##########################################################################"
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
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}"
20 CMAKE_OPTIONS+=" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
21 CMAKE_OPTIONS+=" -DCMAKE_BUILD_TYPE:STRING=Release"
22 CMAKE_OPTIONS+=" -DPYTHON_EXECUTABLE=${PYTHONBIN}"
24 if [ -n "$SWIG_ROOT_DIR" ] && [ "$SAT_swig_IS_NATIVE" != "1" ]; then
25 CMAKE_OPTIONS+=" -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig"
28 if [ -n "$TBB_ROOT_DIR" ] && [ "$SAT_tbb_IS_NATIVE" != "1" ]; then
29 CMAKE_OPTIONS+=" -DTBB_ROOT_DIR=${TBB_ROOT_DIR}"
33 if [ -n "$LAPACK_ROOT_DIR" ] && [ "$SAT_lapack_IS_NATIVE" != "1" ]; then
34 CMAKE_OPTIONS+=" -DLAPACK_DIR=${LAPACK_ROOT_DIR}/lib/cmake/lapack-3.8.0"
35 CMAKE_OPTIONS+=" -DCBLAS_DIR=${LAPACK_ROOT_DIR}/lib/cmake/cblas-3.8.0"
36 CMAKE_OPTIONS+=" -DCBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libcblas.so"
37 CMAKE_OPTIONS+=" -DBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libblas.so"
41 if [ -n "$LIBXML2_ROOT_DIR" ] && [ "$SAT_libxml2_IS_NATIVE" != "1" ]; then
42 CMAKE_OPTIONS+=" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
43 CMAKE_OPTIONS+=" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
44 CMAKE_OPTIONS+=" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
48 if [ -n "$HDF5_ROOT_DIR" ] && [ "$SAT_hdf5_IS_NATIVE" != "1" ]; then
49 CMAKE_OPTIONS+=" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
50 CMAKE_OPTIONS+=" -DHDF5_USE_STATIC_LIBRARIES:BOOL=OFF"
51 CMAKE_OPTIONS+=" -DHDF5_ROOT:PATH=${HDF5_ROOT_DIR}"
52 CMAKE_OPTIONS+=" -DHDF5_hdf5_LIBRARY_RELEASE=${HDF5_ROOT_DIR}/lib"
53 CMAKE_OPTIONS+=" -DHDF5_hdf5_hl_LIBRARY_RELEASE=${HDF5_ROOT_DIR}/lib/libhdf5_hl.so"
54 CMAKE_OPTIONS+=" -DHDF5_HL_LIBRARY=${HDF5_ROOT_DIR}/lib/libhdf5_hl.so"
55 CMAKE_OPTIONS+=" -DHDF5_C_INCLUDE_DIR=${HDF5_ROOT_DIR}/include"
59 if [ -n "$CMINPACK_ROOT_DIR" ] && [ "$SAT_cminpack_IS_NATIVE" != "1" ]; then
60 CMAKE_OPTIONS+=" -DCMINPACK_ROOT_DIR=${CMINPACK_ROOT_DIR}"
61 CMAKE_OPTIONS+=" -DCMINPACK_INCLUDE_DIR=${CMINPACK_ROOT_DIR}/include/cminpack-1"
62 CMAKE_OPTIONS+=" -DCMINPACK_LIBRARY=$CMINPACK_ROOT_DIR/lib/libcminpack_s.a"
64 CMAKE_OPTIONS+=" -DCMINPACK_ROOT_DIR=${CMINPACK_ROOT_DIR}"
65 CMAKE_OPTIONS+=" -DCMINPACK_INCLUDE_DIR=${CMINPACK_ROOT_DIR}/include/cminpack-1"
69 if [ -n "$LAPACK_ROOT_DIR" ] && [ "$SAT_lapack_IS_NATIVE" != "1" ]; then
70 CMAKE_OPTIONS+=" -DLAPACK_DIR=${LAPACK_ROOT_DIR}/lib/cmake/lapack-3.8.0"
71 CMAKE_OPTIONS+=" -DCBLAS_DIR=${LAPACK_ROOT_DIR}/lib/cmake/cblas-3.8.0"
72 CMAKE_OPTIONS+=" -DCBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libcblas.so"
73 CMAKE_OPTIONS+=" -DBLAS_LIBRARIES=$LAPACK_ROOT_DIR/lib/libblas.so"
76 if [[ $DIST_NAME == "CO" && $DIST_VERSION == "8" && -f /usr/lib64/libcblas.so && -f /usr/lib64/libblas.so ]]; then
77 CMAKE_OPTIONS+=" -DCBLAS_LIBRARIES=/usr/lib64/libcblas.so"
78 CMAKE_OPTIONS+=" -DBLAS_LIBRARIES=/usr/lib64/libblas.so"
82 if [ -n "$LIBXML2_ROOT_DIR" ] && [ "$SAT_libxml2_IS_NATIVE" != "1" ]; then
83 CMAKE_OPTIONS+=" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
84 CMAKE_OPTIONS+=" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
85 CMAKE_OPTIONS+=" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
89 if [ -n "$NLOPT_ROOT_DIR" ] && [ "$SAT_nlopt_IS_NATIVE" != "1" ]; then
90 CMAKE_OPTIONS+=" -DNLOPT_INCLUDE_DIRS:STRING=${NLOPT_ROOT_DIR}/include"
91 CMAKE_OPTIONS+=" -DNLOPT_LIBRARIES:STRING=${NLOPT_ROOT_DIR}/lib"
92 CMAKE_OPTIONS+=" -DNLOPT_DIR:STRING=${NLOPT_ROOT_DIR}"
97 echo "*** cmake" $CMAKE_OPTIONS
99 mkdir -p $BUILD_DIR/openturns
100 mkdir -p $BUILD_DIR/cache/pip
101 cd $BUILD_DIR/openturns
102 cmake $CMAKE_OPTIONS $SOURCE_DIR/openturns-1.18
105 echo "ERROR on cmake"
110 echo "*** make" $MAKE_OPTIONS
119 echo "*** make install"
123 echo "ERROR on make install"
128 echo "*** check installation"
130 if [ -d "${PRODUCT_INSTALL}/lib64" ]
132 mv ${PRODUCT_INSTALL}/lib64/* ${PRODUCT_INSTALL}/lib
133 rmdir ${PRODUCT_INSTALL}/lib64
136 export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:${PYTHONPATH}
137 export LD_LIBRARY_PATH=${PRODUCT_INSTALL}/lib:${LD_LIBRARY_PATH}
138 chmod +x ${SOURCE_DIR}/openturns-1.18/python/test/t_features.py
139 ${SOURCE_DIR}/openturns-1.18/python/test/t_features.py
142 echo "ERROR testing Openturns features...."
146 LD_LIBRARY_PATH_REF=${LD_LIBRARY_PATH}
147 if [[ -d "$SOURCE_DIR/otfftw-0.11" ]]; then
152 OTC["otmixmod"]="0.12"
153 OTC["otmorris"]="0.10"
155 OTC["otrobopt"]="0.10"
156 OTC["otsubsetinverse"]="1.8"
162 echo "*** C O M P O N E N T : $k-${OTC[$k]} "
163 if [[ $k == "otagrum" ]]; then
164 echo "WARNING: skipping $k.."
168 mkdir ${BUILD_DIR}/$k
171 if [[ $DIST_NAME == "CO" ]]; then
172 CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF" # needs extra latex modules on CentOS 7, 8
173 CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF"
175 if [[ $k == "otmixmod" ]]; then
176 CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
177 CMAKE_EXTRA_OPTIONS+=" -DSOURCEFILES=$SOURCE_DIR/$k-${OTC[$k]}"
178 elif [[ $k == "otsubsetinverse" ]]; then
179 CMAKE_EXTRA_OPTIONS+=" -DOPENTURNS_HOME=$PRODUCT_INSTALL"
180 CMAKE_EXTRA_OPTIONS+=" -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON"
181 CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF"
182 elif [[ $k == "otfftw" ]]; then
183 CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
184 elif [ $k == "otmorris" ] && [ "$DIST_NAME$DIST_VERSION" == "FD32" ]; then
185 CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
186 CMAKE_EXTRA_OPTIONS+=" -DUSE_SPHINX=OFF" # missing package to be installed.
187 elif [[ $k == "otpmml" ]]; then
188 CMAKE_EXTRA_OPTIONS+=" -DBUILD_DOC=OFF"
192 echo "*** cmake " $CMAKE_OPTIONS ${CMAKE_EXTRA_OPTIONS} $SOURCE_DIR/$k-${OTC[$k]}
193 cmake $CMAKE_OPTIONS ${CMAKE_EXTRA_OPTIONS} $SOURCE_DIR/$k-${OTC[$k]}
196 echo "ERROR on cmake"
201 echo "*** make" $MAKE_OPTIONS
210 echo "*** make install"
214 echo "ERROR on make install"
221 OTP["otwrapy"]="0.10"
225 echo "*** C O M P O N E N T : $k-${OTP[$k]} "
227 if [ "$SAT_Python_IS_NATIVE" == "1" ]; then
228 if [ $k == "otfmi" ]; then
229 echo "INFO: install dill-0.3.4"
230 ${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
233 echo "FATAL: could not install dill-0.3.4"
236 elif [ $k == "otpod" ]; then
237 if [[ $DIST_NAME == "CO" && $DIST_VERSION == "8" ]]; then
238 echo "*** skipping: since system Cython too old"
241 echo "INFO: install scikit-learn-0.24.2"
242 ${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
245 echo "FATAL: could not install scikit-0.24.2"
248 echo "INFO: install threadpoolctl-3.0.0"
249 ${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
252 echo "FATAL: could not install threadpoolctl 3.0.0"
256 else # non native Python
257 if [[ $k == "otfmi" ]]; then
258 echo "INFO: install dill-0.3.4"
259 ${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
262 echo "FATAL: could not install dikk-0.3.4"
265 elif [[ $k == "otpod" ]]; then
266 echo "INFO: install threadpoolctl-3.0.0"
267 ${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
270 echo "FATAL: could not install readpoolctl 3.0.0"
273 echo "INFO: install joblib-1.1.0"
274 ${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
277 echo "FATAL: could not install joblib-1.1.0"
280 echo "INFO: install decorator-5.1.0"
281 ${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
284 echo "FATAL: could not install decorator-5.1.0"
287 echo "INFO: install scikit-learn-0.24.2"
288 ${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
291 echo "FATAL: could not install scikit-0.24.2"
298 mkdir ${BUILD_DIR}/$k
300 cp -R $SOURCE_DIR/$k-${OTP[$k]}/* .
302 $PYTHONBIN setup.py build
305 echo "ERROR on ${PYTHONBIN} setup.py build"
309 $PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
312 echo "ERROR on ${PYTHONBIN} setup.py install --prefix=$PRODUCT_INSTALL"
320 if [ -f ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py ]; then
321 echo "INFO: site.py already installed"
322 elif [ "$SAT_Python_IS_NATIVE" == "1" ]; then
323 # check first whether the init.py file is installed
324 echo "WARNING: missing init.py file. Installing it from system Python installation"
326 LINUX_DISTRIBUTION="$DIST_NAME$DIST_VERSION"
327 case $LINUX_DISTRIBUTION in
329 SITE_PATCH=/usr/lib/pypy/dist-packages/setuptools/site-patch.py
332 SITE_PATCH=/usr/lib/python3/dist-packages/setuptools/site-patch.py
335 SITE_PATCH=/usr/lib/pypy/dist-packages/setuptools/site-patch.py
338 SITE_PATCH=/usr/lib/pypy/dist-packages/setuptools/site-patch.py
344 SITE_PATCH=/usr/lib/pypy/dist-packages/setuptools/site-patch.py
347 SITE_PATCH=$SOURCE_DIR/addons/site-patch.py
350 # check whether this file exists
351 if [ "${SITE_PATCH}" == "" ]; then
352 cp $SOURCE_DIR/addons/site-patch.py ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py
354 cp $SITE_PATCH ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py
356 elif [ -f ${PYTHON_ROOT_DIR}/lib/python${PYTHON_VERSION}/site-packages/setuptools/site-patch.py ]; then
357 cp ${PYTHON_ROOT_DIR}/lib/python${PYTHON_VERSION}/site-packages/setuptools/site-patch.py ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages/site.py
359 echo "ERROR: could not find site-patch.py"
364 cd ${PRODUCT_INSTALL}/lib
365 # On some nodes, the link to OT is not done properly.
366 if [[ ! -f libOT.so.0 ]]; then
367 echo "INFO: Fixing libOT.so"
368 ln -sf libOT.so.0.19.0 libOT.so.0.19
369 ln -sf libOT.so.0.19 libOT.so.0
370 ln -sf libOT.so.0 libOT.so
374 echo "########## END"