diff --git a/3rd_party/CMakeLists.txt b/3rd_party/CMakeLists.txt index 93cbc49..d96dded 100644 --- a/3rd_party/CMakeLists.txt +++ b/3rd_party/CMakeLists.txt @@ -80,6 +80,33 @@ set(PYTHON_EXECUTABLE "" set(Python3_ROOT_DIR "" CACHE PATH "Optional root dir for the selected Python installation") + +# =========== This block just finds the right python version and sets a relative install path, since adios2.10.1 was misbihaving +# =========== remove this if newer versions of adios2 behave like the other libraries +# Get the exact name of where the python bindings should be installed for ADIOS2. +## Set the python executable +if(PYTHON_EXECUTABLE) + if(NOT EXISTS "${PYTHON_EXECUTABLE}") + message(FATAL_ERROR "PYTHON_EXECUTABLE does not exist: ${PYTHON_EXECUTABLE}") + endif() + set(_third_party_python_exe "${PYTHON_EXECUTABLE}") +else() + find_package(Python3 REQUIRED COMPONENTS Interpreter) + set(_third_party_python_exe "${Python3_EXECUTABLE}") +endif() +## Execute python to see obtain its version +execute_process( + COMMAND "${_third_party_python_exe}" -c + "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')" + OUTPUT_VARIABLE THIRD_PARTY_PYTHON_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE +) +## Set the variable that adios2 can use +set(THIRD_PARTY_PYTHONDIR + "${THIRD_PARTY_LIBDIR}/python${THIRD_PARTY_PYTHON_VERSION}/site-packages" + CACHE STRING "Relative install dir for Python packages under the third-party prefix") +#=============================================================== + file(MAKE_DIRECTORY "${THIRD_PARTY_INSTALL_PREFIX}") file(MAKE_DIRECTORY "${THIRD_PARTY_DOWNLOAD_DIR}") file(MAKE_DIRECTORY "${THIRD_PARTY_BUILD_DIR}") @@ -87,12 +114,20 @@ file(MAKE_DIRECTORY "${THIRD_PARTY_INSTALL_PREFIX}/${THIRD_PARTY_BINDIR}") file(MAKE_DIRECTORY "${THIRD_PARTY_INSTALL_PREFIX}/${THIRD_PARTY_INCLUDEDIR}") file(MAKE_DIRECTORY "${THIRD_PARTY_INSTALL_PREFIX}/${THIRD_PARTY_LIBDIR}") +# Create enviroment sh to export paths for installed libraries +configure_file( + "${CMAKE_SOURCE_DIR}/env.sh.in" + "${THIRD_PARTY_INSTALL_PREFIX}/env.sh" + @ONLY +) + message(STATUS "Third-party install prefix: ${THIRD_PARTY_INSTALL_PREFIX}") message(STATUS "Third-party download dir: ${THIRD_PARTY_DOWNLOAD_DIR}") message(STATUS "Third-party build dir: ${THIRD_PARTY_BUILD_DIR}") message(STATUS "Third-party bin dir: ${THIRD_PARTY_BINDIR}") message(STATUS "Third-party include dir: ${THIRD_PARTY_INCLUDEDIR}") message(STATUS "Third-party lib dir: ${THIRD_PARTY_LIBDIR}") +message(STATUS "Third-party python3 dir: ${THIRD_PARTY_PYTHONDIR}") if(PYTHON_EXECUTABLE) message(STATUS "Requested Python executable: ${PYTHON_EXECUTABLE}") @@ -124,4 +159,4 @@ endif() if(INSTALL_PARAVIEW) include(${CMAKE_SOURCE_DIR}/cmake/paraview.cmake) -endif() \ No newline at end of file +endif() diff --git a/3rd_party/cmake/adios2.cmake b/3rd_party/cmake/adios2.cmake index f57f396..f6d3cd1 100644 --- a/3rd_party/cmake/adios2.cmake +++ b/3rd_party/cmake/adios2.cmake @@ -126,9 +126,10 @@ ExternalProject_Add(adios2_ext -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DADIOS2_USE_ZeroMQ=OFF + -DCMAKE_INSTALL_PYTHONDIR=${THIRD_PARTY_INSTALL_PREFIX}/${THIRD_PARTY_PYTHONDIR} ${_fortran_arg} ${_python_args} ${_bzip2_args} DEPENDS ${_adios2_depends} -) \ No newline at end of file +) diff --git a/3rd_party/env.sh b/3rd_party/env.sh deleted file mode 100644 index f7c6f6a..0000000 --- a/3rd_party/env.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash - -_this_script="$(readlink -f "${BASH_SOURCE[0]}")" -_third_party_prefix="$(cd "$(dirname "$_this_script")" && pwd)" - -export THIRD_PARTY_PREFIX="$_third_party_prefix/install" -export PATH="$THIRD_PARTY_PREFIX/bin:$PATH" -export LD_LIBRARY_PATH="$THIRD_PARTY_PREFIX/lib:$LD_LIBRARY_PATH" -export LIBRARY_PATH="$THIRD_PARTY_PREFIX/lib:$LIBRARY_PATH" -export CPATH="$THIRD_PARTY_PREFIX/include:$CPATH" -export CMAKE_PREFIX_PATH="$THIRD_PARTY_PREFIX:$CMAKE_PREFIX_PATH" -export PKG_CONFIG_PATH="$THIRD_PARTY_PREFIX/lib/pkgconfig:$THIRD_PARTY_PREFIX/share/pkgconfig:$PKG_CONFIG_PATH" - - -echo "Exported:" -echo "THIRD_PARTY_PREFIX=$THIRD_PARTY_PREFIX" -echo "PATH=$PATH" -echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" -echo "CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH" -echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" diff --git a/3rd_party/env.sh.in b/3rd_party/env.sh.in new file mode 100644 index 0000000..1b78f77 --- /dev/null +++ b/3rd_party/env.sh.in @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +_this_script="${BASH_SOURCE[0]}" +_third_party_prefix="$(cd "$(dirname "$_this_script")" && pwd)" + +export THIRD_PARTY_PREFIX="$_third_party_prefix" +export PATH="$THIRD_PARTY_PREFIX/@THIRD_PARTY_BINDIR@:$PATH" +export LD_LIBRARY_PATH="$THIRD_PARTY_PREFIX/@THIRD_PARTY_LIBDIR@:$THIRD_PARTY_PREFIX/lib64:${LD_LIBRARY_PATH:-}" +export LIBRARY_PATH="$THIRD_PARTY_PREFIX/@THIRD_PARTY_LIBDIR@:$THIRD_PARTY_PREFIX/lib64:${LIBRARY_PATH:-}" +export CPATH="$THIRD_PARTY_PREFIX/@THIRD_PARTY_INCLUDEDIR@:${CPATH:-}" +export CMAKE_PREFIX_PATH="$THIRD_PARTY_PREFIX:${CMAKE_PREFIX_PATH:-}" +export PKG_CONFIG_PATH="$THIRD_PARTY_PREFIX/@THIRD_PARTY_LIBDIR@/pkgconfig:$THIRD_PARTY_PREFIX/lib64/pkgconfig:$THIRD_PARTY_PREFIX/share/pkgconfig:${PKG_CONFIG_PATH:-}" + +# Python packages installed under the local prefix +export PYTHONPATH="$THIRD_PARTY_PREFIX/@THIRD_PARTY_PYTHONDIR@:${PYTHONPATH:-}"