Improve quilt patch handling: All quilt managed patches are checked before the package compile is attempted
[openwrt.org/openwrt.git] / include / quilt.mk
blob:a/include/quilt.mk -> blob:b/include/quilt.mk
--- a/include/quilt.mk
+++ b/include/quilt.mk
@@ -5,24 +5,27 @@
 # See /LICENSE for more information.
 #
 
-QUILT?=$(strip $(shell test -f $(PKG_BUILD_DIR)/.quilt_patched && echo y))
+QUILT?=$(strip $(shell test -f $(PKG_BUILD_DIR)/.quilt_used && echo y))
 ifneq ($(QUILT),)
   STAMP_PREPARED:=$(strip $(STAMP_PREPARED))_q
+  STAMP_PATCHED:=$(PKG_BUILD_DIR)/.quilt_patched
   CONFIG_AUTOREBUILD=
   PATCHES:=$(shell cd ./patches; ls)
   define Build/Patch/Default
 	rm -rf $(PKG_BUILD_DIR)/patches
 	mkdir -p $(PKG_BUILD_DIR)/patches
-	for patch in $(PATCHES); do ( \
+	@for patch in $(PATCHES); do ( \
 		cp "./patches/$$$$patch" $(PKG_BUILD_DIR); \
 		cd $(PKG_BUILD_DIR); \
 		quilt import -p 1 "$$$$patch"; \
-		quilt push; \
-		quilt refresh; \
+		quilt push -f >/dev/null 2>/dev/null; \
 		rm -f "$$$$patch"; \
 	); done
-	touch $(PKG_BUILD_DIR)/.quilt_patched
+	@echo
+	touch $(PKG_BUILD_DIR)/.quilt_used
   endef
+  $(STAMP_CONFIGURED): $(STAMP_PATCHED)
+  prepare: $(STAMP_PATCHED)
 else
   define Build/Patch/Default
 	@if [ -d ./patches -a "$$$$(ls ./patches | wc -l)" -gt 0 ]; then \
@@ -30,6 +33,11 @@
 	fi
   endef
 endif
+
+$(STAMP_PATCHED): $(STAMP_PREPARED)
+	@cd $(PKG_BUILD_DIR); quilt pop -a -f >/dev/null 2>/dev/null || true
+	cd $(PKG_BUILD_DIR); quilt push -a
+	touch $@
 
 refresh: $(STAMP_PREPARED)
 	@[ -f "$(PKG_BUILD_DIR)/patches/series" ] || { \

comments