automake-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Automake-commit] [SCM] GNU Automake branch, ng/master, updated. v1.11b-


From: Stefano Lattarini
Subject: [Automake-commit] [SCM] GNU Automake branch, ng/master, updated. v1.11b-80-g20c1d7d
Date: Fri, 13 Apr 2012 16:51:03 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Automake".

http://git.sv.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=20c1d7d7ff68c8351fd8bb953371012168240279

The branch, ng/master has been updated
       via  20c1d7d7ff68c8351fd8bb953371012168240279 (commit)
       via  171a31b10048968c70c963239e40b7a6d5c648de (commit)
       via  9414efaf789cddbb4434aad9218e2b396d8de87d (commit)
       via  f4b8c5856fb76889f8a44287c2bf48256f1a2a00 (commit)
       via  e9c2b9e94b0c604e6a57472bb6e7bc3fb91b22ec (commit)
       via  0bb6076152c98c9794434d81e746073bbb7305ad (commit)
       via  44cae2629df00c7f66138956f8073260f19df051 (commit)
       via  4cc65f752dbf9500bf367db1c19378641a91b5e5 (commit)
       via  da0f9ab4e4b15e9d5ff6f7474ab2c0ea8007f03d (commit)
       via  15d4a60bec70bee6c4ddd4020dc74e669f4d3174 (commit)
      from  f94310a380705f493142c8f130fc616c039e19fe (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 20c1d7d7ff68c8351fd8bb953371012168240279
Merge: f94310a 171a31b
Author: Stefano Lattarini <address@hidden>
Date:   Fri Apr 13 18:41:20 2012 +0200

    Merge branch 'master' into ng/master
    
    * master:
      build: use slightly older help2man, for improved portability
      tests: avoid spurious failure when 'install-info' program is unavailable
      install: shell parameter expansions can be used in directory names
      test defs: more environment cleanups
      test defs: unset 'AM_UPDATE_INFO_DIR' environment variable
      build: generate doc/*.1 files; include help2man
      build: avoid parallel build failures
    
    Signed-off-by: Stefano Lattarini <address@hidden>

-----------------------------------------------------------------------

Summary of changes:
 Makefile.am           |   26 +-
 THANKS                |    1 +
 configure.ac          |    3 -
 defs                  |    4 +-
 doc/help2man          |  639 +++++++++++++++++++++++++++++++++++++++++++++++++
 lib/am/data.am        |    2 +-
 lib/am/libs.am        |    2 +-
 lib/am/ltlib.am       |    2 +-
 t/install-info-dir.sh |    4 +
 9 files changed, 664 insertions(+), 19 deletions(-)
 create mode 100755 doc/help2man

diff --git a/Makefile.am b/Makefile.am
index 8765754..6b5695c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -458,31 +458,33 @@ info_TEXINFOS = doc/automake.texi 
doc/automake-history.texi
 doc_automake_TEXINFOS = doc/fdl.texi
 doc_automake_history_TEXINFOS = doc/fdl.texi
 
-dist_man1_MANS = \
-  $(srcdir)/doc/aclocal.1 \
-  $(srcdir)/doc/automake.1 \
-  $(srcdir)/doc/aclocal-$(APIVERSION).1 \
-  $(srcdir)/doc/automake-$(APIVERSION).1
+man1_MANS = \
+  doc/aclocal.1 \
+  doc/automake.1 \
+  doc/aclocal-$(APIVERSION).1 \
+  doc/automake-$(APIVERSION).1
 
-$(dist_man1_MANS): $(srcdir)/configure.ac
+$(man1_MANS): $(srcdir)/configure.ac
 
-MAINTAINERCLEANFILES += $(dist_man1_MANS)
+CLEANFILES += $(man1_MANS)
+EXTRA_DIST += doc/help2man
 
 update_mans = \
   $(AM_V_GEN): \
-    && $(MAKE) lib/Automake/Config.pm \
+    && $(MKDIR_P) doc \
     && PATH="$(abs_builddir)/t/wrap$(PATH_SEPARATOR)$$PATH" \
     && export PATH \
-    && $(HELP2MAN) --output=$@
+    && $(PERL) $(srcdir)/doc/help2man --output=$@
 
-$(srcdir)/doc/aclocal.1 $(srcdir)/doc/automake.1:
+doc/aclocal.1 doc/automake.1:
        $(AM_V_GEN): \
+         && $(MKDIR_P) doc \
          && f=`echo $@ | sed 's|.*/||; s|\.1$$||; $(transform)'` \
          && echo ".so man1/$$f-$(APIVERSION).1" > $@
 
-$(srcdir)/doc/aclocal-$(APIVERSION).1: $(srcdir)/aclocal.in
+doc/aclocal-$(APIVERSION).1: aclocal.in aclocal lib/Automake/Config.pm
        $(update_mans) aclocal-$(APIVERSION)
-$(srcdir)/doc/automake-$(APIVERSION).1: $(srcdir)/automake.in
+doc/automake-$(APIVERSION).1: automake.in automake lib/Automake/Config.pm
        $(update_mans) automake-$(APIVERSION)
 
 
diff --git a/THANKS b/THANKS
index 4deb265..e2b65b2 100644
--- a/THANKS
+++ b/THANKS
@@ -79,6 +79,7 @@ Dave Morrison         address@hidden
 David A. Swierczek     address@hidden
 David A. Wheeler       address@hidden
 David Byron            address@hidden
+David Fang             address@hidden
 Davyd Madeley          address@hidden
 David Pashley          address@hidden
 David Zaroski          address@hidden
diff --git a/configure.ac b/configure.ac
index 0c123ab..8d66a75 100644
--- a/configure.ac
+++ b/configure.ac
@@ -124,9 +124,6 @@ AM_RUN_LOG([$TEX --version </dev/null])
 AC_CHECK_PROGS([YACC], [yacc byacc 'bison -y'], [false])
 AC_CHECK_PROGS([LEX], [lex flex], [false])
 
-# Generate man pages.
-AM_MISSING_PROG([HELP2MAN], [help2man])
-
 # Test for Autoconf.  We run Autoconf in a subdirectory to ease
 # deletion of any files created (such as those added to
 # autom4te.cache).  We used to perform only the last of the three
diff --git a/defs b/defs
index de9e0a5..aefeb06 100644
--- a/defs
+++ b/defs
@@ -150,6 +150,8 @@ unset htmldir includedir infodir libdir libexecdir 
localedir mandir
 unset oldincludedir pdfdir psdir sbindir sharedstatedir sysconfdir
 # Unset variables that might change the "make distcheck" behaviour.
 unset DISTCHECK_CONFIGURE_FLAGS AM_DISTCHECK_CONFIGURE_FLAGS
+# Used by install rules for info files.
+unset AM_UPDATE_INFO_DIR
 # The tests call "make -e" but we do not want $srcdir from the environment
 # to override the definition from the Makefile.
 unset srcdir
@@ -166,7 +168,7 @@ unset TEST_LOGS
 unset TEST_SUITE_LOG
 unset RECHECK_LOGS
 unset VERBOSE
-for pfx in TEST_ TAP_ ''; do
+for pfx in TEST_ SH_ TAP_ ''; do
   unset ${pfx}LOG_COMPILER
   unset ${pfx}LOG_COMPILE # Not a typo!
   unset ${pfx}LOG_FLAGS
diff --git a/doc/help2man b/doc/help2man
new file mode 100755
index 0000000..01e690b
--- /dev/null
+++ b/doc/help2man
@@ -0,0 +1,639 @@
+#!/usr/bin/perl -w
+
+# Generate a short man page from --help and --version output.
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# Written by Brendan O'Dea <address@hidden>
+# Available from ftp://ftp.gnu.org/gnu/help2man/
+
+use 5.005;
+use strict;
+use Getopt::Long;
+use Text::Tabs qw(expand);
+use POSIX qw(strftime setlocale LC_ALL);
+use locale;
+
+my $this_program = 'help2man';
+my $this_version = '1.36';
+
+my $have_gettext;
+BEGIN {
+    eval {
+       require Locale::gettext;
+       Locale::gettext->import;
+       $have_gettext = 1;
+    };
+
+    unless ($have_gettext)
+    {
+       *gettext = sub { $_[0] };
+       *textdomain = sub {};
+    }
+}
+
+sub _ { gettext @_ }
+sub N_ { $_[0] }
+
+textdomain $this_program;
+{
+    my ($user_locale) = grep defined && length,
+       (map $ENV{$_}, qw(LANGUAGE LC_ALL LC_MESSAGES LANG)), 'C';
+
+    sub kark # die with message formatted in the invoking user's locale
+    {
+       setlocale LC_ALL, $user_locale;
+       my $fmt = gettext shift;
+       die +(sprintf $fmt, @_), "\n";
+    }
+}
+
+my $version_info = sprintf _(<<'EOT'), $this_program, $this_version;
+GNU %s %s
+
+Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free
+Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+Written by Brendan O'Dea <address@hidden>
+EOT
+
+my $help_info = sprintf _(<<'EOT'), $this_program, $this_program;
+`%s' generates a man page out of `--help' and `--version' output.
+
+Usage: %s [OPTION]... EXECUTABLE
+
+ -n, --name=STRING       description for the NAME paragraph
+ -s, --section=SECTION   section number for manual page (1, 6, 8)
+ -m, --manual=TEXT       name of manual (User Commands, ...)
+ -S, --source=TEXT       source of program (FSF, Debian, ...)
+ -L, --locale=STRING     select locale (default "C")
+ -i, --include=FILE      include material from `FILE'
+ -I, --opt-include=FILE  include material from `FILE' if it exists
+ -o, --output=FILE       send output to `FILE'
+ -p, --info-page=TEXT    name of Texinfo manual
+ -N, --no-info           suppress pointer to Texinfo manual
+     --help              print this help, then exit
+     --version           print version number, then exit
+
+EXECUTABLE should accept `--help' and `--version' options although
+alternatives may be specified using:
+
+ -h, --help-option=STRING     help option string
+ -v, --version-option=STRING  version option string
+
+Report bugs to <address@hidden>.
+EOT
+
+my $section = 1;
+my $manual = '';
+my $source = '';
+my $locale = 'C';
+my $help_option = '--help';
+my $version_option = '--version';
+my ($opt_name, @opt_include, $opt_output, $opt_info, $opt_no_info);
+
+my %opt_def = (
+    'n|name=s'          => \$opt_name,
+    's|section=s'       => \$section,
+    'm|manual=s'        => \$manual,
+    'S|source=s'        => \$source,
+    'L|locale=s'        => \$locale,
+    'i|include=s'       => sub { push @opt_include, [ pop, 1 ] },
+    'I|opt-include=s'   => sub { push @opt_include, [ pop, 0 ] },
+    'o|output=s'        => \$opt_output,
+    'p|info-page=s'     => \$opt_info,
+    'N|no-info'                 => \$opt_no_info,
+    'h|help-option=s'   => \$help_option,
+    'v|version-option=s' => \$version_option,
+);
+
+# Parse options.
+Getopt::Long::config('bundling');
+GetOptions (%opt_def,
+    help    => sub { print $help_info; exit },
+    version => sub { print $version_info; exit },
+) or die $help_info;
+
+die $help_info unless @ARGV == 1;
+
+die "$this_program: no locale support (Locale::gettext required)\n"
+    unless $locale eq 'C' or $have_gettext;
+
+# Add default territory to locale.
+$locale .= "_\U$locale" if $locale =~ /^[a-z]{2}$/;
+
+# Set localisation of date and executable's ouput.
+delete @ENV{qw(LANGUAGE LC_MESSAGES LANG)};
+setlocale LC_ALL, $ENV{LC_ALL} = $locale;
+
+my %include = ();
+my %append = ();
+my @include = (); # retain order given in include file
+
+# Process include file (if given).  Format is:
+#
+#   [section name]
+#   verbatim text
+#
+# or
+#
+#   /pattern/
+#   verbatim text
+#
+
+while (@opt_include)
+{
+    my ($inc, $required) = @{shift @opt_include};
+
+    next unless -f $inc or $required;
+    kark N_("%s: can't open `%s' (%s)"), $this_program, $inc, $!
+       unless open INC, $inc;
+
+    my $key;
+    my $hash = \%include;
+
+    while (<INC>)
+    {
+       # [section]
+       if (/^\[([^]]+)\]/)
+       {
+           $key = uc $1;
+           $key =~ s/^\s+//;
+           $key =~ s/\s+$//;
+           $hash = \%include;
+           push @include, $key unless $include{$key};
+           next;
+       }
+
+       # /pattern/
+       if (m!^/(.*)/([ims]*)!)
+       {
+           my $pat = $2 ? "(?$2)$1" : $1;
+
+           # Check pattern.
+           eval { $key = qr($pat) };
+           if ($@)
+           {
+               $@ =~ s/ at .*? line \d.*//;
+               die "$inc:$.:$@";
+           }
+
+           $hash = \%append;
+           next;
+       }
+
+       # Check for options before the first section--anything else is
+       # silently ignored, allowing the first for comments and
+       # revision info.
+       unless ($key)
+       {
+           # handle options
+           if (/^-/)
+           {
+               local @ARGV = split;
+               GetOptions %opt_def;
+           }
+
+           next;
+       }
+
+       $hash->{$key} ||= '';
+       $hash->{$key} .= $_;
+    }
+
+    close INC;
+
+    kark N_("%s: no valid information found in `%s'"), $this_program, $inc
+       unless $key;
+}
+
+# Compress trailing blank lines.
+for my $hash (\(%include, %append))
+{
+    for (keys %$hash) { $hash->{$_} =~ s/\n+$/\n/ }
+}
+
+# Grab help and version info from executable.
+my ($help_text, $version_text) = map {
+    join '', map { s/ +$//; expand $_ } `$ARGV[0] $_ 2>/dev/null`
+       or kark N_("%s: can't get `%s' info from %s"), $this_program,
+           $_, $ARGV[0]
+} $help_option, $version_option;
+
+my $date = strftime "%B %Y", localtime;
+(my $program = $ARGV[0]) =~ s!.*/!!;
+my $package = $program;
+my $version;
+
+if ($opt_output)
+{
+    unlink $opt_output or kark N_("%s: can't unlink %s (%s)"),
+       $this_program, $opt_output, $! if -e $opt_output;
+
+    open STDOUT, ">$opt_output"
+       or kark N_("%s: can't create %s (%s)"), $this_program, $opt_output, $!;
+}
+
+# The first line of the --version information is assumed to be in one
+# of the following formats:
+#
+#   <version>
+#   <program> <version>
+#   {GNU,Free} <program> <version>
+#   <program> ({GNU,Free} <package>) <version>
+#   <program> - {GNU,Free} <package> <version>
+#
+# and seperated from any copyright/author details by a blank line.
+
+($_, $version_text) = split /\n+/, $version_text, 2;
+
+if (/^(\S+) +\(((?:GNU|Free) +[^)]+)\) +(.*)/ or
+    /^(\S+) +- *((?:GNU|Free) +\S+) +(.*)/)
+{
+    $program = $1;
+    $package = $2;
+    $version = $3;
+}
+elsif (/^((?:GNU|Free) +)?(\S+) +(.*)/)
+{
+    $program = $2;
+    $package = $1 ? "$1$2" : $2;
+    $version = $3;
+}
+else
+{
+    $version = $_;
+}
+
+$program =~ s!.*/!!;
+
+# No info for `info' itself.
+$opt_no_info = 1 if $program eq 'info';
+
+for ($include{_('NAME')})
+{
+    if ($opt_name) # --name overrides --include contents.
+    {
+       $_ = "$program \\- $opt_name\n";
+    }
+    elsif ($_) # Use first name given as $program
+    {
+       $program = $1 if /^([^\s,]+)(?:,?\s*[^\s,\\-]+)*\s+\\?-/;
+    }
+    else # Set a default (useless) NAME paragraph.
+    {
+       $_ = sprintf _("%s \\- manual page for %s %s") . "\n", $program,
+           $program, $version;
+    }
+}
+
+# Man pages traditionally have the page title in caps.
+my $PROGRAM = uc $program;
+
+# Set default page head/footers
+$source ||= "$program $version";
+unless ($manual)
+{
+    for ($section)
+    {
+       if (/^(1[Mm]|8)/) { $manual = _('System Administration Utilities') }
+       elsif (/^6/)      { $manual = _('Games') }
+       else              { $manual = _('User Commands') }
+    }
+}
+
+# Extract usage clause(s) [if any] for SYNOPSIS.
+my $PAT_USAGE = _('Usage');
+my $PAT_USAGE_CONT = _('or');
+if ($help_text =~ s/^($PAT_USAGE):( +(\S+))(.*)((?:\n(?: {6}\1| 
*($PAT_USAGE_CONT): +\S).*)*)//om)
+{
+    my @syn = $3 . $4;
+
+    if ($_ = $5)
+    {
+       s/^\n//;
+       for (split /\n/) { s/^ *(($PAT_USAGE_CONT): +)?//o; push @syn, $_ }
+    }
+
+    my $synopsis = '';
+    for (@syn)
+    {
+       $synopsis .= ".br\n" if $synopsis;
+       s!^\S*/!!;
+       s/^(\S+) *//;
+       $synopsis .= ".B $1\n";
+       s/\s+$//;
+       s/(([][]|\.\.+)+)/\\fR$1\\fI/g;
+       s/^/\\fI/ unless s/^\\fR//;
+       $_ .= '\fR';
+       s/(\\fI)( *)/$2$1/g;
+       s/\\fI\\fR//g;
+       s/^\\fR//;
+       s/\\fI$//;
+       s/^\./\\&./;
+
+       $synopsis .= "$_\n";
+    }
+
+    $include{_('SYNOPSIS')} ||= $synopsis;
+}
+
+# Process text, initial section is DESCRIPTION.
+my $sect = _('DESCRIPTION');
+$_ = "$help_text\n\n$version_text";
+
+# Normalise paragraph breaks.
+s/^\n+//;
+s/\n*$/\n/;
+s/\n\n+/\n\n/g;
+
+# Join hyphenated lines.
+s/([A-Za-z])-\n *([A-Za-z])/$1$2/g;
+
+# Temporarily exchange leading dots, apostrophes and backslashes for
+# tokens.
+s/^\./\x80/mg;
+s/^'/\x81/mg;
+s/\\/\x82/g;
+
+my $PAT_BUGS           = _('Report +bugs|Email +bug +reports +to');
+my $PAT_AUTHOR         = _('Written +by');
+my $PAT_OPTIONS                = _('Options');
+my $PAT_EXAMPLES       = _('Examples');
+my $PAT_FREE_SOFTWARE  = _('This +is +free +software');
+
+# Start a new paragraph (if required) for these.
+s/([^\n])\n($PAT_BUGS|$PAT_AUTHOR)/$1\n\n$2/og;
+
+sub convert_option;
+
+while (length)
+{
+    # Convert some standard paragraph names.
+    if (s/^($PAT_OPTIONS): *\n//o)
+    {
+       $sect = _('OPTIONS');
+       next;
+    }
+    elsif (s/^($PAT_EXAMPLES): *\n//o)
+    {
+       $sect = _('EXAMPLES');
+       next;
+    }
+
+    # Copyright section
+    if (/^Copyright +[(\xa9]/)
+    {
+       $sect = _('COPYRIGHT');
+       $include{$sect} ||= '';
+       $include{$sect} .= ".PP\n" if $include{$sect};
+
+       my $copy;
+       ($copy, $_) = split /\n\n/, $_, 2;
+
+       for ($copy)
+       {
+           # Add back newline
+           s/\n*$/\n/;
+
+           # Convert iso9959-1 copyright symbol or (c) to nroff
+           # character.
+           s/^Copyright +(?:\xa9|\([Cc]\))/Copyright \\(co/mg;
+
+           # Insert line breaks before additional copyright messages
+           # and the disclaimer.
+           s/(.)\n(Copyright |$PAT_FREE_SOFTWARE)/$1\n.br\n$2/og;
+       }
+
+       $include{$sect} .= $copy;
+       $_ ||= '';
+       next;
+    }
+
+    # Catch bug report text.
+    if (/^($PAT_BUGS) /o)
+    {
+       $sect = _('REPORTING BUGS');
+    }
+
+    # Author section.
+    elsif (/^($PAT_AUTHOR)/o)
+    {
+       $sect = _('AUTHOR');
+    }
+
+    # Examples, indicated by an indented leading $, % or > are
+    # rendered in a constant width font.
+    if (/^( +)([\$\%>] )\S/)
+    {
+       my $indent = $1;
+       my $prefix = $2;
+       my $break = '.IP';
+       $include{$sect} ||= '';
+       while (s/^$indent\Q$prefix\E(\S.*)\n*//)
+       {
+           $include{$sect} .= "$break\n\\f(CW$prefix$1\\fR\n";
+           $break = '.br';
+       }
+
+       next;
+    }
+
+    my $matched = '';
+    $include{$sect} ||= '';
+
+    # Sub-sections have a trailing colon and the second line indented.
+    if (s/^(\S.*:) *\n / /)
+    {
+       $matched .= $& if %append;
+       $include{$sect} .= qq(.SS "$1"\n);
+    }
+
+    my $indent = 0;
+    my $content = '';
+
+    # Option with description.
+    if (s/^( {1,10}([+-]\S.*?))(?:(  +(?!-))|\n( {20,}))(\S.*)\n//)
+    {
+       $matched .= $& if %append;
+       $indent = length ($4 || "$1$3");
+       $content = ".TP\n\x84$2\n\x84$5\n";
+       unless ($4)
+       {
+           # Indent may be different on second line.
+           $indent = length $& if /^ {20,}/;
+       }
+    }
+
+    # Option without description.
+    elsif (s/^ {1,10}([+-]\S.*)\n//)
+    {
+       $matched .= $& if %append;
+       $content = ".HP\n\x84$1\n";
+       $indent = 80; # not continued
+    }
+
+    # Indented paragraph with tag.
+    elsif (s/^( +(\S.*?)  +)(\S.*)\n//)
+    {
+       $matched .= $& if %append;
+       $indent = length $1;
+       $content = ".TP\n\x84$2\n\x84$3\n";
+    }
+
+    # Indented paragraph.
+    elsif (s/^( +)(\S.*)\n//)
+    {
+       $matched .= $& if %append;
+       $indent = length $1;
+       $content = ".IP\n\x84$2\n";
+    }
+
+    # Left justified paragraph.
+    else
+    {
+       s/(.*)\n//;
+       $matched .= $& if %append;
+       $content = ".PP\n" if $include{$sect};
+       $content .= "$1\n";
+    }
+
+    # Append continuations.
+    while ($indent ? s/^ {$indent}(\S.*)\n// : s/^(\S.*)\n//)
+    {
+       $matched .= $& if %append;
+       $content .= "\x84$1\n"
+    }
+
+    # Move to next paragraph.
+    s/^\n+//;
+
+    for ($content)
+    {
+       # Leading dot and apostrophe protection.
+       s/\x84\./\x80/g;
+       s/\x84'/\x81/g;
+       s/\x84//g;
+
+       # Convert options.
+       s/(^| |\()(-[][\w=-]+)/$1 . convert_option $2/mge;
+
+       # Escape remaining hyphens
+       s/-/\x83/g;
+    }
+
+    # Check if matched paragraph contains /pat/.
+    if (%append)
+    {
+       for my $pat (keys %append)
+       {
+           if ($matched =~ $pat)
+           {
+               $content .= ".PP\n" unless $append{$pat} =~ /^\./;
+               $content .= $append{$pat};
+           }
+       }
+    }
+
+    $include{$sect} .= $content;
+}
+
+# Refer to the real documentation.
+unless ($opt_no_info)
+{
+    my $info_page = $opt_info || $program;
+
+    $sect = _('SEE ALSO');
+    $include{$sect} ||= '';
+    $include{$sect} .= ".PP\n" if $include{$sect};
+    $include{$sect} .= sprintf _(<<'EOT'), $program, $program, $info_page;
+The full documentation for
+.B %s
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B %s
+programs are properly installed at your site, the command
+.IP
+.B info %s
+.PP
+should give you access to the complete manual.
+EOT
+}
+
+# Output header.
+print <<EOT;
+.\\" DO NOT MODIFY THIS FILE!  It was generated by $this_program $this_version.
+.TH $PROGRAM "$section" "$date" "$source" "$manual"
+EOT
+
+# Section ordering.
+my @pre = (_('NAME'), _('SYNOPSIS'), _('DESCRIPTION'), _('OPTIONS'),
+    _('EXAMPLES'));
+
+my @post = (_('AUTHOR'), _('REPORTING BUGS'), _('COPYRIGHT'), _('SEE ALSO'));
+my $filter = join '|', @pre, @post;
+
+# Output content.
+for my $sect (@pre, (grep ! /^($filter)$/o, @include), @post)
+{
+    if ($include{$sect})
+    {
+       my $lsect = gettext $sect;
+       my $quote = $lsect =~ /\W/ ? '"' : '';
+       print ".SH $quote$lsect$quote\n";
+
+       for ($include{$sect})
+       {
+           # Replace leading dot, apostrophe, backslash and hyphen
+           # tokens.
+           s/\x80/\\&./g;
+           s/\x81/\\&'/g;
+           s/\x82/\\e/g;
+           s/\x83/\\-/g;
+
+           # Convert some latin1 chars to troff equivalents
+           s/\xa0/\\ /g; # non-breaking space
+
+           print;
+       }
+    }
+}
+
+close STDOUT or kark N_("%s: error writing to %s (%s)"), $this_program,
+    $opt_output || 'stdout', $!;
+
+exit;
+
+# Convert option dashes to \- to stop nroff from hyphenating 'em, and
+# embolden.  Option arguments get italicised.
+sub convert_option
+{
+    local $_ = '\fB' . shift;
+
+    s/-/\x83/g;
+    unless (s/\[=(.*)\]$/\\fR[=\\fI$1\\fR]/)
+    {
+       s/=(.)/\\fR=\\fI$1/;
+       s/ (.)/ \\fI$1/;
+       $_ .= '\fR';
+    }
+
+    $_;
+}
diff --git a/lib/am/data.am b/lib/am/data.am
index 98a38a8..b8b6588 100644
--- a/lib/am/data.am
+++ b/lib/am/data.am
@@ -33,7 +33,7 @@ if %?BASE%
        @list='$(%DIR%_%PRIMARY%)'; test -n "$(%NDIR%dir)" || list=; \
        if test -n "$$list"; then \
          echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)'"; \
-         $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)' || exit 1; \
+         $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)" || exit 1; \
        fi; \
        for p in $$list; do \
 ## A file can be in the source directory or the build directory.
diff --git a/lib/am/libs.am b/lib/am/libs.am
index 4006bd0..d1f63ae 100644
--- a/lib/am/libs.am
+++ b/lib/am/libs.am
@@ -47,7 +47,7 @@ else !%?BASE%
        @list='$(%DIR%_LIBRARIES)'; test -n "$(%NDIR%dir)" || list=; \
        if test -n "$$list"; then \
          echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)'"; \
-         $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)' || exit 1; \
+         $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)" || exit 1; \
        fi; \
        $(am__nobase_list) | while read dir files; do \
          xfiles=; for p in $$files; do \
diff --git a/lib/am/ltlib.am b/lib/am/ltlib.am
index 10ce7ce..1ca26b5 100644
--- a/lib/am/ltlib.am
+++ b/lib/am/ltlib.am
@@ -38,7 +38,7 @@ if %?BASE%
        done; \
        test -z "$$list2" || { \
          echo " $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)'"; \
-         $(MKDIR_P) '$(DESTDIR)$(%NDIR%dir)' || exit 1; \
+         $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)" || exit 1; \
 ## Note that we explicitly set the libtool mode.  This avoids any lossage
 ## if the program doesn't have a name that libtool expects.
 ## Use INSTALL and not INSTALL_DATA because libtool knows the right
diff --git a/t/install-info-dir.sh b/t/install-info-dir.sh
index 9e40f54..d8b32d8 100755
--- a/t/install-info-dir.sh
+++ b/t/install-info-dir.sh
@@ -155,6 +155,10 @@ for val in no NO n; do
 done
 
 $MAKE install-info
+if test $have_installinfo != yes; then
+  echo 'Does nothing at all, but has a nice name' > $instdir/info/dir
+fi
+
 chmod a-w $instdir/info/dir
 for val in no NO n; do
   env AM_UPDATE_INFO_DIR="$val" $MAKE uninstall


hooks/post-receive
-- 
GNU Automake



reply via email to

[Prev in Thread] Current Thread [Next in Thread]