From: Luca Boccassi Date: Sat, 12 Jan 2019 12:28:56 +0000 (+0000) Subject: Makefile: check manpages for syntax errors X-Git-Tag: v5.0.0~30 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0cf061183ea8df2588f098554b3087bafccb0cb4;p=thirdparty%2Fiproute2.git Makefile: check manpages for syntax errors Pass the same parameters Lintian uses in Debian. $ make check <...> Checking manpages for syntax errors... :48: warning: macro `Q' not defined Error in tc-taprio.8 Makefile:27: recipe for target 'check' failed Signed-off-by: Luca Boccassi Signed-off-by: Stephen Hemminger --- diff --git a/Makefile b/Makefile index a513cf38a..48f469b0d 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 6b095ee46..0c759dd2f 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 e3d3e6078..1732be266 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 1a8d52191..c0e545a14 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 932ba1f3c..0269e1740 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