automake-commit
[Top][All Lists]
Advanced

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

[Automake-commit] [SCM] GNU Automake branch, branch-1-10, updated. v1.10


From: Ralf Wildenhues
Subject: [Automake-commit] [SCM] GNU Automake branch, branch-1-10, updated. v1.10.2-17-g27897e3
Date: Sun, 21 Dec 2008 21:48:49 +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=27897e36cd43d6aadfc6ff927f6e8bdf5a074607

The branch, branch-1-10 has been updated
       via  27897e36cd43d6aadfc6ff927f6e8bdf5a074607 (commit)
      from  2a3fca6f7c4b6f5a63ad6d60576d1ac73669f8ab (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 27897e36cd43d6aadfc6ff927f6e8bdf5a074607
Author: Ralf Wildenhues <address@hidden>
Date:   Sun Dec 21 22:38:37 2008 +0100

    Revamp semantics for `missing help2man' and manpage distribution.
    
    Previously, `missing help2man' would create a missing man page
    containing an error message, and exit 1.  This does not play
    well with `make': the next run will see this particular man page
    as being up to date, and will only error out on the next
    generated man page, if any; repeat until all pages are done.
    This patch changes `missing' to exit successfully in this case,
    but `make dist' will ensure that no such man pages are packaged.
    
    * lib/missing: Exit successfully even if we create a replacement
    page due to missing help2man.
    * automake.in (make_paragraphs): Define %HAVE-MANS% to be true
    if this makefile deals with man pages.
    * lib/am/distdir.am (distdir): If %INSTALL-MAN% and %HAVE-MANS%,
    check that no man page in $(MANS) contains the replacement text
    from `missing'.
    * tests/man4.test: New test.
    * tests/Makefile.am: Update.
    * NEWS: Reorder a bit, update.
    * THANKS: Update.
    Report by Werner Lemberg and Karl Berry.
    
    Signed-off-by: Ralf Wildenhues <address@hidden>

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

Summary of changes:
 ChangeLog         |   21 ++++++++++
 NEWS              |   16 ++++++++
 THANKS            |    1 +
 automake.in       |    1 +
 lib/am/distdir.am |   26 +++++++++++++
 lib/missing       |    4 +-
 tests/Makefile.am |    1 +
 tests/Makefile.in |    1 +
 tests/man4.test   |  109 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 9 files changed, 178 insertions(+), 2 deletions(-)
 create mode 100755 tests/man4.test

diff --git a/ChangeLog b/ChangeLog
index e9c89fc..d98b0bf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,26 @@
 2008-12-21  Ralf Wildenhues  <address@hidden>
 
+       Revamp semantics for `missing help2man' and manpage distribution.
+       Previously, `missing help2man' would create a missing man page
+       containing an error message, and exit 1.  This does not play
+       well with `make': the next run will see this particular man page
+       as being up to date, and will only error out on the next
+       generated man page, if any; repeat until all pages are done.
+       This patch changes `missing' to exit successfully in this case,
+       but `make dist' will ensure that no such man pages are packaged.
+       * lib/missing: Exit successfully even if we create a replacement
+       page due to missing help2man.
+       * automake.in (make_paragraphs): Define %HAVE-MANS% to be true
+       if this makefile deals with man pages.
+       * lib/am/distdir.am (distdir): If %INSTALL-MAN% and %HAVE-MANS%,
+       check that no man page in $(MANS) contains the replacement text
+       from `missing'.
+       * tests/man4.test: New test.
+       * tests/Makefile.am: Update.
+       * NEWS: Reorder a bit, update.
+       * THANKS: Update.
+       Report by Werner Lemberg and Karl Berry.
+
        Do not use 'global' for makefile-wide settings.
        * doc/automake.texi (Linking, Libtool Flags)
        (Program and Library Variables, Flag Variables Ordering):
diff --git a/NEWS b/NEWS
index 21ebca4..e08a0ce 100644
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,22 @@ Bugs fixed in 1.10.2a:
 
   - The `missing' script works better with versioned tool names.
 
+  - Semantics for `missing help2man' have been revamped:
+
+    Previously, if `help2man' was not present, `missing help2man' would have
+    the following semantics: if some man page was out of date but present, then
+    a warning would be printed, but the exit status was 0.  If the man page was
+    not present at all, then `missing' would create a replacement man page
+    containing an error message, and exit with a status of 2.  This does not 
play
+    well with `make': the next run will see this particular man page as being 
up
+    to date, and will only error out on the next generated man page, if any;
+    repeat until all pages are done.  This was not desirable.
+
+    These are the new semantics: if some man page is not present, and help2man
+    is not either, then `missing' will warn and generate the replacement page
+    containing the error message, but exit successfully.  However, `make dist'
+    will ensure that no such bogus man pages are packaged into a tarball.
+
 * Bugs introduced by 1.10.2:
 
   - The manual wrongly contained portions of the 1.11a manual.
diff --git a/THANKS b/THANKS
index b2351ae..58880f8 100644
--- a/THANKS
+++ b/THANKS
@@ -320,6 +320,7 @@ Vincent Lefevre             address@hidden
 Volker Boerchers       address@hidden
 Werner John            address@hidden
 Werner Koch            address@hidden
+Werner Lemberg         address@hidden
 William Pursell                address@hidden
 William S Fulton       address@hidden
 Yann Droneaud          address@hidden
diff --git a/automake.in b/automake.in
index 30b18f6..f4bc042 100755
--- a/automake.in
+++ b/automake.in
@@ -6440,6 +6440,7 @@ sub make_paragraphs ($%)
 
                 'INSTALL-INFO' =>  ! option 'no-installinfo',
                 'INSTALL-MAN'  =>  ! option 'no-installman',
+                'HAVE-MANS'    => !! var ('MANS'),
                 'CK-NEWS'      => !! option 'check-news',
 
                 'SUBDIRS'      => !! var ('SUBDIRS'),
diff --git a/lib/am/distdir.am b/lib/am/distdir.am
index cbbe3c0..419e743 100644
--- a/lib/am/distdir.am
+++ b/lib/am/distdir.am
@@ -47,6 +47,32 @@ if  %?CK-NEWS%
 endif  %?CK-NEWS%
 endif %?TOPDIR_P%
 ##
+## `missing help2man' may have created some bogus man pages.  Ensure they
+## are not distributed.
+##
+if %?INSTALL-MAN%
+if %?HAVE-MANS%
+       @list='$(MANS)'; if test -n "$$list"; then \
+         list=`for p in $$list; do \
+           if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+## Note that we check existing man pages here only.  If there are man pages
+## which are not distributed, and may be generated only conditionally, then
+## we should not error out because of them.  This could be refined to take
+## into account only dist_*_MANS, but then we'd be missing out on those
+## the user distributes with EXTRA_DIST.
+           if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+         if test -n "$$list" && \
+           grep 'ab help2man is required to generate this page' $$list 
>/dev/null; then \
+           echo "error: found man pages containing the \`missing help2man' 
replacement text:" >&2; \
+           grep -l 'ab help2man is required to generate this page' $$list | 
sed 's/^/         /' >&2; \
+           echo "       to fix them, install help2man, remove and regenerate 
the man pages;" >&2; \
+           echo "       typically \`make maintainer-clean' will remove them" 
>&2; \
+           exit 1; \
+         else :; fi; \
+       else :; fi
+endif %?HAVE-MANS%
+endif %?INSTALL-MAN%
+##
 ## Only for the top dir.
 ##
 if %?TOPDIR_P%
diff --git a/lib/missing b/lib/missing
index d90004d..70871a6 100755
--- a/lib/missing
+++ b/lib/missing
@@ -1,7 +1,7 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
 
-scriptversion=2008-12-13.14
+scriptversion=2008-12-21.33
 
 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
 # 2008  Free Software Foundation, Inc.
@@ -287,7 +287,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     else
        test -z "$file" || exec >$file
        echo ".ab help2man is required to generate this page"
-       exit 1
+       exit $?
     fi
     ;;
 
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 195fd7d..175ea89 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -371,6 +371,7 @@ makevars.test \
 man.test \
 man2.test \
 man3.test \
+man4.test \
 mclean.test \
 mdate.test \
 mdate2.test \
diff --git a/tests/Makefile.in b/tests/Makefile.in
index d1bb274..d133a4d 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -504,6 +504,7 @@ makevars.test \
 man.test \
 man2.test \
 man3.test \
+man4.test \
 mclean.test \
 mdate.test \
 mdate2.test \
diff --git a/tests/man4.test b/tests/man4.test
new file mode 100755
index 0000000..558c880
--- /dev/null
+++ b/tests/man4.test
@@ -0,0 +1,109 @@
+#! /bin/sh
+# Copyright (C) 2008  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 3, 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, see <http://www.gnu.org/licenses/>.
+
+# Ensure `make dist' fails when help2man replacement man pages are created.
+#
+# The assumption here is the following: if the developer uses help2man to
+# generate man pages from --help output, then these man pages may not be
+# stored in VCS.  However, they should be distributed, so that the end user
+# that receives the tarball doesn't have to install help2man.  If they are
+# not distributed, then the developer should make help2man a prerequisite
+# to building the package from a tarball, e.g., with a configure check for
+# help2man that errors out if it is unavailable.  In both cases it is
+# sufficient to check only distributed man pages.
+#
+# Idea of this whole shenanigan is to allow somebody to check out sources from
+# a VCS and build and install them without needing help2man installed.  The
+# installed man pages will be bogus in this case.  Typically, this happens
+# when developers ask users to try out a fix from VCS; the developers 
themselves
+# will usually have help2man installed (or should install it).
+
+. ./defs || Exit 1
+
+set -e
+
+cat > Makefile.am << 'END'
+dist_man_MANS = $(srcdir)/foo.1 bar.1
+dist_bin_SCRIPTS = foo bar
+$(srcdir)/foo.1:
+       $(HELP2MAN) --output=$@ $(srcdir)/foo
+bar.1:
+       $(HELP2MAN) --output=$(srcdir)/bar.1 $(srcdir)/bar
+
+## It is a bug that we need to list $(srcdir)/bar.1 explicitly here.
+MAINTAINERCLEANFILES = $(dist_man_MANS) $(srcdir)/bar.1
+END
+
+cat >>configure.in <<'END'
+AM_MISSING_PROG([HELP2MAN], [help2man])
+AC_OUTPUT
+END
+
+cat > foo <<'END'
+#! /bin/sh
+while test $# -gt 0; do
+  case $1 in
+    -h | --help) echo "usage: $0 [OPTIONS]..."; exit 0;;
+    -v | --version) echo "$0 1.0"; exit 0;;
+  esac
+  shift
+done
+END
+
+cp foo bar
+
+cat > help2man <<'END'
+#! /bin/sh
+# fake help2man script that lets `missing' think it is not installed
+exit 127
+END
+
+chmod +x foo bar help2man
+save_PATH=$PATH
+PATH=`pwd`:$PATH
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+./configure
+$MAKE
+$MAKE dist && Exit 1
+$MAKE distcheck && Exit 1
+$MAKE distclean
+
+mkdir build
+cd build
+../configure
+$MAKE
+$MAKE dist 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'install help2man' stderr
+$MAKE distcheck 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'install help2man' stderr
+
+rm -f ../help2man
+PATH=$save_PATH
+export PATH
+
+# If help2man is installed, then ensure that the recommendation works.
+if (help2man --version) >/dev/null 2>&1; then
+  $MAKE maintainer-clean
+  ../configure
+  $MAKE
+  $MAKE distcheck
+fi
+:


hooks/post-receive
--
GNU Automake




reply via email to

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