diff mbox series

[iproute2,3/3] Makefile: check manpages for syntax errors

Message ID 20190112122856.18440-3-bluca@debian.org
State Accepted
Delegated to: stephen hemminger
Headers show
Series [iproute2,1/3] man: ss.8: more line breaks | expand

Commit Message

Luca Boccassi Jan. 12, 2019, 12:28 p.m. UTC
Pass the same parameters Lintian uses in Debian.

$ make check
<...>
Checking manpages for syntax errors...
<standard input>:48: warning: macro `Q' not defined
Error in tc-taprio.8
Makefile:27: recipe for target 'check' failed

Signed-off-by: Luca Boccassi <bluca@debian.org>
---
As far as I can see all the shell-ery should be portable and not
bash specific. Do not error out if man is not present, to avoid
issues on minimal build workers. The rest comes from coreutils
(tee, wc) so we can assume they are available.

 Makefile          | 6 ++++++
 man/Makefile      | 9 +++++++--
 man/man3/Makefile | 6 +++++-
 man/man7/Makefile | 6 +++++-
 man/man8/Makefile | 6 +++++-
 5 files changed, 28 insertions(+), 5 deletions(-)
diff mbox series

Patch

diff --git a/Makefile b/Makefile
index a513cf38..48f469b0 100644
--- a/Makefile
+++ b/Makefile
@@ -115,6 +115,12 @@  distclean: clobber
 
 check: all
 	cd testsuite && $(MAKE) && $(MAKE) alltests
+	@if command -v man >/dev/null 2>&1; then \
+		echo "Checking manpages for syntax errors..."; \
+		$(MAKE) -C man check; \
+	else \
+		echo "man not installed, skipping checks for syntax errors."; \
+	fi
 
 cscope:
 	cscope -b -q -R -Iinclude -sip -slib -smisc -snetem -stc
diff --git a/man/Makefile b/man/Makefile
index 6b095ee4..0c759dd2 100644
--- a/man/Makefile
+++ b/man/Makefile
@@ -2,14 +2,19 @@ 
 INSTALL=install
 INSTALLDIR=install -m 0755 -d
 INSTALLMAN=install -m 0644
+# Pass the same parameters as Lintian uses on Debian.
+MAN_CHECK=LC_ALL=en_US.UTF-8 MANROFFSEQ='' MANWIDTH=80 man --warnings \
+	--encoding=UTF-8 --local-file --troff-device=utf8 --ditroff
+# Hide man output, count and print errors.
+MAN_REDIRECT=2>&1 >/dev/null | tee /dev/fd/2 | wc -l
 
 SUBDIRS = man3 man7 man8
 
-all clean install:
+all clean install check:
 	@for subdir in $(SUBDIRS); do $(MAKE) -C $$subdir $@ || exit $$?; done
 
 distclean: clean
 
-.PHONY: install clean distclean
+.PHONY: install clean distclean check
 
 .EXPORT_ALL_VARIABLES:
diff --git a/man/man3/Makefile b/man/man3/Makefile
index e3d3e607..1732be26 100644
--- a/man/man3/Makefile
+++ b/man/man3/Makefile
@@ -11,4 +11,8 @@  install:
 	$(INSTALLDIR) $(DESTDIR)$(MANDIR)/man3
 	$(INSTALLMAN) $(MAN3PAGES) $(DESTDIR)$(MANDIR)/man3
 
-.PHONY: install clean distclean
+check:
+	@for page in $(MAN3PAGES); do test 0 -eq $$($(MAN_CHECK) $$page \
+		$(MAN_REDIRECT)) || { echo "Error in $$page"; exit 1; }; done
+
+.PHONY: install clean distclean check
diff --git a/man/man7/Makefile b/man/man7/Makefile
index 1a8d5219..c0e545a1 100644
--- a/man/man7/Makefile
+++ b/man/man7/Makefile
@@ -11,4 +11,8 @@  install:
 	$(INSTALLDIR) $(DESTDIR)$(MANDIR)/man7
 	$(INSTALLMAN) $(MAN7PAGES) $(DESTDIR)$(MANDIR)/man7
 
-.PHONY: install clean distclean
+check:
+	@for page in $(MAN7PAGES); do test 0 -eq $$($(MAN_CHECK) $$page \
+		$(MAN_REDIRECT)) || { echo "Error in $$page"; exit 1; }; done
+
+.PHONY: install clean distclean check
diff --git a/man/man8/Makefile b/man/man8/Makefile
index 932ba1f3..0269e174 100644
--- a/man/man8/Makefile
+++ b/man/man8/Makefile
@@ -23,4 +23,8 @@  install:
 	$(INSTALLDIR) $(DESTDIR)$(MANDIR)/man8
 	$(INSTALLMAN) $(MAN8PAGES) $(DESTDIR)$(MANDIR)/man8
 
-.PHONY: install clean distclean
+check: all
+	@for page in $(MAN8PAGES); do test 0 -eq $$($(MAN_CHECK) $$page \
+		$(MAN_REDIRECT)) || { echo "Error in $$page"; exit 1; }; done
+
+.PHONY: install clean distclean check