Skip to content

Commit d5635e7

Browse files
committed
Check if python modules exist before attempting install with pip
1 parent bb61367 commit d5635e7

1 file changed

Lines changed: 31 additions & 13 deletions

File tree

RenderStateNotation/CMakeLists.txt

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,42 @@ file(COPY ../.clang-format DESTINATION "${RSN_PARSER_GENERATED_HEADERS_DIR}")
2626

2727
find_package(Python3 REQUIRED)
2828

29-
set(LIBCLANG_INSTALL_CMD ${Python3_EXECUTABLE} -m pip install libclang==16.0.6)
30-
set(JINJA2_INSTALL_CMD ${Python3_EXECUTABLE} -m pip install jinja2)
31-
32-
if(${Python3_VERSION} VERSION_GREATER_EQUAL "3.12")
33-
set(LIBCLANG_INSTALL_CMD ${LIBCLANG_INSTALL_CMD} --break-system-packages)
34-
set(JINJA2_INSTALL_CMD ${JINJA2_INSTALL_CMD} --break-system-packages)
35-
endif()
29+
# Ensure libclang is installed
30+
execute_process(
31+
COMMAND ${Python3_EXECUTABLE} -c "import clang"
32+
RESULT_VARIABLE EXIT_CODE
33+
LIBCLANG_EXISTS
34+
)
3635

37-
execute_process(COMMAND ${LIBCLANG_INSTALL_CMD}
36+
if(NOT LIBCLANG_EXISTS EQUAL "0")
37+
set(LIBCLANG_INSTALL_CMD ${Python3_EXECUTABLE} -m pip install libclang==16.0.6)
38+
if(${Python3_VERSION} VERSION_GREATER_EQUAL "3.12")
39+
set(LIBCLANG_INSTALL_CMD ${LIBCLANG_INSTALL_CMD} --break-system-packages)
40+
endif()
41+
execute_process(COMMAND ${LIBCLANG_INSTALL_CMD}
3842
RESULT_VARIABLE PYTHON_PIP_LIBCLANG_RESULT)
39-
if(NOT PYTHON_PIP_LIBCLANG_RESULT EQUAL "0")
40-
message(FATAL_ERROR "Command '${LIBCLANG_INSTALL_CMD}' failed with error code ${PYTHON_PIP_LIBCLANG_RESULT}")
43+
if(NOT PYTHON_PIP_LIBCLANG_RESULT EQUAL "0")
44+
message(FATAL_ERROR "Command '${LIBCLANG_INSTALL_CMD}' failed with error code ${PYTHON_PIP_LIBCLANG_RESULT}")
45+
endif()
4146
endif()
4247

43-
execute_process(COMMAND ${JINJA2_INSTALL_CMD}
48+
# Ensure Jinja2 is installed
49+
execute_process(
50+
COMMAND ${Python3_EXECUTABLE} -c "import jinja2"
51+
RESULT_VARIABLE EXIT_CODE
52+
JINJA_EXISTS
53+
)
54+
55+
if(NOT LIBCLANG_EXISTS EQUAL "0")
56+
set(JINJA2_INSTALL_CMD ${JINJA2_INSTALL_CMD} --break-system-packages)
57+
if(${Python3_VERSION} VERSION_GREATER_EQUAL "3.12")
58+
set(JINJA2_INSTALL_CMD ${JINJA2_INSTALL_CMD} --break-system-packages)
59+
endif()
60+
execute_process(COMMAND ${JINJA2_INSTALL_CMD}
4461
RESULT_VARIABLE PYTHON_PIP_JINJIA_RESULT)
45-
if(NOT PYTHON_PIP_JINJIA_RESULT EQUAL "0")
46-
message(FATAL_ERROR "Command '${JINJA2_INSTALL_CMD}' failed with error code ${PYTHON_PIP_JINJIA_RESULT}")
62+
if(NOT PYTHON_PIP_JINJIA_RESULT EQUAL "0")
63+
message(FATAL_ERROR "Command '${JINJA2_INSTALL_CMD}' failed with error code ${PYTHON_PIP_JINJIA_RESULT}")
64+
endif()
4765
endif()
4866

4967
file(GLOB INCLUDE include/*)

0 commit comments

Comments
 (0)