Merge pull request #2344 from blattms/search-for-python3
Explictly search for python3 (CMake >= 3.12.0) and send error if only python2 is found
This commit is contained in:
commit
8d11fc5458
@ -152,10 +152,29 @@ endmacro (install_hook)
|
|||||||
# OpmnLibMain function. Here only the library dependency is implemented, the
|
# OpmnLibMain function. Here only the library dependency is implemented, the
|
||||||
# bulk of the python configuration is further down in the file.
|
# bulk of the python configuration is further down in the file.
|
||||||
if (OPM_ENABLE_PYTHON)
|
if (OPM_ENABLE_PYTHON)
|
||||||
find_package(PythonInterp REQUIRED)
|
# We need to be compatible with older CMake versions
|
||||||
if (OPM_ENABLE_EMBEDDED_PYTHON)
|
# that do not offer FindPython3
|
||||||
|
# e.g. Ubuntu LTS 18.04 uses cmake 3.10
|
||||||
|
if(${CMAKE_VERSION} VERSION_LESS "3.12.0")
|
||||||
|
find_package(PythonInterp REQUIRED)
|
||||||
find_package(PythonLibs REQUIRED)
|
find_package(PythonLibs REQUIRED)
|
||||||
list(APPEND opm-common_LIBRARIES ${PYTHON_LIBRARY})
|
if(PYTHON_VERSION_MAJOR LESS 3)
|
||||||
|
message(SEND_ERROR "OPM requires version 3 of Python but only version ${PYTHON_VERSION_STRING} was found")
|
||||||
|
endif()
|
||||||
|
set(Python3_EXECUTABLE ${PYTHON_EXECUTABLE})
|
||||||
|
set(Python3_LIBRARIES ${PYTHON_LIBRARIES})
|
||||||
|
else()
|
||||||
|
find_package(Python3 REQUIRED COMPONENTS Interpreter Development)
|
||||||
|
# Compatibility settings for PythonInterp and PythonLibs
|
||||||
|
# used e.g. in FindCwrap
|
||||||
|
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
|
||||||
|
set(PYTHON_LIBRARIES Python3::Python)
|
||||||
|
get_target_property(_lib_path Python3::Python IMPORTED_LOCATION)
|
||||||
|
set(PYTHON_LIBRARY ${_lib_path})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (OPM_ENABLE_EMBEDDED_PYTHON)
|
||||||
|
list(APPEND opm-common_LIBRARIES ${PYTHON_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -305,17 +324,17 @@ if (OPM_ENABLE_PYTHON)
|
|||||||
# Generate versioned setup.py
|
# Generate versioned setup.py
|
||||||
configure_file (${PROJECT_SOURCE_DIR}/python/setup.py.in ${PROJECT_BINARY_DIR}/python/setup.py)
|
configure_file (${PROJECT_SOURCE_DIR}/python/setup.py.in ${PROJECT_BINARY_DIR}/python/setup.py)
|
||||||
file(COPY ${PROJECT_SOURCE_DIR}/python/README.md DESTINATION ${PROJECT_BINARY_DIR}/python)
|
file(COPY ${PROJECT_SOURCE_DIR}/python/README.md DESTINATION ${PROJECT_BINARY_DIR}/python)
|
||||||
execute_process(COMMAND ${PYTHON_EXECUTABLE} target_name.py
|
execute_process(COMMAND ${Python3_EXECUTABLE} target_name.py
|
||||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/python
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/python
|
||||||
OUTPUT_VARIABLE python_lib_target)
|
OUTPUT_VARIABLE python_lib_target)
|
||||||
|
|
||||||
add_custom_target(copy_python ALL
|
add_custom_target(copy_python ALL
|
||||||
COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/python/install.py ${PROJECT_SOURCE_DIR}/python ${PROJECT_BINARY_DIR} 0)
|
COMMAND ${Python3_EXECUTABLE} ${PROJECT_SOURCE_DIR}/python/install.py ${PROJECT_SOURCE_DIR}/python ${PROJECT_BINARY_DIR} 0)
|
||||||
|
|
||||||
add_custom_command(OUTPUT python/opm/${python_lib_target}
|
add_custom_command(OUTPUT python/opm/${python_lib_target}
|
||||||
DEPENDS ${PYTHON_CXX_DEPENDS}
|
DEPENDS ${PYTHON_CXX_DEPENDS}
|
||||||
DEPENDS copy_python
|
DEPENDS copy_python
|
||||||
COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_BINARY_DIR}/python/setup.py
|
COMMAND ${Python3_EXECUTABLE} ${PROJECT_BINARY_DIR}/python/setup.py
|
||||||
build
|
build
|
||||||
build_ext
|
build_ext
|
||||||
--build-lib=${PROJECT_BINARY_DIR}/python
|
--build-lib=${PROJECT_BINARY_DIR}/python
|
||||||
@ -339,7 +358,7 @@ if (OPM_ENABLE_PYTHON)
|
|||||||
# setup.py install manually - optionally with the generated script
|
# setup.py install manually - optionally with the generated script
|
||||||
# setup-install.sh - and completely bypass cmake in the installation phase.
|
# setup-install.sh - and completely bypass cmake in the installation phase.
|
||||||
if (OPM_INSTALL_PYTHON)
|
if (OPM_INSTALL_PYTHON)
|
||||||
install( CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_BINARY_DIR}/python/install.py ${PROJECT_BINARY_DIR}/python/opm ${DEST_PREFIX}${CMAKE_INSTALL_PREFIX}/${PYTHON_INSTALL_PREFIX} 1)")
|
install( CODE "execute_process(COMMAND ${Python3_EXECUTABLE} ${PROJECT_BINARY_DIR}/python/install.py ${PROJECT_BINARY_DIR}/python/opm ${DEST_PREFIX}${CMAKE_INSTALL_PREFIX}/${PYTHON_INSTALL_PREFIX} 1)")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Observe that if the opmcommon library has been built as a shared library the
|
# Observe that if the opmcommon library has been built as a shared library the
|
||||||
@ -347,7 +366,7 @@ if (OPM_ENABLE_PYTHON)
|
|||||||
# testing.
|
# testing.
|
||||||
add_test(NAME python_tests
|
add_test(NAME python_tests
|
||||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/python
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/python
|
||||||
COMMAND ${CMAKE_COMMAND} -E env LD_LIBRARY_PATH=${PROJECT_BINARY_DIR}/lib ${PYTHON_EXECUTABLE} setup.py build_ext --dry-run --build-lib ${PROJECT_BINARY_DIR}/python test
|
COMMAND ${CMAKE_COMMAND} -E env LD_LIBRARY_PATH=${PROJECT_BINARY_DIR}/lib ${Python3_EXECUTABLE} setup.py build_ext --dry-run --build-lib ${PROJECT_BINARY_DIR}/python test
|
||||||
)
|
)
|
||||||
|
|
||||||
set_target_properties(opmcommon PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
set_target_properties(opmcommon PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||||
|
@ -18,5 +18,10 @@ list(APPEND opm-common_DEPS
|
|||||||
"OpenMP QUIET"
|
"OpenMP QUIET"
|
||||||
"cjson"
|
"cjson"
|
||||||
)
|
)
|
||||||
|
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.12.0")
|
||||||
|
list(APPEND opm-common_DEPS
|
||||||
|
# Needed for the imported target Python3::Python
|
||||||
|
"Python3 COMPONENTS Interpreter Development"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
find_package_deps(opm-common)
|
find_package_deps(opm-common)
|
||||||
|
@ -14,7 +14,7 @@ rm -f opm/libopmcommon_python*
|
|||||||
|
|
||||||
export CC=@CMAKE_CXX_COMPILER@
|
export CC=@CMAKE_CXX_COMPILER@
|
||||||
|
|
||||||
@PYTHON_EXECUTABLE@ setup.py build build_ext \
|
@Python3_EXECUTABLE@ setup.py build build_ext \
|
||||||
--library-dirs=@_setup_lib_dirs@ \
|
--library-dirs=@_setup_lib_dirs@ \
|
||||||
@_rpath_arg@ \
|
@_rpath_arg@ \
|
||||||
--include-dirs=@_setup_include_dirs@
|
--include-dirs=@_setup_include_dirs@
|
||||||
|
@ -14,4 +14,4 @@ export PYTHONPPATH=@CMAKE_INSTALL_PREFIX@/@PYTHON_PREFIX@
|
|||||||
export LD_LIBRARY_PATH=@PROJECT_BINARY_DIR@/lib:@_setup_lib_dirs@:$LD_LIBRARY_PATH
|
export LD_LIBRARY_PATH=@PROJECT_BINARY_DIR@/lib:@_setup_lib_dirs@:$LD_LIBRARY_PATH
|
||||||
|
|
||||||
|
|
||||||
@PYTHON_EXECUTABLE@ setup.py build_ext --dry-run install --prefix=@DEST_PREFIX@@CMAKE_INSTALL_PREFIX@
|
@Python3_EXECUTABLE@ setup.py build_ext --dry-run install --prefix=@DEST_PREFIX@@CMAKE_INSTALL_PREFIX@
|
||||||
|
@ -14,7 +14,7 @@ rm -rf opm/libopmcommon_python*
|
|||||||
|
|
||||||
export CC=@CMAKE_CXX_COMPILER@
|
export CC=@CMAKE_CXX_COMPILER@
|
||||||
|
|
||||||
@PYTHON_EXECUTABLE@ setup.py sdist bdist_wheel build_ext \
|
@Python3_EXECUTABLE@ setup.py sdist bdist_wheel build_ext \
|
||||||
--library-dirs=@_setup_lib_dirs@ \
|
--library-dirs=@_setup_lib_dirs@ \
|
||||||
@_rpath_arg@ \
|
@_rpath_arg@ \
|
||||||
--include-dirs=@_setup_include_dirs@
|
--include-dirs=@_setup_include_dirs@
|
||||||
|
@ -14,4 +14,4 @@ export PYTHONPATH=@PROJECT_BINARY_DIR@/python:$PYTHONPATH
|
|||||||
export LD_LIBRARY_PATH=@PROJECT_BINARY_DIR@/lib:@_setup_lib_dirs@:$LD_LIBRARY_PATH
|
export LD_LIBRARY_PATH=@PROJECT_BINARY_DIR@/lib:@_setup_lib_dirs@:$LD_LIBRARY_PATH
|
||||||
|
|
||||||
|
|
||||||
@PYTHON_EXECUTABLE@ setup.py build_ext --dry-run --build-lib @PROJECT_BINARY_DIR@/python test
|
@Python3_EXECUTABLE@ setup.py build_ext --dry-run --build-lib @PROJECT_BINARY_DIR@/python test
|
||||||
|
Loading…
Reference in New Issue
Block a user