Maintenance branches cherry-pick some, but not all patches, and
sometimes in different order, which means that 'make syntax-check'
is likely to fail for hard-to-predict reasons. Yet having a
common workflow makes it easier to switch between branches. This
patch sets up a filter so that 'make syntax-check' is a no-op
other than to print a warning if it detects that the user is
running in a git checkout that branches from some place earlier
than origin; 'make -k syntax-check force-syntax-check=1' can be
used to override the heuristics.
Tested on master (no change in behavior) and v1.1.2-maint (where
the syntax check was indeed suppressed). Based on a report by
Cole Robinson.
* cfg.mk (syntax-check): Add some conditional filtering.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
If approved, I'll backport this to all the v*-maint branches.
cfg.mk | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/cfg.mk b/cfg.mk
index dad8a90..47709b5 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -88,6 +88,24 @@ else
distdir: sc_vulnerable_makefile_CVE-2012-3386.z
endif
+# If it looks like we are on a maintenance branch (that is, if our
+# merge point with origin is somewhere other than origin), then
+# skip syntax checks by default. When backporting only a subset of
+# patches, it's difficult, if not impossible, to have syntax-check
+# pass by default. Borrows some ideas from public-submodule-commit.
+ifeq ($(filter syntax-check, $(MAKECMDGOALS))$(MAKELEVEL),syntax-check0)
+ ifneq ($(shell if test -d $(srcdir)/.git; then \
+ cd $(srcdir) && git rev-parse origin; fi), \
+ $(shell if test -d $(srcdir)/.git; then \
+ cd $(srcdir) && git merge-base origin HEAD; fi))
+ ifeq ($(force-syntax-check),)
+ $(info warning: it looks like you are on a maint branch; to force, use:)
+ $(info $(NULL) make -k syntax-check force-syntax-check=1)
+ local-checks-to-skip += $(syntax-check-rules)
+ endif
+ endif
+endif
+
# Files that should never cause syntax check failures.
VC_LIST_ALWAYS_EXCLUDE_REGEX = \
(^(HACKING|docs/(news\.html\.in|.*\.patch))|\.po)$$
--
1.8.3.1