Skip to content

Commit

Permalink
Merge pull request #4224 from mwtoews/cmake-python3
Browse files Browse the repository at this point in the history
CMake: replace Python3 with Python
  • Loading branch information
rouault authored Aug 14, 2024
2 parents 7e4da4d + 7bc9bac commit 6803c5a
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 19 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ jobs:
-D USE_CCACHE=ON \
-D PROJ_DB_CACHE_DIR=$HOME/.ccache \
-D CMAKE_UNITY_BUILD=ON \
-D Python3_ROOT_DIR=/mingw64 \
-D Python_ROOT_DIR=/mingw64 \
..
make -j 2
make install
Expand Down
2 changes: 1 addition & 1 deletion cmake/ProjTest.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ function(proj_run_cli_test TESTFILE EXE_PATH)

add_test(NAME ${testname}
WORKING_DIRECTORY ${PROJ_BINARY_DIR}/test/cli
COMMAND ${Python3_EXECUTABLE}
COMMAND ${Python_EXECUTABLE}
${PROJ_SOURCE_DIR}/test/cli/run_cli_test.py
--exe "${${EXE_PATH}}"
${PROJ_SOURCE_DIR}/test/cli/${TESTFILE}
Expand Down
36 changes: 19 additions & 17 deletions test/cli/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,32 +36,32 @@ if(UNIX)
endif()
endif()

macro(find_Python3_package PACKAGE VARIABLE)
macro(find_Python_package PACKAGE VARIABLE)
if(NOT DEFINED "${VARIABLE}")
if(NOT CMAKE_REQUIRED_QUIET)
# CMake 3.17+ use CHECK_START/CHECK_PASS/CHECK_FAIL
message(STATUS "Looking for ${PACKAGE}")
endif()
if(Python3_VERSION VERSION_GREATER_EQUAL "3.8.0")
if(Python_VERSION VERSION_GREATER_EQUAL "3.8.0")
# importlib.metadata was added in version 3.8
set(CMD "from importlib.metadata import version; print(version('${PACKAGE}'), end='')")
execute_process(
COMMAND ${Python3_EXECUTABLE} -c "${CMD}"
COMMAND ${Python_EXECUTABLE} -c "${CMD}"
RESULT_VARIABLE EXIT_CODE
OUTPUT_VARIABLE ${PACKAGE}_VERSION
ERROR_QUIET
)
else()
# importlib_metadata backport needed for older Python3 versions
# importlib_metadata backport needed for older Python versions
execute_process(
COMMAND ${Python3_EXECUTABLE} -c "import importlib_metadata"
COMMAND ${Python_EXECUTABLE} -c "import importlib_metadata"
RESULT_VARIABLE EXIT_CODE
OUTPUT_QUIET ERROR_QUIET
)
if(EXIT_CODE EQUAL 0)
set(CMD "from importlib_metadata import version; print(version('${PACKAGE}'), end='')")
execute_process(
COMMAND ${Python3_EXECUTABLE} -c "${CMD}"
COMMAND ${Python_EXECUTABLE} -c "${CMD}"
RESULT_VARIABLE EXIT_CODE
OUTPUT_VARIABLE ${PACKAGE}_VERSION
ERROR_QUIET
Expand All @@ -85,23 +85,25 @@ macro(find_Python3_package PACKAGE VARIABLE)
endmacro()

# Evaluate if Python can be used for CLI testing
find_package(Python3 COMPONENTS Interpreter)
set(Python3_for_cli_tests OFF)
if(Python3_FOUND)
if(Python3_VERSION VERSION_GREATER_EQUAL "3.7.0")
find_Python3_package("ruamel.yaml" HAS_RUAMEL_YAML)
find_package(Python COMPONENTS Interpreter)
set(Python_for_cli_tests OFF)
if(Python_FOUND)
if(Python_VERSION VERSION_GREATER_EQUAL "3.7.0")
find_Python_package("ruamel.yaml" HAS_RUAMEL_YAML)
if(HAS_RUAMEL_YAML)
set(Python3_for_cli_tests ON)
set(Python_for_cli_tests ON)
else()
find_Python3_package("pyyaml" HAS_PYYAML)
find_Python_package("pyyaml" HAS_PYYAML)
if(HAS_PYYAML)
set(Python3_for_cli_tests ON)
set(Python_for_cli_tests ON)
endif()
endif()
else()
message(WARNING "Python Interpreter version is too old")
endif()
endif()

if(Python3_for_cli_tests)
if(Python_for_cli_tests)
if(BUILD_CCT)
proj_run_cli_test(test_cct.yaml CCT_EXE)
endif()
Expand All @@ -123,10 +125,10 @@ if(Python3_for_cli_tests)
endif()

# auto-test run_cli_test.py if pytest available
find_Python3_package("pytest" HAS_PYTEST)
find_Python_package("pytest" HAS_PYTEST)
if(HAS_PYTEST)
add_test(NAME pytest_run_cli_test
COMMAND ${Python3_EXECUTABLE} -m pytest -vv
COMMAND ${Python_EXECUTABLE} -m pytest -vv
${PROJ_SOURCE_DIR}/test/cli/run_cli_test.py
)
endif()
Expand Down

0 comments on commit 6803c5a

Please sign in to comment.