From d3d9676bf88cc14391ad17326d70ec21c3f4f867 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Sun, 27 Nov 2022 18:37:37 +0100 Subject: [PATCH] New script admin/check-man-pages * admin/check-man-pages: New file with script used to check man pages for errors. (Bug#59631) * admin/make-tarball.txt: Document when to use the above script. --- admin/check-man-pages | 56 ++++++++++++++++++++++++++++++++++++++++++ admin/make-tarball.txt | 6 +++++ 2 files changed, 62 insertions(+) create mode 100755 admin/check-man-pages diff --git a/admin/check-man-pages b/admin/check-man-pages new file mode 100755 index 00000000000..c7d781ba3d2 --- /dev/null +++ b/admin/check-man-pages @@ -0,0 +1,56 @@ +#!/bin/bash +### check-man-pages - check man pages for errors + +## Copyright (C) 2022 Free Software Foundation, Inc. + +## Author: Stefan Kangas + +## This file is part of GNU Emacs. + +## GNU Emacs is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. + +## GNU Emacs is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with GNU Emacs. If not, see . + +### Commentary: + +## Check Emacs man pages for errors using `man'. + +### Code: + +source "${0%/*}/emacs-shell-lib" + +exit_status=0 + +cd "$PD"/../doc/man +for page in *.1; do + # ctags.1 just includes the man page etags.1, which AFAICT will + # default to the one installed on the system (!), instead of the + # one in the repository. So checking it is pointless, and we will + # in any case already check etags.1 separately. + if [ "$page" == "ctags.1" ]; then + continue + fi + log=$(emacs_mktemp) + LC_ALL=C.UTF-8 MANROFFSEQ='' MANWIDTH=80 \ + man --warnings=all,mac -E UTF-8 -l -Tutf8 -Z "$page" >/dev/null 2> "$log" + log_size=$(stat --format=%s "$log") + if [ "$log_size" -ne 0 ]; then + echo "doc/man/$page:" + # Point to the correct file for *compilation* buffers. + cat "$log" \ + | sed 's/troff: man1\/\([^ ]\+\)\.1/troff: doc\/man\/\1.1/' \ + | sed "s//doc\/man\/$page/" + exit_status=1 + fi +done + +exit $exit_status diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt index d881b816125..45da3ed6be5 100644 --- a/admin/make-tarball.txt +++ b/admin/make-tarball.txt @@ -150,6 +150,12 @@ General steps (for each step, check for possible errors): 4. autoreconf -i -I m4 --force make bootstrap + ./admin/check-man-pages + + The above script checks for any mistakes in the source text of + manual pages. Fix any errors and re-run the script to verify. + Then do this: + make -C etc/refcards make -C etc/refcards clean -- 2.39.2