From: Pádraig Brady Date: Tue, 9 Dec 2025 17:07:13 +0000 (+0000) Subject: doc: support html post processing in all cases X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f01195cf98ce879e98b276fc34c65ccb252b3df3;p=thirdparty%2Fcoreutils.git doc: support html post processing in all cases Previously the html-local make rule only worked for `make html`. Instead add support for `make doc/coreutils.html` or `make web-manual` through the use of a makeinfo wrapper. * doc/local.mk: Move post processing from here to ... * build-aux/makeinfo-wrapper.sh: ... here. * cfg.mk: Ensure our wrapper is called with MAKEINFO. Also pass --no-node-files so redirection html files are not created for each anchor. --- diff --git a/build-aux/makeinfo-wrapper.sh b/build-aux/makeinfo-wrapper.sh new file mode 100755 index 0000000000..41b7ad45d7 --- /dev/null +++ b/build-aux/makeinfo-wrapper.sh @@ -0,0 +1,41 @@ +#!/bin/sh +# makeinfo wrapper that post-processes HTML output to replace _002d with -, +# only on lines containing "option", corresponding to our @optAnchor macro. +# Note texi uses "-" in anchors for spaces, hence why it escapes - with _002d. + +makeinfo "$@" || exit + +process_html() +{ + sed_anchor_cleanup=\ +'/id=.*_002doption/{ s/id="\([^"]*\)_002doption/id="\1/g; s/_002d/-/g; }' + + sed -e "$sed_anchor_cleanup" "$1" > "$1.t" && + mv "$1.t" "$1" +} + +case " $* " in + *" --html"*) + # Find the output file/directory + output="" + next_is_output=false + for arg in "$@"; do + if [ "$next_is_output" = true ]; then + output="$arg" + break + fi + case "$arg" in + -o) next_is_output=true ;; + --output=*) output="${arg#--output=}" ;; + esac + done + + # Process the output file/directory + if test -n "$output"; then + test -f "$output" && NAMES='*' || NAMES='*.html' + find "$output" -name "$NAMES" -type f | + # dash doesn't support read -d '' yet. + while IFS= read -r htmlfile; do process_html "$htmlfile"; done + fi + ;; +esac diff --git a/cfg.mk b/cfg.mk index df4926da59..e0d90cf831 100644 --- a/cfg.mk +++ b/cfg.mk @@ -17,6 +17,11 @@ # Used in maint.mk's web-manual rule manual_title = Core GNU utilities +# html post processing +export MAKEINFO = $(abs_top_srcdir)/build-aux/makeinfo-wrapper.sh +# Don't create node redirection files for each anchor +gendocs_options_ = --common --no-node-files + # Use the direct link. This is guaranteed to work immediately, while # it can take a while for the faster mirror links to become usable. url_dir_list = https://ftp.gnu.org/gnu/$(PACKAGE) diff --git a/doc/local.mk b/doc/local.mk index 1287fca857..a1efbe82e5 100644 --- a/doc/local.mk +++ b/doc/local.mk @@ -132,12 +132,4 @@ sc-lower-case-var: check-local: check-texinfo -# Post-process generated HTML to clean up anchor IDs -_sed_anchor_cleanup = \ - -e '/id=.*_002doption/ { s/id="\([^"]*\)_002doption/id="\1/g; s/_002d/-/g; }' -html-local: $(HTMLS) - $(AM_V_GEN)for htmlfile in $(HTMLS); do \ - sed $(_sed_anchor_cleanup) $$htmlfile > $$htmlfile-t \ - && mv $$htmlfile-t $$htmlfile; done - .PHONY: html-local