The kernel and backports already uses spatch from coccinelle for
development and backporting purposes. Thus we can cleanup many current
hacks using semantic patches. These are also a lot less frail than
traditional unified diffs.

Signed-off-by: Sven Eckelmann <s...@narfation.org>
---
v3:
 - no changes
v2:
 - new patch
---
 Makefile | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index 7ef2569..99e67da 100644
--- a/Makefile
+++ b/Makefile
@@ -40,11 +40,19 @@ ifeq ($(shell cd $(KERNELPATH) && pwd),)
 $(warning $(KERNELPATH) is missing, please set KERNELPATH)
 endif
 
+ifeq ($(origin SPATCH), undefined)
+  SPATCH = spatch
+  ifeq ($(shell which $(SPATCH) 2>/dev/null),)
+    $(error $(SPATCH) (coccinelle) not found)
+  endif
+endif
+
 export KERNELPATH
 RM ?= rm -f
 MKDIR := mkdir -p
 PATCH_FLAGS = --batch --fuzz=0 --forward --strip=1 --unified 
--version-control=never -g0 --remove-empty-files --no-backup-if-mismatch 
--reject-file=-
 PATCH := patch $(PATCH_FLAGS) -i
+SPATCH_FLAGS := --in-place --relax-include-path --use-coccigrep
 CP := cp -fpR
 
 SOURCE = $(wildcard net/batman-adv/*.[ch]) net/batman-adv/Makefile
@@ -104,12 +112,17 @@ $(SOURCE_STAMP): $(SOURCE) compat-patches/* 
compat-patches/replacements.sh
        @$(RM) $(SOURCE_BUILD)
        @$(CP) $(SOURCE) $(BUILD_DIR)/net/batman-adv/
        @set -e; \
-       patches="$$(ls -1 compat-patches/|grep '.patch$$'|sort)"; \
+       patches="$$(ls -1 compat-patches/|grep -e '.patch$$' -e 
'.cocci$$'|sort)"; \
        for i in $${patches}; do \
-               echo '  COMPAT_PATCH '$${i};\
-               cd $(BUILD_DIR); \
-               $(PATCH) ../compat-patches/$${i}; \
-               cd - > /dev/null; \
+               echo '  COMPAT_PATCH '$${i}; \
+               if echo $${i}|grep '.patch$$'; then \
+                       cd $(BUILD_DIR); \
+                       $(PATCH) ../compat-patches/$${i}; \
+                       cd - > /dev/null; \
+               fi; \
+               if echo $${i}|grep '.cocci$$'; then echo $$(pwd); \
+                       $(SPATCH) $(SPATCH_FLAGS) --dir $(BUILD_DIR) --sp-file 
compat-patches/$${i} > /dev/null; \
+               fi; \
        done
        compat-patches/replacements.sh
        touch $(SOURCE_STAMP)
-- 
2.9.3

Reply via email to