From e11ef8266338f9870377a39e6713b56bea0fb159 Mon Sep 17 00:00:00 2001 From: Ben Leslie Date: Tue, 19 Jan 2021 01:12:48 +0000 Subject: [PATCH] Ensure execute_process is error checked Check the return value from execute_process calls and fail with an appropriate message. This makes debugging of cmake failures much easier. Signed-off-by: Ben Leslie --- config.cmake | 8 ++++++++ src/plat/qemu-arm-virt/config.cmake | 17 ++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/config.cmake b/config.cmake index b2f56b4fd..bb6e25e04 100644 --- a/config.cmake +++ b/config.cmake @@ -135,14 +135,22 @@ if(DEFINED KernelDTSList AND (NOT "${KernelDTSList}" STREQUAL "")) execute_process( COMMAND ${DTC_TOOL} -q -I dts -O dtb -o ${KernelDTBPath} ${KernelDTSIntermediate} + RESULT_VARIABLE error ) + if(error) + message(FATAL_ERROR "Failed to compile DTS to DTB: ${KernelDTBPath}") + endif() # Track the size of the DTB for downstream tools execute_process( COMMAND ${STAT_TOOL} -c '%s' ${KernelDTBPath} OUTPUT_VARIABLE KernelDTBSize OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE error ) + if(error) + message(FATAL_ERROR "Failed to determine KernelDTBSize: ${KernelDTBPath}") + endif() string( REPLACE "\'" diff --git a/src/plat/qemu-arm-virt/config.cmake b/src/plat/qemu-arm-virt/config.cmake index d9998395a..c7e7d53b1 100644 --- a/src/plat/qemu-arm-virt/config.cmake +++ b/src/plat/qemu-arm-virt/config.cmake @@ -34,7 +34,14 @@ if(KernelPlatformQEMUArmVirt) set(KernelArmCortexA53 ON) set(KernelArchArmV8a ON) endif() - execute_process(COMMAND qemu-system-${QEMU_ARCH} -version OUTPUT_VARIABLE QEMU_VERSION_STR) + execute_process( + COMMAND qemu-system-${QEMU_ARCH} -version + OUTPUT_VARIABLE QEMU_VERSION_STR + RESULT_VARIABLE error + ) + if(error) + message(FATAL_ERROR "Failed to determine qemu version (qemu-system-${QEMU_ARCH})") + endif() string( REGEX MATCH @@ -69,14 +76,22 @@ if(KernelPlatformQEMUArmVirt) ${QEMU_BINARY} -machine virt,dumpdtb=${DTBPath},${QEMU_VIRT_OPTION} -m ${QEMU_MEMORY} -cpu ${ARM_CPU} -smp ${QEMU_SMP_OPTION} -nographic ERROR_VARIABLE QEMU_OUTPUT_MESSAGE + RESULT_VARIABLE error ) string(STRIP ${QEMU_OUTPUT_MESSAGE} QEMU_OUTPUT_MESSAGE) message(STATUS ${QEMU_OUTPUT_MESSAGE}) + if(error) + message(FATAL_ERROR "Failed to dump DTB using ${QEMU_BINARY})") + endif() execute_process( COMMAND dtc -q -I dtb -O dts ${DTBPath} OUTPUT_FILE ${DTSPath} + RESULT_VARIABLE error ) + if(error) + message(FATAL_ERROR "Failed to convert DTB to DTS (${DTBPath})") + endif() list(APPEND KernelDTSList "${DTSPath}") list(APPEND KernelDTSList "src/plat/qemu-arm-virt/overlay-qemu-arm-virt.dts") if(KernelArmHypervisorSupport)