[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Automake-commit] [SCM] GNU Automake branch, branch-1-10, updated. v1.10.2-17-g27897e3,
Ralf Wildenhues <=