summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAngus Gratton <angus@redyak.com.au>2025-01-14 11:50:27 +1100
committerAngus Gratton <gus@projectgus.com>2025-01-29 11:41:32 +1100
commit22353e9e1ed5bf8bc5bad179896ca2877f7511e2 (patch)
treee1e7053f3bfe869b2a761616be5bfff608600a9e
parent43e3ab6131b11d7fb7409a35fe5127317ba27397 (diff)
py/mkrules: Add GIT_SUBMODULES_FAIL_IF_EMPTY flag for CMake ports.
The way CMake gathers the submodule list, it can quietly be empty if the previous step fails. This makes it an explicit error. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
-rw-r--r--ports/esp32/Makefile2
-rw-r--r--ports/rp2/Makefile2
-rw-r--r--py/mkrules.mk7
3 files changed, 9 insertions, 2 deletions
diff --git a/ports/esp32/Makefile b/ports/esp32/Makefile
index 1c2fa82ce..1ce4d9720 100644
--- a/ports/esp32/Makefile
+++ b/ports/esp32/Makefile
@@ -114,4 +114,4 @@ size-files:
submodules:
@GIT_SUBMODULES=$$(IDF_COMPONENT_MANAGER=0 idf.py $(IDFPY_FLAGS) -B $(BUILD)/submodules -D ECHO_SUBMODULES=1 build 2>&1 | \
grep '^GIT_SUBMODULES=' | cut -d= -f2); \
- $(MAKE) -f ../../py/mkrules.mk GIT_SUBMODULES="$${GIT_SUBMODULES}" submodules
+ $(MAKE) -f ../../py/mkrules.mk GIT_SUBMODULES="$${GIT_SUBMODULES}" GIT_SUBMODULES_FAIL_IF_EMPTY=1 submodules
diff --git a/ports/rp2/Makefile b/ports/rp2/Makefile
index afa21cc7a..200899d33 100644
--- a/ports/rp2/Makefile
+++ b/ports/rp2/Makefile
@@ -76,4 +76,4 @@ submodules:
$(MAKE) -f ../../py/mkrules.mk GIT_SUBMODULES="lib/pico-sdk" submodules
@GIT_SUBMODULES=$$(cmake -B $(BUILD)/submodules -DECHO_SUBMODULES=1 ${CMAKE_ARGS} -S . 2>&1 | \
grep '^GIT_SUBMODULES=' | cut -d= -f2); \
- $(MAKE) -f ../../py/mkrules.mk GIT_SUBMODULES="$${GIT_SUBMODULES}" submodules
+ $(MAKE) -f ../../py/mkrules.mk GIT_SUBMODULES="$${GIT_SUBMODULES}" GIT_SUBMODULES_FAIL_IF_EMPTY=1 submodules
diff --git a/py/mkrules.mk b/py/mkrules.mk
index 74978b0d1..373bda899 100644
--- a/py/mkrules.mk
+++ b/py/mkrules.mk
@@ -257,6 +257,13 @@ ifneq ($(GIT_SUBMODULES),)
$(Q)cd $(TOP) && git submodule sync $(GIT_SUBMODULES)
$(Q)cd $(TOP) && git submodule update --init --filter=blob:none $(GIT_SUBMODULES) || \
git submodule update --init $(GIT_SUBMODULES)
+else
+ifeq ($(GIT_SUBMODULES_FAIL_IF_EMPTY),1)
+ # If you see this error, it may mean the internal step run by the port's build
+ # system to find git submodules has failed. Double-check dependencies are set correctly.
+ $(ECHO) "Internal build error: The submodule list should not be empty."
+ exit 1
+endif
endif
.PHONY: submodules