[v2,05/11] batman-adv: Add support for coccinelle in compat-patches
Commit Message
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 <sven@narfation.org>
---
v2:
- new patch
---
Makefile | 23 ++++++++++++++++++-----
1 file changed, 18 insertions(+), 5 deletions(-)
@@ -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)