[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11-1654
From: |
Stefano Lattarini |
Subject: |
[Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11-1654-g4eb17ac |
Date: |
Tue, 27 Dec 2011 22:29:37 +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=4eb17acdd0f880faf94ddec41a2c063ebbcf993b
The branch, master has been updated
via 4eb17acdd0f880faf94ddec41a2c063ebbcf993b (commit)
via f533e9d43dfe84f0e1706855bdd49579df5c4f5b (commit)
via 77b2c71c376f45b51a0e41774ab0e3cdf8d17932 (commit)
via 6c9aa32580c5f98ba05eeb95088b98349afa422b (commit)
via 44da9cbd7dbbdb858d11e8dcdf213c32be7e333c (commit)
via b1b43854dfcb2419bfd5c725aebc42b866374b75 (commit)
from 07cee987e8b87aa78d641cd30fcb3b1d1c8c54fb (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 4eb17acdd0f880faf94ddec41a2c063ebbcf993b
Merge: 07cee98 f533e9d
Author: Stefano Lattarini <address@hidden>
Date: Tue Dec 27 23:24:39 2011 +0100
Merge branch 'maint'
* maint:
fix: last ChangeLog entry
tests: drop unnecessary requirement in 'subpkg.test'
gitlog-to-changelog: new auxiliary script, synced from gnulib
docs: "aclocal --install -I /abs/dir" actually copies files
docs: fix node names for automake and aclocal invocations
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 74 ++++
Makefile.am | 1 +
NEWS | 6 +
doc/automake.texi | 9 +-
lib/Makefile.am | 2 +-
lib/gitlog-to-changelog | 353 ++++++++++++++++++++
.../{ar-lib4.test => aclocal-install-absdir.test} | 42 +--
tests/list-of-tests.mk | 1 +
tests/subpkg.test | 2 +-
9 files changed, 452 insertions(+), 38 deletions(-)
create mode 100755 lib/gitlog-to-changelog
copy tests/{ar-lib4.test => aclocal-install-absdir.test} (58%)
mode change 100755 => 100644
diff --git a/ChangeLog b/ChangeLog
index 697651a..252dd18 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,79 @@
2011-12-27 Stefano Lattarini <address@hidden>
+ tests: drop unnecessary requirement in 'subpkg.test'
+ * tests/subpkg.test ($required): Drop "bison", it is not required
+ anymore since commit `v1.11-502-g7e5ae80'.
+
+2011-12-27 Stefano Lattarini <address@hidden>
+
+ gitlog-to-changelog: new auxiliary script, synced from gnulib
+
+ We have plans to stop maintaining a version-controlled ChangeLog
+ file in the Automake repository, and instead begin to generate it
+ automatically from the git log messages. To do so, we will use
+ the `gitlog-to-changelog' script from gnulib.
+
+ * lib/gitlog-to-changelog: New, synced from gnulib.
+ * Makefile.am (fetch): Fetch and sync it.
+ * lib/Makefile.am (EXTRA_DIST): Distribute it.
+
+2011-12-27 Stefano Lattarini <address@hidden>
+
+ docs: "aclocal --install -I /abs/dir" actually copies files
+
+ This change is for automake bug#8407.
+
+ In the past, there had been some debate and confusion about
+ whether "aclocal --install" should copy third-party .m4 files
+ in the first directory passed to the `-I' option even when
+ such directory was given as an absolute path, or whether it
+ was better to do so only for directories specified with a
+ relative path.
+
+ The rationale for this latter behaviour was that, before the
+ existence of the `ACLOCAL_PATH' variable, the only way (a poor
+ way, I might add) for a common user to extend the search path
+ of a system-wide installation of aclocal was to export something
+ like ACLOCAL="aclocal -I /my/extra/macros" in the environment.
+ Today, the correct way to proceed is undoubtedly through the
+ use of ACLOCAL_PATH, so we can settle the question once and for
+ all, and start verifying the correct behaviour of `-I' with a
+ new test.
+
+ * tests/aclocal-install-absdir.test: New test.
+ * tests/Makefile.am (TESTS): Add it.
+ * doc/automake.texi (aclocal Options): Be more explicit about
+ this part of `--install' semantics.
+
+2011-12-26 Stefano Lattarini <address@hidden>
+
+ docs: fix node names for automake and aclocal invocations
+
+ With the older node names, an "info automake" command issued
+ from the command line would have opened the node about the
+ invocation of the automake program, rather than the Top node
+ of the automake documentation. To invoke the Top node, one
+ had to issue the command "info Automake" instead (note the
+ different capitalization). This was suboptimal, and certainly
+ confusing.
+
+ With this change, "info automake" will open the Top node of the
+ automake documentation; to access the nodes about the invocation
+ of the automake and aclocal program, one has now to issue "info
+ automake-invocation" and "info aclocal-invocation" respectively.
+
+ This change fixes automake bug#8071.
+
+ See also commits `v2.61a-22-ge9215d1' and `v2.61a-72-g8c07b48' in
+ the autoconf git repository, which tackled a similar issue.
+
+ * doc/automake.texi (@direntry): Rename nodes `aclocal' and
+ `automake' to `aclocal-invocation' and `automake-invocation'
+ respectively.
+ * NEWS: Update.
+
+2011-12-27 Stefano Lattarini <address@hidden>
+
regex: remove obsolete macro AM_WITH_REGEX
Today, practically nobody uses the GNU rx library, which, according
to its own website <http://www.gnu.org/software/rx/rx.html>, has
diff --git a/Makefile.am b/Makefile.am
index a24dc76..bf2eeb6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -873,6 +873,7 @@ fetch:
$(WGET_SV_GIT_CF)config.sub -O config.sub && \
$(WGET_SV_CVS)texinfo/texinfo/doc/texinfo.tex -O texinfo.tex && \
$(WGET_SV_GIT_GL)doc/INSTALL -O INSTALL && \
+ $(WGET_SV_GIT_GL)build-aux/gitlog-to-changelog -O gitlog-to-changelog
&& \
$(WGET_GCC)config-ml.in -O config-ml.in && \
$(WGET_GCC)symlink-tree -O symlink-tree)
## Don't exit after test because we want to give as many errors as
diff --git a/NEWS b/NEWS
index 813e6f4..839a34e 100644
--- a/NEWS
+++ b/NEWS
@@ -103,6 +103,12 @@ New in 1.11a:
- The `dist' and `dist-all' targets now can run compressors in parallel.
+ - In the Automake info documentation, the Top node and the nodes about
+ the invocation of the automake and aclocal programs have been renamed;
+ now, calling "info automake" will open the Top node, while calling
+ "info automake-invocation" and "info aclocal-invocation" will access
+ the nodes about the invocation of respectively automake and aclocal.
+
- Automake is now distributed as a gzip-compressed and an xz-compressed
tarball. Previously, bzip2 was used instead of xz.
diff --git a/doc/automake.texi b/doc/automake.texi
index 62dcfba..4afada9 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -38,9 +38,6 @@ section entitled ``GNU Free Documentation License.''
@end quotation
@end copying
address@hidden info Automake points to the Automake package's documentation
address@hidden info automake points to the automake script's documentation
address@hidden (Autoconf has a similar setup.)
@dircategory Software development
@direntry
* Automake: (automake). Making GNU standards-compliant Makefiles.
@@ -48,8 +45,8 @@ section entitled ``GNU Free Documentation License.''
@dircategory Individual utilities
@direntry
-* aclocal: (automake)Invoking aclocal. Generating aclocal.m4.
-* automake: (automake)Invoking Automake. Generating Makefile.in.
+* aclocal-invocation: (automake)Invoking aclocal. Generating aclocal.m4.
+* automake-invocation: (automake)Invoking Automake. Generating Makefile.in.
@end direntry
@titlepage
@@ -3278,6 +3275,8 @@ Add the directory @var{dir} to the list of directories
searched for
Install system-wide third-party macros into the first directory
specified with @samp{-I @var{dir}} instead of copying them in the
output file.
address@hidden The following semantics is checked by
`aclocal-install-absdir.test'.
+Note that this will happen also if @var{dir} is an absolute path.
@cindex serial number and @option{--install}
When this option is used, and only when this option is used,
diff --git a/lib/Makefile.am b/lib/Makefile.am
index b48428d..426c63d 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -44,7 +44,7 @@ dist_script_DATA = \
tap-driver.sh \
tap-driver.pl
-EXTRA_DIST = gnupload
+EXTRA_DIST = gnupload gitlog-to-changelog
install-data-hook:
@$(POST_INSTALL)
diff --git a/lib/gitlog-to-changelog b/lib/gitlog-to-changelog
new file mode 100755
index 0000000..ee1ac87
--- /dev/null
+++ b/lib/gitlog-to-changelog
@@ -0,0 +1,353 @@
+eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
+ & eval 'exec perl -wS "$0" $argv:q'
+ if 0;
+# Convert git log output to ChangeLog format.
+
+my $VERSION = '2011-12-24 18:51'; # UTC
+# The definition above must lie within the first 8 lines in order
+# for the Emacs time-stamp write hook (at end) to update it.
+# If you change this file with Emacs, please let the write hook
+# do its job. Otherwise, update this string manually.
+
+# Copyright (C) 2008-2011 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 of the License, 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/>.
+
+# Written by Jim Meyering
+
+use strict;
+use warnings;
+use Getopt::Long;
+use POSIX qw(strftime);
+
+(my $ME = $0) =~ s|.*/||;
+
+# use File::Coda; # http://meyering.net/code/Coda/
+END {
+ defined fileno STDOUT or return;
+ close STDOUT and return;
+ warn "$ME: failed to close standard output: $!\n";
+ $? ||= 1;
+}
+
+sub usage ($)
+{
+ my ($exit_code) = @_;
+ my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
+ if ($exit_code != 0)
+ {
+ print $STREAM "Try `$ME --help' for more information.\n";
+ }
+ else
+ {
+ print $STREAM <<EOF;
+Usage: $ME [OPTIONS] [ARGS]
+
+Convert git log output to ChangeLog format. If present, any ARGS
+are passed to "git log". To avoid ARGS being parsed as options to
+$ME, they may be preceded by '--'.
+
+OPTIONS:
+
+ --amend=FILE FILE maps from an SHA1 to perl code (i.e., s/old/new/) that
+ makes a change to SHA1's commit log text or metadata.
+ --append-dot append a dot to the first line of each commit message if
+ there is no other punctuation or blank at the end.
+ --since=DATE convert only the logs since DATE;
+ the default is to convert all log entries.
+ --format=FMT set format string for commit subject and body;
+ see 'man git-log' for the list of format metacharacters;
+ the default is '%s%n%b%n'
+
+ --help display this help and exit
+ --version output version information and exit
+
+EXAMPLE:
+
+ $ME --since=2008-01-01 > ChangeLog
+ $ME -- -n 5 foo > last-5-commits-to-branch-foo
+
+In a FILE specified via --amend, comment lines (starting with "#") are ignored.
+FILE must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1 (alone on
+a line) referring to a commit in the current project, and CODE refers to one
+or more consecutive lines of Perl code. Pairs must be separated by one or
+more blank line.
+
+Here is sample input for use with --amend=FILE, from coreutils:
+
+3a169f4c5d9159283548178668d2fae6fced3030
+# fix typo in title:
+s/all tile types/all file types/
+
+1379ed974f1fa39b12e2ffab18b3f7a607082202
+# Due to a bug in vc-dwim, I mis-attributed a patch by Paul to myself.
+# Change the author to be Paul. Note the escaped "@":
+s,Jim .*>,Paul Eggert <address@hidden>,
+
+EOF
+ }
+ exit $exit_code;
+}
+
+# If the string $S is a well-behaved file name, simply return it.
+# If it contains white space, quotes, etc., quote it, and return the new
string.
+sub shell_quote($)
+{
+ my ($s) = @_;
+ if ($s =~ m![^\w+/.,-]!)
+ {
+ # Convert each single quote to '\''
+ $s =~ s/\'/\'\\\'\'/g;
+ # Then single quote the string.
+ $s = "'$s'";
+ }
+ return $s;
+}
+
+sub quoted_cmd(@)
+{
+ return join (' ', map {shell_quote $_} @_);
+}
+
+# Parse file F.
+# Comment lines (starting with "#") are ignored.
+# F must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1
+# (alone on a line) referring to a commit in the current project, and
+# CODE refers to one or more consecutive lines of Perl code.
+# Pairs must be separated by one or more blank line.
+sub parse_amend_file($)
+{
+ my ($f) = @_;
+
+ open F, '<', $f
+ or die "$ME: $f: failed to open for reading: $!\n";
+
+ my $fail;
+ my $h = {};
+ my $in_code = 0;
+ my $sha;
+ while (defined (my $line = <F>))
+ {
+ $line =~ /^\#/
+ and next;
+ chomp $line;
+ $line eq ''
+ and $in_code = 0, next;
+
+ if (!$in_code)
+ {
+ $line =~ /^([0-9a-fA-F]{40})$/
+ or (warn "$ME: $f:$.: invalid line; expected an SHA1\n"),
+ $fail = 1, next;
+ $sha = lc $1;
+ $in_code = 1;
+ exists $h->{$sha}
+ and (warn "$ME: $f:$.: duplicate SHA1\n"),
+ $fail = 1, next;
+ }
+ else
+ {
+ $h->{$sha} ||= '';
+ $h->{$sha} .= "$line\n";
+ }
+ }
+ close F;
+
+ $fail
+ and exit 1;
+
+ return $h;
+}
+
+{
+ my $since_date;
+ my $format_string = '%s%n%b%n';
+ my $amend_file;
+ my $append_dot = 0;
+ GetOptions
+ (
+ help => sub { usage 0 },
+ version => sub { print "$ME version $VERSION\n"; exit },
+ 'since=s' => \$since_date,
+ 'format=s' => \$format_string,
+ 'amend=s' => \$amend_file,
+ 'append-dot' => \$append_dot,
+ ) or usage 1;
+
+
+ defined $since_date
+ and unshift @ARGV, "--since=$since_date";
+
+ # This is a hash that maps an SHA1 to perl code (i.e., s/old/new/)
+ # that makes a correction in the log or attribution of that commit.
+ my $amend_code = defined $amend_file ? parse_amend_file $amend_file : {};
+
+ my @cmd = (qw (git log --log-size),
+ '--pretty=format:%H:%ct %an <%ae>%n%n'.$format_string, @ARGV);
+ open PIPE, '-|', @cmd
+ or die ("$ME: failed to run `". quoted_cmd (@cmd) ."': $!\n"
+ . "(Is your Git too old? Version 1.5.1 or later is required.)\n");
+
+ my $prev_multi_paragraph;
+ my $prev_date_line = '';
+ my @prev_coauthors = ();
+ while (1)
+ {
+ defined (my $in = <PIPE>)
+ or last;
+ $in =~ /^log size (\d+)$/
+ or die "$ME:$.: Invalid line (expected log size):\n$in";
+ my $log_nbytes = $1;
+
+ my $log;
+ my $n_read = read PIPE, $log, $log_nbytes;
+ $n_read == $log_nbytes
+ or die "$ME:$.: unexpected EOF\n";
+
+ # Extract leading hash.
+ my ($sha, $rest) = split ':', $log, 2;
+ defined $sha
+ or die "$ME:$.: malformed log entry\n";
+ $sha =~ /^[0-9a-fA-F]{40}$/
+ or die "$ME:$.: invalid SHA1: $sha\n";
+
+ # If this commit's log requires any transformation, do it now.
+ my $code = $amend_code->{$sha};
+ if (defined $code)
+ {
+ eval 'use Safe';
+ my $s = new Safe;
+ # Put the unpreprocessed entry into "$_".
+ $_ = $rest;
+
+ # Let $code operate on it, safely.
+ my $r = $s->reval("$code")
+ or die "$ME:$.:$sha: failed to eval \"$code\":address@hidden";
+
+ # Note that we've used this entry.
+ delete $amend_code->{$sha};
+
+ # Update $rest upon success.
+ $rest = $_;
+ }
+
+ my @line = split "\n", $rest;
+ my $author_line = shift @line;
+ defined $author_line
+ or die "$ME:$.: unexpected EOF\n";
+ $author_line =~ /^(\d+) (.*>)$/
+ or die "$ME:$.: Invalid line "
+ . "(expected date/author/email):\n$author_line\n";
+ my $date_line = sprintf "%s $2\n", strftime ("%F", localtime ($1));
+
+ my @coauthors = grep /^Co-authored-by:.*$/, @line;
+ # Omit "Co-authored-by..." and "Signed-off-by..." lines.
+ @line = grep !/^Signed-off-by: .*>$/, @line;
+ @line = grep !/^Co-authored-by: /, @line;
+
+ # Remove leading and trailing blank lines.
+ if (@line)
+ {
+ while ($line[0] =~ /^\s*$/) { shift @line; }
+ while ($line[$#line] =~ /^\s*$/) { pop @line; }
+ }
+
+ # Record whether there are two or more paragraphs.
+ my $multi_paragraph = grep /^\s*$/, @line;
+
+ # Format 'Co-authored-by: A U Thor <address@hidden>' lines in
+ # standard multi-author ChangeLog format.
+ for (@coauthors)
+ {
+ s/^Co-authored-by:\s*/\t /;
+ s/\s*</ </;
+
+ /<address@hidden>/
+ or warn "$ME: warning: missing email address for "
+ . substr ($_, 5) . "\n";
+ }
+
+ # If this header would be different from the previous date/name/email/
+ # coauthors header, or if this or the previous entry consists of two
+ # or more paragraphs, then print the header.
+ if ($date_line ne $prev_date_line
+ or "@coauthors" ne "@prev_coauthors"
+ or $multi_paragraph
+ or $prev_multi_paragraph)
+ {
+ $prev_date_line eq ''
+ or print "\n";
+ print $date_line;
+ @coauthors
+ and print join ("\n", @coauthors), "\n";
+ }
+ $prev_date_line = $date_line;
+ @prev_coauthors = @coauthors;
+ $prev_multi_paragraph = $multi_paragraph;
+
+ # If there were any lines
+ if (@line == 0)
+ {
+ warn "$ME: warning: empty commit message:\n $date_line\n";
+ }
+ else
+ {
+ if ($append_dot)
+ {
+ # If the first line of the message has enough room, then
+ if (length $line[0] < 72)
+ {
+ # append a dot if there is no other punctuation or blank
+ # at the end.
+ $line[0] =~ /[[:punct:]\s]$/
+ or $line[0] .= '.';
+ }
+ }
+
+ # Prefix each non-empty line with a TAB.
+ @line = map { length $_ ? "\t$_" : '' } @line;
+
+ print "\n", join ("\n", @line), "\n";
+ }
+
+ defined ($in = <PIPE>)
+ or last;
+ $in ne "\n"
+ and die "$ME:$.: unexpected line:\n$in";
+ }
+
+ close PIPE
+ or die "$ME: error closing pipe from " . quoted_cmd (@cmd) . "\n";
+ # FIXME-someday: include $PROCESS_STATUS in the diagnostic
+
+ # Complain about any unused entry in the --amend=F specified file.
+ my $fail = 0;
+ foreach my $sha (keys %$amend_code)
+ {
+ warn "$ME:$amend_file: unused entry: $sha\n";
+ $fail = 1;
+ }
+
+ exit $fail;
+}
+
+# Local Variables:
+# mode: perl
+# indent-tabs-mode: nil
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "my $VERSION = '"
+# time-stamp-format: "%:y-%02m-%02d %02H:%02M"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "'; # UTC"
+# End:
diff --git a/tests/ar-lib4.test b/tests/aclocal-install-absdir.test
old mode 100755
new mode 100644
similarity index 58%
copy from tests/ar-lib4.test
copy to tests/aclocal-install-absdir.test
index fb0ca5f..1a642b5
--- a/tests/ar-lib4.test
+++ b/tests/aclocal-install-absdir.test
@@ -14,42 +14,22 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# Test if lib_LTLIBRARIES requests AM_PROG_AR.
+# Make sure "aclocal --install" install files also in directories
+# passed to `-I' as absolute paths. Now that we support the
+# ACLOCAL_PATH variable, it is clear that this is the right thing
+# to do. See also automake bug#8407.
-required=libtoolize
. ./defs || Exit 1
-cp configure.in X
+set -e
-cat >> configure.in << 'END'
-AC_PROG_CC
-AC_PROG_RANLIB
-AC_PROG_LIBTOOL
-AC_OUTPUT
-END
+mkdir loc sys
-cat > Makefile.am << 'END'
-lib_LTLIBRARIES = libfoo.la
-libfoo_la_SOURCES = foo.c
-END
+echo 'AM_DUMMY_MACRO' >> configure.in
+echo 'AC_DEFUN([AM_DUMMY_MACRO], [:])' >> sys/foo.m4
-libtoolize
-$ACLOCAL
-AUTOMAKE_fails
-
-grep 'requires.*AM_PROG_AR' stderr
-
-cp X configure.in
-
-cat >> configure.in << 'END'
-AC_PROG_CC
-AM_PROG_AR
-AC_PROG_RANLIB
-AC_PROG_LIBTOOL
-AC_OUTPUT
-END
-
-$ACLOCAL
-$AUTOMAKE --add-missing
+cwd=`pwd` || fatal_ "cannot get current working directory"
+env ACLOCAL_PATH="$cwd/sys" $ACLOCAL --verbose --install -I "$cwd/loc"
+diff sys/foo.m4 loc/foo.m4
:
diff --git a/tests/list-of-tests.mk b/tests/list-of-tests.mk
index 8419355..6ccca5d 100644
--- a/tests/list-of-tests.mk
+++ b/tests/list-of-tests.mk
@@ -48,6 +48,7 @@ acloca21.test \
acloca22.test \
acloca23.test \
aclocal-acdir.test \
+aclocal-install-absdir.test \
aclocal-print-acdir.test \
aclocal-path.test \
aclocal-path-install.test \
diff --git a/tests/subpkg.test b/tests/subpkg.test
index eb6d81a..658a8e5 100755
--- a/tests/subpkg.test
+++ b/tests/subpkg.test
@@ -17,7 +17,7 @@
# Check subpackage handling.
-required='cc yacc'
+required=cc
. ./defs || Exit 1
mkdir m4
hooks/post-receive
--
GNU Automake
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11-1654-g4eb17ac,
Stefano Lattarini <=