From 07c7eba1e10263d25c58af49f29bb48e19c0fe86 Mon Sep 17 00:00:00 2001 From: Lars Bilke <lars.bilke@ufz.de> Date: Thu, 18 Mar 2021 11:52:08 +0100 Subject: [PATCH] [cmake] Collect python packages and run poetry add just once. Packages to install are written to build/.python_packages during CMake run and then installed once at the end of the CMake run via poetry add. Speeds up CMake configure time a bit. --- CMakeLists.txt | 9 +++++++++ scripts/cmake/PythonSetup.cmake | 16 ++++++---------- scripts/cmake/test/AddTest.cmake | 13 ++++--------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d059c0aa3cb..d9f417fe378 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -226,6 +226,15 @@ endif() include(UnityBuildSettings) +if(POETRY) + file(STRINGS ${PROJECT_BINARY_DIR}/.python_packages OGS_PYTHON_PACKAGES) + list(REMOVE_DUPLICATES OGS_PYTHON_PACKAGES) + execute_process( + COMMAND ${_CMD_COMMAND} poetry add ${OGS_PYTHON_PACKAGES} + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + ) +endif() + file(WRITE ${PROJECT_BINARY_DIR}/disabled-tests.log "${DISABLED_TESTS_LOG}") unset(DISABLED_TESTS_LOG CACHE) # Don't write to CMakeCache.txt diff --git a/scripts/cmake/PythonSetup.cmake b/scripts/cmake/PythonSetup.cmake index cbc7f1e2b7c..73c66c856f9 100644 --- a/scripts/cmake/PythonSetup.cmake +++ b/scripts/cmake/PythonSetup.cmake @@ -23,6 +23,12 @@ if(OGS_USE_POETRY) if(MSVC) set(Python3_EXECUTABLE ${Python3_ROOT_DIR}/Scripts/python.exe) endif() + file(WRITE ${PROJECT_BINARY_DIR}/.python_packages "") + if(OGS_BUILD_TESTING) + file(WRITE ${PROJECT_BINARY_DIR}/.python_packages + "snakemake=${ogs.minimum_version.snakemake}\n" + ) + endif() endif() endif() @@ -53,13 +59,3 @@ set(LOCAL_VIRTUALENV_BIN_DIRS ${PROJECT_BINARY_DIR}/.venv/bin ${PROJECT_BINARY_DIR}/.venv/Scripts CACHE INTERNAL "" ) - -if(POETRY) - if(OGS_BUILD_TESTING) - list(APPEND PYTHON_PACKAGES snakemake=${ogs.minimum_version.snakemake}) - endif() - execute_process( - COMMAND ${_CMD_COMMAND} poetry add ${PYTHON_PACKAGES} - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - ) -endif() diff --git a/scripts/cmake/test/AddTest.cmake b/scripts/cmake/test/AddTest.cmake index 8399b1a2328..b570decd8ca 100644 --- a/scripts/cmake/test/AddTest.cmake +++ b/scripts/cmake/test/AddTest.cmake @@ -435,16 +435,11 @@ Use six arguments version of AddTest with absolute and relative tolerances" if(AddTest_PYTHON_PACKAGES) if(POETRY) - file(WRITE ${PROJECT_BINARY_DIR}/tmp_poetry_add.bat - "poetry add ${AddTest_PYTHON_PACKAGES}" + string(REPLACE ";" "\n" PYTHON_PACKAGES + "${AddTest_PYTHON_PACKAGES}" ) - if(WIN32) - set(EXEC_CMD tmp_poetry_add.bat) - else() - set(EXEC_CMD ${BASH_TOOL_PATH} tmp_poetry_add.bat) - endif() - execute_process( - COMMAND ${EXEC_CMD} WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + file(APPEND ${PROJECT_BINARY_DIR}/.python_packages + ${PYTHON_PACKAGES} ) else() message( -- GitLab