Skip to content
Snippets Groups Projects
Commit e95efea8 authored by Lars Bilke's avatar Lars Bilke
Browse files

[cmake] Added find Python setup for OGS_USE_PIP.

parent 63c4705e
No related branches found
No related tags found
No related merge requests found
...@@ -14,6 +14,11 @@ add_feature_info( ...@@ -14,6 +14,11 @@ add_feature_info(
Python-interface OGS_USE_PYTHON Python-interface OGS_USE_PYTHON
"Python boundary conditions and source terms (OGS_USE_PYTHON)" "Python boundary conditions and source terms (OGS_USE_PYTHON)"
) )
add_feature_info(
Python-environment
OGS_USE_PIP
"Automatic Python dependency handling with a virtual environment (OGS_USE_PIP)"
)
add_feature_info(PETSc OGS_USE_PETSC "Parallel processing (OGS_USE_PETSC)") add_feature_info(PETSc OGS_USE_PETSC "Parallel processing (OGS_USE_PETSC)")
add_feature_info( add_feature_info(
Tests OGS_BUILD_TESTING "Unit and benchmarks tests (OGS_BUILD_TESTING)" Tests OGS_BUILD_TESTING "Unit and benchmarks tests (OGS_BUILD_TESTING)"
......
# cmake-lint: disable=C0103
message(STATUS "┌─ PythonCreateVirtualEnv.cmake")
list(APPEND CMAKE_MESSAGE_INDENT "│ ")
# Prefer unix location over frameworks (Apple-only)
set(Python_FIND_FRAMEWORK LAST)
# Prefer more recent Python version
set(Python_FIND_STRATEGY VERSION)
find_package(Python ${python_version} COMPONENTS Interpreter REQUIRED)
execute_process(
COMMAND ${Python_EXECUTABLE} -m venv .venv
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(STATUS "└─ End PythonCreateVirtualEnv.cmake")
# cmake-lint: disable=C0103 # cmake-lint: disable=C0103
# Prefer unix location over frameworks (Apple-only) if(OGS_USE_PIP)
set(Python_FIND_FRAMEWORK LAST) set(Python_ROOT_DIR ${PROJECT_BINARY_DIR}/.venv)
# Prefer more recent Python version
set(Python_FIND_STRATEGY VERSION)
set(_python_componets Interpreter)
if(OGS_USE_PYTHON OR OGS_USE_PIP)
set(CMAKE_REQUIRE_FIND_PACKAGE_Python TRUE) set(CMAKE_REQUIRE_FIND_PACKAGE_Python TRUE)
if(NOT EXISTS ${PROJECT_BINARY_DIR}/.venv)
execute_process(
COMMAND
${CMAKE_COMMAND} -DPROJECT_BINARY_DIR=${PROJECT_BINARY_DIR}
-Dpython_version=${ogs.minimum_version.python} -P
${PROJECT_SOURCE_DIR}/scripts/cmake/PythonCreateVirtualEnv.cmake
WORKING_DIRECTORY ${PROJECT_BINARY_DIR} COMMAND_ECHO STDOUT
ECHO_OUTPUT_VARIABLE ECHO_ERROR_VARIABLE
)
unset(_OGS_PYTHON_PACKAGES_SHA1 CACHE)
endif()
else()
# Prefer unix location over frameworks (Apple-only)
set(Python_FIND_FRAMEWORK LAST)
# Prefer more recent Python version
set(Python_FIND_STRATEGY VERSION)
endif() endif()
set(_python_componets Interpreter)
if(OGS_USE_PYTHON) if(OGS_USE_PYTHON)
set(CMAKE_REQUIRE_FIND_PACKAGE_Python TRUE)
list(APPEND _python_componets Development) list(APPEND _python_componets Development)
endif() endif()
find_package( find_package(
...@@ -20,14 +35,6 @@ if(OGS_USE_PIP) ...@@ -20,14 +35,6 @@ if(OGS_USE_PIP)
set(OGS_PYTHON_PACKAGES "" set(OGS_PYTHON_PACKAGES ""
CACHE INTERNAL "List of Python packages to be installed via pip." CACHE INTERNAL "List of Python packages to be installed via pip."
) )
if(NOT EXISTS ${PROJECT_BINARY_DIR}/.venv)
execute_process(
COMMAND ${Python_EXECUTABLE} -m venv .venv
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
)
unset(_OGS_PYTHON_PACKAGES_SHA1 CACHE)
endif()
set(Python_ROOT_DIR ${PROJECT_BINARY_DIR}/.venv) set(Python_ROOT_DIR ${PROJECT_BINARY_DIR}/.venv)
if(MSVC) if(MSVC)
set(Python_EXECUTABLE ${Python_ROOT_DIR}/Scripts/python.exe) set(Python_EXECUTABLE ${Python_ROOT_DIR}/Scripts/python.exe)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment