bug-gnulib@gnu.org mirror (unofficial)
 help / color / mirror / Atom feed
* x-to-1: restore ability to use original calling convention
@ 2019-04-14  1:33 Bruno Haible
  0 siblings, 0 replies; only message in thread
From: Bruno Haible @ 2019-04-14  1:33 UTC (permalink / raw)
  To: bug-gnulib; +Cc: Alexandre Duret-Lutz

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  <bruno@clisp.org>

	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



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2019-04-14  1:33 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-14  1:33 x-to-1: restore ability to use original calling convention Bruno Haible

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).