summaryrefslogtreecommitdiff
path: root/man
diff options
context:
space:
mode:
Diffstat (limited to 'man')
-rwxr-xr-xman/dummy-man72
-rw-r--r--man/local.mk25
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 \