From 8dad2a00edc9baafbc58db9fd27eb9192cf2642d Mon Sep 17 00:00:00 2001 From: Nabil Ghodbane Date: Fri, 19 Feb 2021 16:28:42 +0100 Subject: [PATCH] spns #23875 OpenTurns --- applications/SALOME-master.pyconf | 13 +- products/compil_scripts/openturns.sh | 53 +++++++ products/env_scripts/eigen.py | 3 +- products/env_scripts/openturns.py | 1 + products/matplotlib.pyconf | 9 ++ products/openturns.pyconf | 11 +- products/patches/openturns-1.16.0001.patch | 153 +++++++++++++++++++++ 7 files changed, 232 insertions(+), 11 deletions(-) create mode 100755 products/compil_scripts/openturns.sh create mode 100644 products/patches/openturns-1.16.0001.patch diff --git a/applications/SALOME-master.pyconf b/applications/SALOME-master.pyconf index b329dac..7784b89 100644 --- a/applications/SALOME-master.pyconf +++ b/applications/SALOME-master.pyconf @@ -71,7 +71,7 @@ APPLICATION : opencv : '3.2.0' openssl : "native" ospray : '1.8.4' - #openturns: '1.16' + openturns: '1.16' packaging : '17.1' ParaView : '5.8.0' petsc : '3.14.0' @@ -216,6 +216,11 @@ __overwrite__ : 'PRODUCTS.mesa.version_19_0_8.patches' : ['mesa-19.0.8-debug_symbol.patch'] } + { + __condition__ : "VARS.dist in ['CO7']" + 'APPLICATION.products.tbb' : '4.4' + } + { __condition__ : "VARS.dist in ['CO7'] and APPLICATION.environ.build.VTK_SMP_IMPLEMENTATION_TYPE == 'OpenMP'" 'PRODUCTS.ParaView.version_5_8_0.patches' : ['paraview.0003-ParaViewClient.patch', @@ -230,12 +235,6 @@ __overwrite__ : ] } - # { - # # - # __condition__ : "VARS.dist in ['CO7']" - # 'PRODUCTS.openturns.default.cmake_options' : " -DPYTHON_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python -DUSE_TBB=OFF" # essayer avec un nouveau gcc - # } - { __condition__ : "VARS.dist in ['CO7'] and APPLICATION.environ.build.VTK_SMP_IMPLEMENTATION_TYPE == 'TBB'" 'APPLICATION.products.tbb' : '4.4' diff --git a/products/compil_scripts/openturns.sh b/products/compil_scripts/openturns.sh new file mode 100755 index 0000000..d51bb22 --- /dev/null +++ b/products/compil_scripts/openturns.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +echo "##########################################################################" +echo "openturns" $VERSION +echo "##########################################################################" + +CMAKE_OPTIONS="" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release" +CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python" + +echo +echo "*** cmake" $CMAKE_OPTIONS +cmake $CMAKE_OPTIONS $SOURCE_DIR +if [ $? -ne 0 ] +then + echo "ERROR on cmake" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +make $MAKE_OPTIONS +if [ $? -ne 0 ] +then + echo "ERROR on make" + exit 2 +fi + +echo +echo "*** make install" +make install +if [ $? -ne 0 ] +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "*** check installation" + +export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:${PYTHONPATH} +export LD_LIBRARY_PATH=${PRODUCT_INSTALL}/lib:${LD_LIBRARY_PATH} +chmod +x ${SOURCE_DIR}/python/test/t_features.py +${SOURCE_DIR}/python/test/t_features.py +if [ $? -ne 0 ] +then + echo "ERROR testing Openturns features...." + exit 4 +fi + +echo +echo "########## END" diff --git a/products/env_scripts/eigen.py b/products/env_scripts/eigen.py index 9db1557..8e91f0b 100644 --- a/products/env_scripts/eigen.py +++ b/products/env_scripts/eigen.py @@ -5,7 +5,8 @@ import os.path import platform def set_env(env, prereq_dir, version): - env.set('EIGEN_ROOT_DIR', prereq_dir) # update for cmake + env.set('EIGEN_ROOT_DIR', prereq_dir) + env.set('Eigen3_DIR', prereq_dir) root = env.get('EIGEN_ROOT_DIR') if platform.system() != "Windows" : pass diff --git a/products/env_scripts/openturns.py b/products/env_scripts/openturns.py index 197aab0..4870814 100644 --- a/products/env_scripts/openturns.py +++ b/products/env_scripts/openturns.py @@ -4,6 +4,7 @@ import os.path def set_env(env, prereq_dir, version): env.set('OPENTURN_ROOT_DIR', prereq_dir) env.prepend('PATH', os.path.join(prereq_dir,'bin')) + env.prepend('LD_LIBRARY_PATH',os.path.join(prereq_dir, 'lib')) pyver = 'python' + env.get('PYTHON_VERSION') env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) diff --git a/products/matplotlib.pyconf b/products/matplotlib.pyconf index 37ab373..779131a 100755 --- a/products/matplotlib.pyconf +++ b/products/matplotlib.pyconf @@ -39,6 +39,15 @@ default_win : } } +version_2_2_2 : +{ + properties: + { + pip : "yes" + incremental : "yes" + } +} + version_2_0_2 : { depend : ['Python', 'PyQt', 'numpy', 'freetype', 'six', 'pytz', 'pyparsing', 'dateutil', 'setuptools', 'cycler'] diff --git a/products/openturns.pyconf b/products/openturns.pyconf index f9b2230..3c33339 100644 --- a/products/openturns.pyconf +++ b/products/openturns.pyconf @@ -1,14 +1,14 @@ default : { name : "openturns" - build_source : "cmake" - cmake_options : " -DPYTHON_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python" + build_source : "script" + compil_script : $name + $VARS.scriptExtension get_source : "archive" environ : { env_script : $name + ".py" } - depend : ['Python', 'lapack', 'hdf5', 'tbb', 'nlopt'] + depend : ['Python', 'lapack', 'hdf5', 'tbb', 'nlopt', 'libxml2', 'eigen'] build_depend : ["cmake", "swig"] patches : [] source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name @@ -20,3 +20,8 @@ default : incremental : "yes" } } + +version_1_16 : +{ + patches : ['openturns-1.16.0001.patch'] +} diff --git a/products/patches/openturns-1.16.0001.patch b/products/patches/openturns-1.16.0001.patch new file mode 100644 index 0000000..57e3061 --- /dev/null +++ b/products/patches/openturns-1.16.0001.patch @@ -0,0 +1,153 @@ +diff -pruN openturns_ref/CMakeLists.txt openturns_dev/CMakeLists.txt +--- openturns_ref/CMakeLists.txt 2021-02-19 15:46:57.077060192 +0100 ++++ openturns_dev/CMakeLists.txt 2021-02-19 15:46:46.576956703 +0100 +@@ -125,6 +125,10 @@ set (OPENTURNS_TEMPDIR + set (TEMPDIR ${OPENTURNS_TEMPDIR}) + + set (CMAKE_CXX_STANDARD 11) ++SET(LAPACK_ROOT_DIR $ENV{LAPACK_ROOT_DIR}) ++IF(LAPACK_ROOT_DIR) ++ LIST(APPEND CMAKE_PREFIX_PATH "${LAPACK_ROOT_DIR}") ++ENDIF(LAPACK_ROOT_DIR) + + if (NOT DEFINED LAPACK_LIBRARIES) + find_package (LAPACK REQUIRED) +@@ -156,7 +160,11 @@ if (USE_FLEX) + endif () + endif () + +-if (USE_TBB) ++if (USE_TBB) ++ SET(TBB_ROOT_DIR $ENV{TBB_ROOT_DIR}) ++ if(TBB_ROOT_DIR) ++ LIST(APPEND CMAKE_PREFIX_PATH "${TBB_ROOT_DIR}") ++ endif(TBB_ROOT_DIR) + find_package (TBB) + endif () + if (TBB_FOUND) +@@ -200,6 +208,10 @@ if (USE_DOXYGEN) + endif () + + if (USE_LIBXML2) ++ SET(LIBXML2_ROOT_DIR $ENV{LIBXLM2_ROOT_DIR}) ++ if(LIBXML2_ROOT_DIR) ++ LIST(APPEND CMAKE_PREFIX_PATH "${LIBXML2_ROOT_DIR}") ++ endif(LIBXML2_ROOT_DIR) + find_package (LibXml2) + endif () + if (LIBXML2_FOUND) +@@ -210,7 +222,7 @@ if (LIBXML2_FOUND) + endif () + + if (USE_HDF5) +- find_package(HDF5 COMPONENTS CXX) ++ find_package(HDF5 COMPONENTS CXX HL) + endif () + if (HDF5_FOUND) + set (OPENTURNS_HAVE_HDF5 TRUE) +@@ -218,7 +230,6 @@ if (HDF5_FOUND) + list (APPEND OPENTURNS_PRIVATE_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS}) + list (APPEND OPENTURNS_PRIVATE_LIBRARIES ${HDF5_LIBRARIES}) + endif () +- + if (MSVC OR WINTEL) + set (CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR}/lib/include/pthread_win32 ${CMAKE_CURRENT_SOURCE_DIR}/lib/include) + include_directories (${PROJECT_SOURCE_DIR}/lib/include/pthread_win32 ${CMAKE_CURRENT_SOURCE_DIR}/lib/include) + +diff -pruN openturns_ref/cmake/FindTBB.cmake openturns_dev/cmake/FindTBB.cmake +--- openturns_ref/cmake/FindTBB.cmake 2021-02-19 15:46:57.058060005 +0100 ++++ openturns_dev/cmake/FindTBB.cmake 2021-02-19 15:51:59.654083375 +0100 +@@ -27,6 +27,11 @@ + # (To distributed this file outside of CMake, substitute the full + # License text for the above reference.) + ++SET(TBB_ROOT_DIR $ENV{TBB_ROOT_DIR}) ++IF(TBB_ROOT_DIR) ++ LIST(APPEND CMAKE_PREFIX_PATH "${TBB_ROOT_DIR}") ++ENDIF(TBB_ROOT_DIR) ++ + find_path (TBB_INCLUDE_DIR NAMES tbb/tbb.h DOC "TBB include directory") + + set (TBB_INCLUDE_DIRS ${TBB_INCLUDE_DIR}) + +diff -pruN openturns_ref/cmake/FindNLopt.cmake openturns_dev/cmake/FindNLopt.cmake +--- openturns_ref/cmake/FindNLopt.cmake 2021-02-19 15:46:57.064060064 +0100 ++++ openturns_dev/cmake/FindNLopt.cmake 2021-02-19 15:53:27.134956381 +0100 +@@ -11,10 +11,21 @@ + # NLOPT_ROOT_DIR - root dir (ex. /usr/local) + + # set NLOPT_INCLUDE_DIR ++SET(NLOPT_ROOT_DIR $ENV{NLOPT_ROOT_DIR}) ++ ++IF(NLOPT_ROOT_DIR) ++ LIST(APPEND CMAKE_PREFIX_PATH "${NLOPT_ROOT_DIR}") ++ LIST(APPEND CMAKE_PREFIX_PATH "${NLOPT_ROOT_DIR}/include") ++ LIST(APPEND CMAKE_PREFIX_PATH "${NLOPT_ROOT_DIR}/lib") ++ELSE(NLOPT_ROOT_DIR) ++ MESSAGE(FATAL_ERROR "PLEASE SET ENVIRONMENT VARIABLE NLOPT_ROOT_DIR") ++ENDIF(NLOPT_ROOT_DIR) ++ + find_path (NLOPT_INCLUDE_DIR + NAMES nlopt.hpp ++ HINTS ${NLOPT_ROOT_DIR}/include + DOC +- "Nlopt include directory" ++ "Nlopt include directory" + ) + + # set NLOPT_INCLUDE_DIRS +@@ -22,9 +33,10 @@ set (NLOPT_INCLUDE_DIRS ${NLOPT_INCLUDE_ + + # set NLOPT_LIBRARY + find_library (NLOPT_LIBRARY +- NAMES nlopt_cxx nlopt ++ NAMES nlopt ++ HINTS ${NLOPT_ROOT_DIR}/lib + DOC +- "Nlopt library location" ++ "Nlopt library location" + ) + + # set NLOPT_LIBRARIES + +diff -pruN openturns_ref/lib/src/CMakeLists.txt openturns_dev/lib/src/CMakeLists.txt +--- openturns_ref/lib/src/CMakeLists.txt 2021-02-19 15:46:49.880989268 +0100 ++++ openturns_dev/lib/src/CMakeLists.txt 2021-02-19 16:12:54.874714974 +0100 +@@ -80,15 +80,15 @@ if (BISON_FOUND AND FLEX_FOUND) + add_dependencies (OT generate_csv_parser) + endif () + +-target_link_libraries (OT PUBLIC ${OPENTURNS_LIBRARIES}) +-target_link_libraries (OT PRIVATE ${OPENTURNS_PRIVATE_LIBRARIES}) ++target_link_libraries (OT PUBLIC ${OPENTURNS_LIBRARIES} ${HDF5_LIBRARIES} ${TBB_LIBRARIES}) ++target_link_libraries (OT PRIVATE ${OPENTURNS_PRIVATE_LIBRARIES} ${HDF5_LIBRARIES} ${TBB_LIBRARIES}) + + target_include_directories (OT INTERFACE $) + target_include_directories (OT PUBLIC ${OPENTURNS_INCLUDE_DIRS}) + + # Build an empty executable to check link dependencies and completeness + add_executable (linktest main.cxx) +-target_link_libraries (linktest OT) ++target_link_libraries (linktest OT ${TBB_LIBRARIES} ${HDF5_LIBRARIES}) + set_target_properties (linktest PROPERTIES + INSTALL_RPATH "${CMAKE_INSTALL_RPATH};${CMAKE_BINARY_DIR}/lib/src") + +@@ -109,5 +109,5 @@ install (TARGETS OT + if (UNIX AND BUILD_SHARED_LIBS) + set (OT_GDB_PY ${CMAKE_SHARED_LIBRARY_PREFIX}OT${CMAKE_SHARED_LIBRARY_SUFFIX}.${LIB_VERSION}-gdb.py) + execute_process (COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/libOT-gdb.py ${CMAKE_CURRENT_BINARY_DIR}/${OT_GDB_PY}) +- install (FILES libOT-gdb.py DESTINATION ${OPENTURNS_DATA_PATH}/gdb/auto-load/${LIBRARY_PATH} RENAME ${OT_GDB_PY}) ++ install (FILES libOT-gdb.py DESTINATION ${OPENTURNS_DATA_PATH}/gdb/auto-load RENAME ${OT_GDB_PY}) + endif () + +diff -pruN openturns_ref/lib/src/Base/Common/openturns/TBB.hxx openturns_dev/lib/src/Base/Common/openturns/TBB.hxx +--- openturns_ref/lib/src/Base/Common/openturns/TBB.hxx 2021-02-19 15:46:48.419974868 +0100 ++++ openturns_dev/lib/src/Base/Common/openturns/TBB.hxx 2021-02-19 15:46:37.804870246 +0100 +@@ -35,6 +35,7 @@ + # define __TBBMALLOC_NO_IMPLICIT_LINKAGE 1 + # endif + #endif ++#define TBB_PREVIEW_TASK_ARENA 1 + #include + #include + #include -- 2.39.2