diff options
Diffstat (limited to 'man')
-rwxr-xr-x | man/dummy-man | 72 | ||||
-rw-r--r-- | man/local.mk | 25 |
2 files changed, 85 insertions, 12 deletions
diff --git a/man/dummy-man b/man/dummy-man new file mode 100755 index 000000000..306937628 --- /dev/null +++ b/man/dummy-man @@ -0,0 +1,72 @@ +#!/bin/sh +# Poor man's placeholder for help2man invocation on systems lacking perl; +# it generates a dummy man page stating that a proper one could not be +# generated, and redirecting the user back to either the info +# documentation or the '--help' output. + +set -e; set -u + +fatal_ () +{ + printf '%s: %s\n' "$0" "$*" >&2 + exit 1 +} + +basename_ () +{ + printf '%s\n' "$1" | sed 's,.*/,,' +} + +output= +source="GNU coreutils" +while test $# -gt 0; do + case $1 in + # Help2man options we recognize and handle. + --output=*) output=`expr x"$1" : x'--output=\(.*\)'`;; + --output) shift; output=$1;; + --source=*) source=`expr x"$1" : x'--source=\(.*\)'`;; + --source) shift; source=$1;; + # Recognize (as no-op) other help2man options that might be used + # in the makefile. + --include=*);; + --include) shift;; + -*) fatal_ "invalid or unrecognized help2man option '$1'";; + --) shift; break;; + *) break;; + esac + shift +done + +test $# -gt 0 || fatal_ "missing argument" +test $# -le 1 || fatal_ "too many non-option arguments" + +baseout=`basename_ "$output"` +sed 's/^/WARNING: /' >&2 <<END +Cannot create proper '$baseout' man page, since perl is missing or +inadequate on this system. Creating a stub man page instead. +END + +progname=`basename_ "$1"` +year=`LC_ALL=C date +%Y` +bs='\' + +cat >"$output" <<END +.TH "$progname" 1 "$year" "$source" "User Commands" +.SH NAME +$progname $bs- a $source program +.SH DESCRIPTION +.B OOOPS! +Due to the lack of perl on the build system, we were +unable to create a proper manual page for +.B $progname. +For concise option descriptions, run +.IP +.B env $progname --help +.PP +The full documentation for +.B $progname +is maintained as a Texinfo manual, which should be accessible +on your system via the command +.IP +.B info coreutils $bs(aq$progname invocation$bs(aq +END diff --git a/man/local.mk b/man/local.mk index ebc111da1..2c05bb6cc 100644 --- a/man/local.mk +++ b/man/local.mk @@ -16,17 +16,24 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -EXTRA_DIST += man/help2man +EXTRA_DIST += man/help2man man/dummy-man + +## Graceful degradation for systems lacking perl. +if HAVE_PERL +run_help2man = $(PERL) -- $(srcdir)/man/help2man +else +run_help2man = $(SHELL) $(srcdir)/man/dummy-man +endif man1_MANS = @man1_MANS@ -EXTRA_DIST += $(man1_MANS) $(man1_MANS:.1=.x) +EXTRA_DIST += $(man1_MANS:.1=.x) EXTRA_MANS = @EXTRA_MANS@ -EXTRA_DIST += $(EXTRA_MANS) $(EXTRA_MANS:.1=.x) +EXTRA_DIST += $(EXTRA_MANS:.1=.x) ALL_MANS = $(man1_MANS) $(EXTRA_MANS) -MAINTAINERCLEANFILES += $(ALL_MANS) +CLEANFILES += $(ALL_MANS) # This is required because we have subtle inter-directory dependencies: # in order to generate all man pages, even those for which we don't @@ -161,13 +168,7 @@ man/whoami.1: src/whoami man/yes.1: src/yes .x.1: - $(AM_V_GEN)case '$(PERL)' in \ - *"/missing "*) \ - echo 'WARNING: cannot update man page $@ since perl is missing' \ - 'or inadequate' 1>&2 \ - exit 0;; \ - esac; \ - name=`echo $@ | sed -e 's|.*/||' -e 's|\.1$$||'` || exit 1; \ + $(AM_V_GEN)name=`echo $@ | sed 's|.*/||; s|\.1$$||'` || exit 1; \ ## Ensure that help2man runs the 'src/ginstall' binary as 'install' when ## creating 'install.1'. Similarly, ensure that it uses the 'src/[' binary ## to create 'test.1'. @@ -184,7 +185,7 @@ man/yes.1: src/yes && rm -rf $$t \ && $(MKDIR_P) $$t \ && (cd $$t && $(LN_S) '$(abs_top_builddir)/src/'$$prog $$name) \ - && $(PERL) -- $(srcdir)/man/help2man \ + && $(run_help2man) \ --source='$(PACKAGE_STRING)' \ --include=$(srcdir)/man/$$name.x \ --output=$$t/$$name.1 $$t/$$name \ |