[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
x-to-1: restore ability to use original calling convention
From: |
Bruno Haible |
Subject: |
x-to-1: restore ability to use original calling convention |
Date: |
Sun, 14 Apr 2019 03:33:13 +0200 |
User-agent: |
KMail/5.1.3 (Linux/4.4.0-141-generic; KDE/5.18.0; x86_64; ; ) |
In <https://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00053.html>
Alexandre Duret-Lutz did an incompatible change to the x-to-1 script:
The expected calling convention was to pass a HELP2MAN argument of
the form '/usr/bin/perl -w -- help2man'. After his change, the script
then invokes
/usr/bin/perl /usr/bin/perl -w -- help2man --help
which of course does not work, since /usr/bin/perl is not a perl script.
Admittedly the calling convention was not properly documented; but
a look into gettext's Makefile.am would have shown the expected use.
So, the gnulib version of this script, since 2012-12-12, expects a
HELP2MAN argument of the form '-w -- help2man'. Which is incompatible
with what gettext's version of this script continues to use.
In order to unify the two forks again, here's a patch that makes it
support both kinds of HELP2MAN arguments.
2019-04-13 Bruno Haible <address@hidden>
x-to-1: Restore ability to use original calling convention.
* build-aux/x-to-1.in: Add comments. Accept the original form of
HELP2MAN argument as well as the form expected since 2012-12-12.
diff --git a/build-aux/x-to-1.in b/build-aux/x-to-1.in
index b31175f..a87dfc1 100644
--- a/build-aux/x-to-1.in
+++ b/build-aux/x-to-1.in
@@ -18,9 +18,24 @@
# This program creates a program's manual from the .x skeleton and its --help
# output.
-# The .x skeleton is a file containing manual page text that is not part of the
-# --help output. It is passed to help2man via its --include option. Its format
-# is described in the help2man documentation.
+#
+# Usage: x-to-1 [OPTIONS] PERL HELP2MAN EXECUTABLE PROGRAM.x PROGRAM.1
+# where
+#
+# PERL The file name of the perl program.
+# HELP2MAN Either the file name of the help2man perl script, or a complete
+# command such as "$PERL -w -- help2man".
+# EXECUTABLE The file name of the program to invoke with --help.
+# PROGRAM The name of the program.
+# PROGRAM.x The .x skeleton is a file containing manual page text that is
+# not part of the --help output. It is passed to help2man via
+# its --include option. Its format is described in the help2man
+# documentation.
+# PROGRAM.1 The output file, a manual page in mandoc format.
+#
+# Options:
+# --update Don't overwrite the output if nothing would change.
+
update=
while true; do
@@ -40,6 +55,12 @@ executable="$3"
aux="$4"
output="$5"
+# Accommodate both possible forms of the HELP2MAN argument.
+case "$HELP2MAN" in
+ "$PERL "*) ;;
+ *) HELP2MAN="$PERL $HELP2MAN" ;;
+esac
+
progname=`basename $aux .x`
# configure determined whether perl exists.
case "$PERL" in
@@ -48,7 +69,7 @@ case "$PERL" in
;;
*)
# Determine whether all the perl modules that help2man needs are installed.
- if $PERL $HELP2MAN --help >/dev/null 2>/dev/null; then
+ if $HELP2MAN --help >/dev/null 2>/dev/null; then
perlok=yes
else
perlok=no
@@ -57,9 +78,9 @@ case "$PERL" in
esac
if test @CROSS_COMPILING@ = no && test -f $executable && test $perlok = yes;
then
echo "Updating man page $output"
- echo "$PERL $HELP2MAN --include=$aux $executable > $output"
+ echo "$HELP2MAN --include=$aux $executable > $output"
rm -f t-$progname.1
- $PERL $HELP2MAN --include=$aux $executable > t-$progname.1 || exit 1
+ $HELP2MAN --include=$aux $executable > t-$progname.1 || exit 1
if test -n "$update"; then
# In --update mode, don't overwrite the output if nothing would change.
if cmp t-$progname.1 $output >/dev/null 2>&1; then
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- x-to-1: restore ability to use original calling convention,
Bruno Haible <=