Skip to content

Commit eae218e

Browse files
committed
Check for python dependencies prior to attempting install with pip
1 parent bb61367 commit eae218e

File tree

1 file changed

+29
-13
lines changed

1 file changed

+29
-13
lines changed

RenderStateNotation/CMakeLists.txt

+29-13
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,40 @@ 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 LIBCLANG_EXISTS
33+
)
3634

37-
execute_process(COMMAND ${LIBCLANG_INSTALL_CMD}
35+
if(NOT LIBCLANG_EXISTS EQUAL "0")
36+
set(LIBCLANG_INSTALL_CMD ${Python3_EXECUTABLE} -m pip install libclang==16.0.6)
37+
if(${Python3_VERSION} VERSION_GREATER_EQUAL "3.12")
38+
set(LIBCLANG_INSTALL_CMD ${LIBCLANG_INSTALL_CMD} --break-system-packages)
39+
endif()
40+
execute_process(COMMAND ${LIBCLANG_INSTALL_CMD}
3841
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}")
42+
if(NOT PYTHON_PIP_LIBCLANG_RESULT EQUAL "0")
43+
message(FATAL_ERROR "Command '${LIBCLANG_INSTALL_CMD}' failed with error code ${PYTHON_PIP_LIBCLANG_RESULT}")
44+
endif()
4145
endif()
4246

43-
execute_process(COMMAND ${JINJA2_INSTALL_CMD}
47+
# Ensure Jinja2 is installed
48+
execute_process(
49+
COMMAND ${Python3_EXECUTABLE} -c "import jinja2"
50+
RESULT_VARIABLE JINJA_EXISTS
51+
)
52+
53+
if(NOT JINJA_EXISTS EQUAL "0")
54+
set(JINJA2_INSTALL_CMD ${Python3_EXECUTABLE} -m pip install jinja2)
55+
if(${Python3_VERSION} VERSION_GREATER_EQUAL "3.12")
56+
set(JINJA2_INSTALL_CMD ${JINJA2_INSTALL_CMD} --break-system-packages)
57+
endif()
58+
execute_process(COMMAND ${JINJA2_INSTALL_CMD}
4459
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}")
60+
if(NOT PYTHON_PIP_JINJIA_RESULT EQUAL "0")
61+
message(FATAL_ERROR "Command '${JINJA2_INSTALL_CMD}' failed with error code ${PYTHON_PIP_JINJIA_RESULT}")
62+
endif()
4763
endif()
4864

4965
file(GLOB INCLUDE include/*)

0 commit comments

Comments
 (0)