platform/upstream/automake.git
12 years agomaint: reduce use of recursion in automake build system
Stefano Lattarini [Wed, 28 Mar 2012 15:03:25 +0000 (17:03 +0200)]
maint: reduce use of recursion in automake build system

Recursive make-based build systems tend to be slower, more fragile
and less faithful than "flat" ones.  See Peter Miller's article
"Recursive Make Considered Harmful" for more a more in-depth
discussion:

  <http://miller.emu.id.au/pmiller/books/rmch/>

While in the case of automake this isn't a big problem (given the
small size of its build systems), it still creates occasional
glitches and annoyances.  So, with this change, we start making
less use of make recursion in the Automake's own build system
(future changes will reduce it even more).

* lib/am/Makefile.am, lib/Automake/Makefile.am:  Removed, their
content merged ...
* lib/Makefile.am: ... here, with required adjustments.
* configure.ac (AC_CONFIG_FILES): Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agodepcomp: support tcc (Tiny C Compiler)
Stefano Lattarini [Tue, 27 Mar 2012 15:55:07 +0000 (17:55 +0200)]
depcomp: support tcc (Tiny C Compiler)

This change fixes automake bug#11007.

Since git commit 0c928da9 of 21-06-2010, "tcc: Draft suppoprt for
-MD/-MF options" (sic, with typo in summary line), tcc has supported
automatic dependency generation with a command-line interface
similar to what old (pre-8.0) Intel compilers did.  This caused
Automake-generated code for automatic dependency tracking to
recognize tcc dependency style as "icc".  However, the format of
the dependency files generated by tcc is apparently different enough
from that of icc to cause spurious failures in the post-processing
operated by our 'depcomp' script on such files.

The failure was exposed with the development version of tcc 0.9.26
(as installed with debian package "tcc 0.9.26~git20120104.83d") by
test case 'depcomp-auto.tap' (available only in the master branch).

* lib/depcomp (icc): Cater to tcc as well.  Update comments
accordingly.
* NEWS: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agotests: workaround for automatic linker determination and conditionals
Stefano Lattarini [Mon, 26 Mar 2012 13:26:46 +0000 (15:26 +0200)]
tests: workaround for automatic linker determination and conditionals

See automake bug#11089.

Automake is not very smart in automatically determining the command
to be used to link a program whose source files' languages are
conditionally defined.  For example, an input like:

  if HAVE_CXX
  foo_SOURCES = more.c++
  else
  foo_SOURCES = less.c
  endif

will cause the build rules for 'foo' to *unconditionally* use the
C++ compiler for linking, even when the 'HAVE_CXX' conditional
evaluates to false (which might mean that no C++ compiler is
available).

This behaviour is not really correct, but it's easy enough to work
around, and it's only relevant for fringe use cases (at best).  So
let's just test that the workaround really works.

* tests/link_cond.test: New test.
* tests/list-of-tests.mk: Add it.
* THANKS: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agoinfo: allow user to inhibit pruning of '${infodir}/dir'
Stefano Lattarini [Tue, 27 Mar 2012 11:10:16 +0000 (13:10 +0200)]
info: allow user to inhibit pruning of '${infodir}/dir'

This should have ideally been part of commit 'v1.11-519-g1ec1668'
of 23-11-2011 "info: allow user to inhibit creation/update of
'${infodir}/dir'".  Well, better late than never.

* lib/am/texinfos.am (uninstall-info-am): Don't look anymore at the
output of "install-info --version" to decide whether to use it to
update the '${infodir}/dir' or not; instead, honour the environment
variable 'AM_UPDATE_INFO_DIR'.  To avoid code duplication with ...
(install-info-am): ... the recipe of this target, move common code
out to ...
(am__can_run_installinfo): ... this new internal variable.
* tests/install-info-dir.test: Enhance.
* doc/automake.texi (Texinfo): Update.
* NEWS: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agovala tests: fix spurious failures with older valac (<= 0.7.2)
Bruno Haible [Mon, 26 Mar 2012 12:44:05 +0000 (14:44 +0200)]
vala tests: fix spurious failures with older valac (<= 0.7.2)

See automake bug#11093.

The Vala compiler before the 0.7.3 release does not support the
'--profile' option.  But some of our tests were relying on it, so
skip those tests if the detected Vala compiler is too old.

* tests/vala-vpath.test, tests/vala-mix.test, tests/vala-mix2.test
(configure.in): Require vala version >= 0.7.3 in AM_PROG_VALAC call.

Co-authored-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agotests: fix a timestamp issue, and other minor buglets
Stefano Lattarini [Mon, 20 Feb 2012 13:04:46 +0000 (14:04 +0100)]
tests: fix a timestamp issue, and other minor buglets

Cherry picked from commit v1.11-1988-g82616f0 of 21-02-2012.

Reported by Panther Martin in automake bug#10848.  See also
automake bug#11093.

* tests/conffile-leading-dot.test: Add a proper '$sleep' invocation,
to avoid spurious failures on fast systems without sub-second
timestamp resolutions.  Add other minor related and unrelated
improvements and fixlets since we are at it.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agotests: fix spurious failure with older autoconf
Stefano Lattarini [Thu, 16 Feb 2012 09:58:03 +0000 (10:58 +0100)]
tests: fix spurious failure with older autoconf

Cherry picked from commit v1.11-1950-gba5a89b of 16-02-2012.

* tests/conffile-leading-dot.test: Relax grepping of 'config.status'
stderr, to cater for older autoconf.  Issue revealed by a failure
with autoconf 2.63 on Cygwin 1.5.25. See also automake bug#11093.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agobuild: remove duplicated entries in $(TESTS)
Stefano Lattarini [Sat, 24 Mar 2012 15:30:10 +0000 (16:30 +0100)]
build: remove duplicated entries in $(TESTS)

* tests/list-of-tests.mk (handwritten_TESTS): Remove duplicated
entries for test cases 'extra-portability*.test'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agomaint: move definition of XFAIL_TESTS near TESTS
Stefano Lattarini [Wed, 21 Mar 2012 19:30:52 +0000 (20:30 +0100)]
maint: move definition of XFAIL_TESTS near TESTS

The $(TESTS) variable is defined in file 'tests/list-of-tests.mk',
while the $(XFAIL_TESTS) variable is defined in 'tests/Makefile.am'.
This means that when a new xfailing test is to be added, two files
must be touched; this is suboptimal and slightly confusing.

* tests/Makefile.am (XFAIL_TESTS): Definition moved ...
* tests/list-of-tests.mk: ... here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agoinstall-mans: avoid spurious failure with NetBSD make
Stefano Lattarini [Sun, 18 Mar 2012 21:19:45 +0000 (22:19 +0100)]
install-mans: avoid spurious failure with NetBSD make

* lib/am/mans.am: After the changes introduced by previous commit
v1.11-759-g368f1c4, some manpage installation recipes started to
fail spuriously on NetBSD 5.1 make.  Apparently, the system make
there eats backslashes used to escape whitespace characters in the
relevant recipes.  Revert to slightly slower but safer idioms that
avoid the need of such escaping.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agoinstall: don't create empty dirs when an empty 'foo_PRIMARY' is used
Stefano Lattarini [Fri, 16 Mar 2012 22:48:53 +0000 (23:48 +0100)]
install: don't create empty dirs when an empty 'foo_PRIMARY' is used

Fixes automake bug#11030 and bug#10997.

An empty declaration of "foo_PRIMARY" in a Makefile.am used to
cause the generated install rules to create the directory $(foodir)
anyway, even if nothing was to be installed there.

While this could be seen as a convenient way to create a $(foodir)
directory upon "make install" (respecting $(DESTDIR) settings and
such), it also caused problems with conditionals; for example, an
input of:

  if FALSE
  pgkdata_DATA = something
  endif

caused the generated install rules to unconditionally create the
$(pkgdatadir) directory (see automake bug#10997).

Also, a user wanting to create an empty directory upon installation
can easily do so with a custom install hook, as in:

  installdirs-local:
          $(MKDIR_P) $(DESTDIR)$(foodir)
  install-data-hook: installdirs-local

On the other hand, the old behavior of "always create $(foodir),
even if 'foo_PRIMARY' is empty" was harder and more tricky to
override.

Thus, from now on, an empty declaration of "foo_PRIMARY" will not
cause the directory $(foodir) to be created upon "make install"
anymore.

* lib/am/data.am, lib/am/java.am, lib/am/libs.am, lib/am/lisp.am,
lib/am/ltlib.am, lib/am/mans.am, lib/am/progs.am, lib/am/python.am,
lib/am/scripts.am, lib/am/texinfos.am: Adjust install rules to avoid
creating an installation directory if no files are actually to be
installed there.
* tests/instdir-empty.test: Remove, it was testing a semantic
opposite to the one we now want and implement.
* tests/instdir-no-empty.test: New test, check the new semantic.
* tests/instdir-cond.test: Enhance.  Move the still-failing part
of the test ...
* tests/instdir-cond2.test: ... here.
* tests/list-of-tests.mk, tests/Makefile.am (XFAIL_TESTS): Update.
* tests/java3.test: Adjust to avoid spurious failures.
* HACKING, NEWS, THANKS: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agoaclocal: remove a couple of useless imports
Stefano Lattarini [Sat, 17 Mar 2012 08:43:35 +0000 (09:43 +0100)]
aclocal: remove a couple of useless imports

* aclocal.in (File::stat, Cwd): Remove these imports, they are not
really required.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agoaclocal: create local directory where to install m4 files
Stefano Lattarini [Thu, 15 Mar 2012 15:50:40 +0000 (16:50 +0100)]
aclocal: create local directory where to install m4 files

Fixes automake bug#8168 and bug#10816.

A call like "aclocal -I m4 --install" used to fail if the 'm4'
directory wasn't pre-existing.  This could be particularly
annoying when running in a checked-out version from a VCS like
git, which doesn't allow empty directories to be tracked.

* aclocal.in (File::Path): New import.
(scan_m4_dirs): Don't die if the first directory of type FT_USER
doesn't exist and the '--install' option was given; that directory
will be created later ...
(install_file): ... here.  Change signature of this function: now
it takes as second argument the destination directory rather than
the destination file.  Crate the destination directory if it
doesn't already exist.  In verbose mode, tell what is being copied
where.
(write_aclocal): Update to the changes in 'install_file'.
* NEWS, THANKS: Update.
* tests/aclocal-install-fail.test: New test.
* tests/aclocal-install-mkdir.test: Likewise.
* tests/aclocal-no-install-no-mkdir.test: Likewise.
* tests/aclocal-verbose-install.test: Likewise.
* tests/list-of-tests.mk: Add them.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agopython: avoid failures due to $(am__py_compile) being undefined
Steven Drake [Thu, 15 Mar 2012 08:12:00 +0000 (09:12 +0100)]
python: avoid failures due to $(am__py_compile) being undefined

Fixes automake bug#10995, introduced in commit v1.11-372-gb46debf.

* lib/am/python.am: Move the definition of 'am__py_compile' to
ensure it is always emitted in the output Makefile.in.  Previously,
this wouldn't have happened if the input Makefile.am contained a
'noinst_PYTHON' declaration before a 'python_PYTHON' one.
* tests/Makefile.am (XFAIL_TESTS): Remove 'python-pr10995.test' and
'python.test'.
* NEWS: Update.

Copyright-paperwork-exempt: yes
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agopython: expose automake bug#10995
Stefano Lattarini [Thu, 15 Mar 2012 08:00:12 +0000 (09:00 +0100)]
python: expose automake bug#10995

* tests/python.test: Expose the bug in grepping tests.
* tests/python-noinst.test: New functional test to expose the
bug.
* tests/list-of-tests.mk: Add it.
* tests/Makefile.am (XFAIL_TESTS): Add the new test and the
extended one.
* THANKS: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agotests: avoid spurious failures in get-sysconf.test
Stefano Lattarini [Sat, 10 Mar 2012 07:49:55 +0000 (08:49 +0100)]
tests: avoid spurious failures in get-sysconf.test

This change fixes the last bit of automake bug#10866.

* tests/get-sysconf.test: When Homebrew spawns a build, even if
from a project's VCS, it stages the files in a new temporary
directory, instead of building directly from a VCS checkout.
This behaviour was causing a spurious failure in this test, which
expected to find either a ChangeLog file or a .git directory in
the source directory (the former happening when the test was run
from a distribution tarball, the latter when it was run from a
git checkout).  The Homebrew issue shows that these expectations
are not truly warranted, so relax the test to just give a warning,
not a failure, in case they do not hold.  Since we are at it, fix
an unrelated weakness in the displaying of the git log, which
could have failed when the builddir was not a subdirectory of the
srcdir.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agoscripts: bump the depcomp scriptversion
Peter Rosin [Mon, 12 Mar 2012 15:58:55 +0000 (16:58 +0100)]
scripts: bump the depcomp scriptversion

* lib/depcomp (scriptversion): Bump, to account for recent changes.

12 years agosync: some auxiliary files synced from upstream
Stefano Lattarini [Mon, 12 Mar 2012 14:10:39 +0000 (15:10 +0100)]
sync: some auxiliary files synced from upstream

* lib/texinfo.tex: Synced from upstream, by "make fetch".
* lib/config.guess: Likewise.
* lib/config.sub: Likewise.
* lib/gnupload: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agocoverage: an empty foo_PRIMARY should create directory $(foodir)
Stefano Lattarini [Mon, 12 Mar 2012 13:41:04 +0000 (14:41 +0100)]
coverage: an empty foo_PRIMARY should create directory $(foodir)

For example, a Makefile.am containing the definition:

  pkgdata_DATA =

should cause the 'install' rule of the generated Makefile.in to
create the '$(pkgdatadir)' directory (respecting any DESTDIR
setting as well).

Suggestion by Peter Breitenlohner in automake bug#10997.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agocoverage: make sure am__py_compile is defined when needed
Stefano Lattarini [Mon, 12 Mar 2012 11:15:47 +0000 (12:15 +0100)]
coverage: make sure am__py_compile is defined when needed

See automake bug#10995.

* tests/python.test: Also make sure 'am__py_compile' is defined
correctly in the generated Makefile.in.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agocoverage: expose automake bug#10997
Daiki Ueno [Mon, 12 Mar 2012 10:46:04 +0000 (11:46 +0100)]
coverage: expose automake bug#10997

* tests/instdir-cond.test: New test.
* tests/list-of-tests.mk: Add it.
* tests/Makefile.am (XFAIL_TESTS): Likewise.

Copyright-paperwork-exempt: yes
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agocoverage: expose automake bug#10975
Stefano Lattarini [Fri, 9 Mar 2012 20:35:04 +0000 (21:35 +0100)]
coverage: expose automake bug#10975

* tests/dist-pr10975.test: New test.
* tests/list-of-tests.mk: Add it.
* tests/Makefile.am (XFAIL_TESTS): Likewise.

12 years agogetopt: relax version requirement for perl
Stefano Lattarini [Wed, 7 Mar 2012 22:26:24 +0000 (23:26 +0100)]
getopt: relax version requirement for perl

* lib/Automake/Getopt.pm: Require perl 5.6.0, not 5.6.2: the former
is enough.  See also commit 'v1.11-2054-g7df05a0' on master (dated
04-03-2012).

12 years agocosmetics: fix repeated changelog entry heading
Stefano Lattarini [Wed, 7 Mar 2012 21:14:47 +0000 (22:14 +0100)]
cosmetics: fix repeated changelog entry heading

12 years agoMerge branch 'msvc' into maint
Peter Rosin [Wed, 7 Mar 2012 20:08:06 +0000 (21:08 +0100)]
Merge branch 'msvc' into maint

This merge remedies the confusing situation that some changes
destined for both the master branch and the release branch (a.k.a.
branch-1.11) currently needs to be made on the non-obvious msvc
branch and not on the more natural maint branch.  This has caused
a seemingly endless string of less than optimal commits.

The reason for the confusion stems from the fact that the changes made
on the msvc branch became too radical and was considered only suitable
for the master branch, and was thus written in a form suitable for
master and then merged there.  Later, the msvc branch was merged
directly into branch-1.11, in order to rush the new features to the
market and to keep the released scripts (lib/ar-lib, lib/compile and
lib/depcomp) consistent with those on the master branch.  However,
some changes had to be made to the features added by the msvc branch
in order for them to fit the requirements of branch-1.11, notably that
the warnings issued in the extra-portability class cannot be enabled
by -Wall in the 1.11.x maintenance releases.

In retrospect, it would have been better to not merge msvc directly
into branch-1.11, but instead do it via the maint branch (followed up
with a dummy merge from maint into master) the moment it was decided
that the msvc changes should make it into branch-1.11.

All in all, this merge is going to affect neither the master branch
nor branch-1.11, since it is followed up with dummy merges masking all
changes.  The merge is made to maintain the sanity of the poor
developers, who wishes to once again have a working maint branch.

Discussion about merging the msvc branch into branch-1.11:
http://lists.gnu.org/archive/html/automake/2011-10/msg00030.html

Discussion about why this merge hasn't happened before:
http://lists.gnu.org/archive/html/automake/2011-12/msg00051.html

Extra edits below.

* lib/Automake/ChannelDefs.pm: Use the version from branch-1.11.
* tests/ar-lib3.test: Likewise.
* tests/ar-lib4.test: Likewise.
* tests/extra-portability.test: Likewise.
* tests/extra-portability2.test: Likewise.
* tests/extradep.test: Likewise.
* tests/extradep2.test: Likewise.
* tests/list-of-tests.mk: Likewise.
* HACKING: Backport the version from branch-1.11 while at it (as the
change on branch-1.11 is also present on master via an unrelated
commit), even though this change has nothing to do with the changes
on the msvc branch.

12 years agoMerge branch 'maint' into msvc
Stefano Lattarini [Wed, 7 Mar 2012 07:20:26 +0000 (08:20 +0100)]
Merge branch 'maint' into msvc

* maint:
  news: describe recently-fixed bug in vala support
  depcomp: add support for IBM xlc/xlC compilers

12 years agonews: describe recently-fixed bug in vala support
Stefano Lattarini [Tue, 6 Mar 2012 20:44:57 +0000 (21:44 +0100)]
news: describe recently-fixed bug in vala support

* NEWS (Long-standing bugs): Document fix for bug#10894, fixed
by commit 'v1.11-696-g51f61df' of 27-02-2012.

12 years agodepcomp: add support for IBM xlc/xlC compilers
Michael Hofmannm [Mon, 5 Mar 2012 19:05:37 +0000 (20:05 +0100)]
depcomp: add support for IBM xlc/xlC compilers

* lib/depcomp (xlc): New depmode.
* NEWS, THANKS: Update.

Copyright-paperwork-exempt: yes

12 years agoscripts: support -I <dir> -L <dir> and -l <lib> for cl in compile
Peter Rosin [Tue, 6 Mar 2012 08:14:50 +0000 (09:14 +0100)]
scripts: support -I <dir> -L <dir> and -l <lib> for cl in compile

POSIX mandates that the compiler accepts a space between the -I,
-l and -L options and their respective arguments.  See
http://pubs.opengroup.org/onlinepubs/000095399/utilities/c99.html

* lib/compile (func_cl_dashl): New function with factored out code
for implementing the -l option for the cl wrapper.
(func_cl_dashL): New function with factored out code implementing
the -L option for the cl wrapper.
(func_cl_wrapper): Use func_cl_dashl to implement both -l <lib>
and -l<lib>, and func_cl_dashL to implement both -L <dir> and
-L<dir>.  Also add support for -I <dir>.
(scriptversion): Update.
* tests/compile3.test: Test both with and without a space between
-I, -l and -L and their respective arguments.
* tests/compile5.test: Likewise.
* tests/compile6.test: Likewise.
* tests/compile3.test: Likewise.
* NEWS: Update.

12 years agonews: add entry about recent 'ar-lib' changes
Peter Rosin [Fri, 2 Mar 2012 15:27:31 +0000 (16:27 +0100)]
news: add entry about recent 'ar-lib' changes

* NEWS: Add information about recent 'ar-lib' changes.

12 years agoscripts: recognize the "q", "s" and "S" actions/modifiers in ar-lib
Peter Rosin [Thu, 1 Mar 2012 08:30:45 +0000 (09:30 +0100)]
scripts: recognize the "q", "s" and "S" actions/modifiers in ar-lib

* lib/ar-lib: Implement the "q" (quick) action as a synonym
for "r" (replace).  Ignore "s" (symbol index) and "S" (no symbol
index) when used as modifiers and "s" when used as a command,
there is simply no way for Microsoft lib to not update the
symbol table index in the archive.
(scriptversion): Update.
* tests/ar-lib.test: Check the added behavior.  Also add checks
for the recently added "u" (update) and "v" (verbose) modifiers.

12 years agoMerge branch 'maint' into msvc
Peter Rosin [Fri, 2 Mar 2012 10:04:05 +0000 (11:04 +0100)]
Merge branch 'maint' into msvc

12 years agovala: fix 'valac' calls for projects with mixed Vala/C
Stefano Lattarini [Mon, 27 Feb 2012 20:48:03 +0000 (21:48 +0100)]
vala: fix 'valac' calls for projects with mixed Vala/C

Fixes automake bug#10894.

* automake.in (lang_vala_finish_target): Strip non-vala files
from the dependencies of vala stamps, and from the invocation
of valac compiler.  Related refactorings.
* tests/Makefile.am (XFAIL_TESTS): Remove 'vala-mix2.test'.

12 years agovala: expose automake bug#10894
Stefano Lattarini [Mon, 27 Feb 2012 20:16:22 +0000 (21:16 +0100)]
vala: expose automake bug#10894

* tests/vala-mix2.test: New test.
* tests/list-of-tests.mk: Add it.
* tests/Makefile.am (XFAIL_TESTS): Likewise.
* THANKS: Update.

12 years agodryrun: $(am__dry_run) not confused by metachars in $(MAKEFLAGS)
Stefano Lattarini [Fri, 17 Feb 2012 10:52:13 +0000 (11:52 +0100)]
dryrun: $(am__dry_run) not confused by metachars in $(MAKEFLAGS)

* lib/am/header-vars.am (am__make_dryrun): Be smarter and more
correct in handling shell metacharacters in $(MAKEFLAGS).

12 years agoupdate-copyright: don't touch files synced from external packages
Stefano Lattarini [Thu, 16 Feb 2012 09:33:30 +0000 (10:33 +0100)]
update-copyright: don't touch files synced from external packages

* Makefile.am (update-copyright): Do not update copyright years of
files synced from external packages, as given by the '$(FETCHFILES)'
variable.  Silence the recipe since we are at it.

12 years agofixup: distribute 'lib/update-copyright'
Stefano Lattarini [Wed, 15 Feb 2012 18:00:10 +0000 (19:00 +0100)]
fixup: distribute 'lib/update-copyright'

While the 'update-copyright' script shouldn't be needed by final
users, that's not a good reason to keep it out by the distribution,
as doing so might be unhelpful toward occasional but curious users
interested in peeking into the automake build system.

* lib/Makefile.am (EXTRA_DIST): Distribute 'update-copyright'.

12 years agomaint: add a rule to use gnulib's update-copyright
Jim Meyering [Sun, 12 Feb 2012 15:57:42 +0000 (16:57 +0100)]
maint: add a rule to use gnulib's update-copyright

* lib/update-copyright: New file, from gnulib.
* Makefile.am (FETCHFILES): Add update-copyright to the list.
(fetch): Fetch it.
(update-copyright): New rule.

12 years agofixup: do not tickle makefile-deps.test with the make_dryrun code
Peter Rosin [Tue, 14 Feb 2012 11:55:32 +0000 (12:55 +0100)]
fixup: do not tickle makefile-deps.test with the make_dryrun code

* lib/am/header-vars.am (am__make_dryrun): Avoid code matching
'^ *:' in the Makefile, as that tickles makefile-deps.test.

12 years agogitattributes: custom merge driver for ChangeLog not needed anymore
Stefano Lattarini [Tue, 14 Feb 2012 12:25:35 +0000 (13:25 +0100)]
gitattributes: custom merge driver for ChangeLog not needed anymore

* .gitattributes: We don't maintain a version-controlled ChangeLog
file anymore, so we have no need to specify a custom merge driver
for it anymore.  Update accordingly.

12 years agogitattributes: use "union" merge driver for NEWS
Stefano Lattarini [Tue, 14 Feb 2012 12:21:26 +0000 (13:21 +0100)]
gitattributes: use "union" merge driver for NEWS

This should help in reducing the spurious merge conflicts for the
NEWS file, which have already caused a great deal of confusion and
wasted time.

Suggestion by Eric Blake:
http://lists.gnu.org/archive/html/automake-patches/2012-02/msg00119.html

* .gitattributes (NEWS): Use the "union" merge driver.

12 years agoMerge branch 'dryrun-fix' into maint
Stefano Lattarini [Thu, 9 Feb 2012 17:07:13 +0000 (18:07 +0100)]
Merge branch 'dryrun-fix' into maint

* dryrun-fix:
  dryrun: fix regression with '$(am__make_dryrun)'

12 years agodepcomp: try to prevent whitespace regressions
Peter Rosin [Fri, 3 Feb 2012 15:10:52 +0000 (16:10 +0100)]
depcomp: try to prevent whitespace regressions

Suggested by Stefano Lattarini.

* lib/depcomp: Add $tab and $nl variables and use them
throughout.

12 years agodepcomp: recognize tabs as whitespace in the dashmstdout mode
Peter Rosin [Fri, 3 Feb 2012 07:54:49 +0000 (08:54 +0100)]
depcomp: recognize tabs as whitespace in the dashmstdout mode

Commit Release-1-7-2b-2-gf03ceab "Cope with DOS filenames in
dependencies." inadvertedly converted tabs into spaces.

* lib/depcomp (dashmstdout): Add a tab character to all sets
matching whitespace.

12 years agodepcomp: quote 'like this', not `like this'
Peter Rosin [Wed, 8 Feb 2012 13:40:15 +0000 (14:40 +0100)]
depcomp: quote 'like this', not `like this'

Cherry-picked from recent changes from master.

* lib/depcomp: Quote 'like this', not `like this'.

12 years agotests: fix a timestamp-related spurious failures
Stefano Lattarini [Tue, 7 Feb 2012 18:53:49 +0000 (19:53 +0100)]
tests: fix a timestamp-related spurious failures

Fixes automake bug#10737.  Report from Larry Daniel.
See also automake bug#8365 and commit 'v1.11-329-gd4df619' of
30-03-2011, "tests: fix timestamp-related failures".

* tests/aclocal5.test: Sleep before modifying m4 files that should
trigger remake rules.  This fixes an hard-to-hit timestamp-related
race condition.
* THANKS: Update.

12 years agodryrun: fix regression with '$(am__make_dryrun)'
Stefano Lattarini [Tue, 7 Feb 2012 10:12:59 +0000 (11:12 +0100)]
dryrun: fix regression with '$(am__make_dryrun)'

In commit v1.11-683-gda0964e of 05-02-2012, we introduced a new
variable '$(am__make_dryrun)' that could be used in recipes to
determine whether make is running in dry mode (e.g., as with
"make -n").  Unfortunately, the idiom we used fails to take into
account the case in which $(MAKEFLAGS) contains one or more variable
definitions whose value is a whitespace-separated list; for example,
if we invoke make as:

  make check TESTS="n1.test n2.test"

then the better make implementations out there (at least modern
GNU make and BSD make) will export MAKEFLAGS to the following
value:

  TESTS=n1.test\ n2.test

So a shell loop like the one we used in $(am__make_dryrun):

  for flag in $$MAKEFLAGS; do ...

won't behave as expected: the shell word-splitting rules will break
up the entry for TESTS into the two distinct entries "TESTS=n1.test\"
and "n2.test", and this second entry will goad our $(am__make_dryrun)
code into thinking that make is performing a dry run!

So now we simply loop over the expanded value of $(MAKEFLAGS).
This solves the regression, but alas, is more brittle in case the
users passes on the command line a macro value containing unbalanced
" or ' quotes, or shell metacharacters like, say, '`' or '('.  This
should almost never happen though, so we don't worry about it now;
we will revisit the issue only when and if we receive bug reports in
this area.

* lib/am/header-vars.am (am__make_dryrun): Fix.
* tests/make-dryrun.test: New test.
* tests/list-of-tests.mk: Add it.

12 years agotest defs: function 'is_newest' now works also with directories
Stefano Lattarini [Sat, 23 Jul 2011 11:55:20 +0000 (13:55 +0200)]
test defs: function 'is_newest' now works also with directories

Reported by Jim Meyering against automake master (see bug#9147) and
by Adam Sampson against automake 1.11.3 (see bug#10730).

* tests/defs (is_newest): Call 'find' with the '-prune' option,
so that it won't descend in the directories (which could cause
spurious results).
* THANKS: Update.

Backported from commit v1.11-914-gb6a40fa (originally on master).

12 years agorefactor: new variable telling whether make is running in "dry mode"
Stefano Lattarini [Mon, 23 Jan 2012 20:02:05 +0000 (21:02 +0100)]
refactor: new variable telling whether make is running in "dry mode"

We define a new variable '$(am__make_dryrun)', that can be used
in recipes to determine whether make is running in "dry mode" (as
with "make -n") or not.  This is useful in rules that invoke make
recursively, and are thus executed also with "make -n" -- either
because they are declared as dependencies to '.MAKE' (NetBSD make)
or because their recipes contain the "$(MAKE)" string (GNU and
Solaris make).

* lib/am/header-vars.am (am__make_dryrun): New variable.
* lib/am/check.am (check-TESTS recheck): Use it, and simplify
recipe accordingly.
* lib/am/distdir.am (distdir): Likewise.
* lib/am/lisp.am ($(am__ELCFILES)): Likewise.

12 years agotests: do not clobber the modified CC
Peter Rosin [Thu, 2 Feb 2012 20:08:46 +0000 (21:08 +0100)]
tests: do not clobber the modified CC

If CC is originally a losing compiler, AM_PROG_CC_C_O will
modify CC.  "$MAKE -e" will then clobber this modified CC
and reintroduce the raw losing compiler causing the test
to fail, as subdir-objects is in effect.

tests/check8.test: Drop -e from the $MAKE invocation, since
AM_COLOR_TESTS is not specified in the Makefile and -e is
therefore not needed.

12 years agotests: put AM_PROG_CC_C_O before AC_OUTPUT to help losing compilers
Peter Rosin [Wed, 1 Feb 2012 14:47:45 +0000 (15:47 +0100)]
tests: put AM_PROG_CC_C_O before AC_OUTPUT to help losing compilers

When AM_PROG_CC_C_O is after AC_OUTPUT, the compile script
is not used even if needed, causing testsuite fails if
libtool is not used.

* tests/depcomp8a.test: Uncomment the AM_PROG_CC_C_O macro
in its correct location, as indicated...
(configure.in): ...with this comment.
* tests/depcomp8b.test: Sync with tests/depcomp8a.test.

12 years agocleanup: remove unused .am file
Stefano Lattarini [Tue, 31 Jan 2012 11:52:24 +0000 (12:52 +0100)]
cleanup: remove unused .am file

* lib/am/comp-vars.am: Remove.  This file has stopped being useful
since commit 'Release-1-4d-206-g3334f9a' of 09-04-2001, and should
have been removed back then.  But apparently only its contents were
removed, leaving the file empty but still present in the repository.
Or maybe this situation is  the consequence of a minor blunder in
the conversion from CVS to Git; either way, this is not a big deal.

12 years agoar-lib: ignore the verbose modifier instead of erroring out
Peter Rosin [Mon, 30 Jan 2012 22:19:03 +0000 (23:19 +0100)]
ar-lib: ignore the verbose modifier instead of erroring out

* lib/ar-lib: A number of tests uses the v modifier when listing
the archive content, ignore it to make them pass.

12 years agoscripts: cherry-pick recent changes from master
Peter Rosin [Mon, 30 Jan 2012 22:16:37 +0000 (23:16 +0100)]
scripts: cherry-pick recent changes from master

* lib/ar-lib: prefer the term "Windows" over "Win32" and quote
'like this', not `like this'.
* lib/compile: Likewise.

12 years agotests: do not assume the object file extension is .o
Peter Rosin [Mon, 30 Jan 2012 19:57:12 +0000 (20:57 +0100)]
tests: do not assume the object file extension is .o

* tests/specflg7.test: Dig out the object file extension from the
OBJEXT makefile variable.
* tests/substref.test: Likewise.
* tests/specflg8.test: Likewise.  Also check that the false-true
object is created instead of checking the true-true object twice.
* tests/suffix8.test: Add a chain rule for the case where the
object file extension is .obj.

12 years agotests: avoid spurious failure of 'transform2.test' on Cygwin
Stefano Lattarini [Fri, 27 Jan 2012 17:35:28 +0000 (18:35 +0100)]
tests: avoid spurious failure of 'transform2.test' on Cygwin

On newer Cygwin versions (at least 1.7.x), the 'transform2.test'
test has been failing spuriously; the gist is the following:
some *purposefully* rigged install rules there try something
like:

  install bla.exe .../inst/bin/foo.exe
  install script.sh .../inst/bin/foo

and the second install command fails (trying to overwrite the
'.../inst/bin/foo.exe' file, likely due to overly aggressive
appending of '.exe' suffix when copying/renaming Windows
executables).  Since this is a Cygwin issue rather than an
Automake one (and since the use case we are testing is a really
corner-case anyway, making it unworthy to attempt to work
around it in automake proper), we simply hack the test case
to avoid the failure.

Analysis by Peter Rosin and Ralf Wildenhues.

References:
<http://lists.gnu.org/archive/html/automake-patches/2010-08/msg00153.html>
<http://thread.gmane.org/gmane.os.cygwin/119380>

* tests/transform2.test: Skip the affected part of the test
if the described Cygwin behaviour is detected.

12 years agotests: avoid spurious failure of deleted-am.test with FreeBSD make
Stefano Lattarini [Fri, 27 Jan 2012 20:03:45 +0000 (21:03 +0100)]
tests: avoid spurious failure of deleted-am.test with FreeBSD make

* tests/deleted-am.test: Sleep between the removal of the included
'.am' fragments and the subsequent "make" calls, to ensure that the
remake rules kick in.  This is required to avoid racy spurious
failures (~ 60% of the time) with FreeBSD make.

12 years agotests: avoid possibly undeserved PASS from check8.test
Stefano Lattarini [Fri, 27 Jan 2012 13:14:46 +0000 (14:14 +0100)]
tests: avoid possibly undeserved PASS from check8.test

* tests/check8.test: Strengthen grepping of "make check" output
where we know no problem with VPATH rewrites can take place.  This
has the advantage of ensuring that we won't match also "sub/bar"
when looking for "bar" during the uncolorized tests.

Suggestion by Peter Rosin.

12 years agowarnings: more precise category and message for one warning
Stefano Lattarini [Thu, 26 Jan 2012 17:00:40 +0000 (18:00 +0100)]
warnings: more precise category and message for one warning

If automake detected an usage like "AC_CONFIG_FILES([./Makefile])"
in configure.ac, it warned that such an usage was unportable to
non-GNU make implementations.  But the truth is actually worse:
that is actually *unportable to GNU make* itself, since it breaks
the automatic remake rules in subtle ways.

So we now reveal this breakage in a new test case, and enhance
the warning by giving it a more precise and correct wording, and
by moving it from the category 'portability' to the category
'unsupported'.

* automake.in (scan_autoconf_config_files): Improve the warning.
* tests/conffile-leading-dot.test: New test.
* tests/list-of-tests.mk: Add it.

12 years agorelease: revamp rules to tag and upload the releases
Stefano Lattarini [Wed, 25 Jan 2012 11:18:43 +0000 (12:18 +0100)]
release: revamp rules to tag and upload the releases

The older Makefile rules used to create and tag the releases were
based on an approach we now consider flawed: they over-mechanized
some delicate operations that are better performed manually *and*
double-checked by a developer, and at the same time they did not
run enough safety checks.

* Makefile.am (GIT, version_rx, stable_version_rx, beta_version_rx,
match_version, git_must_have_clean_workdir, determine_release_type):
New variables.
(git-release, git-dist): Remove, they are superseded by ...
(git-tag-release, git-upload-release): ... these new targets.

12 years agoamversion: add missing dependency
Stefano Lattarini [Wed, 25 Jan 2012 12:45:36 +0000 (13:45 +0100)]
amversion: add missing dependency

* m4/Makefile.am ($(top_srcdir)/m4/amversion.m4): Depend on
configure.ac, since the value of $(VERSION) can change every
time configure.ac is updated.

12 years agohacking: update advice w.r.t. synced files
Stefano Lattarini [Wed, 25 Jan 2012 09:09:17 +0000 (10:09 +0100)]
hacking: update advice w.r.t. synced files

* HACKING: Update and improve advices and explanations about files
in the automake repository that are now owned by automake, but
mirrored from other upstreams.  Also, don't list these files
explicitly, rather point the reader to the $(FETCHFILES) variable
in Makefile.am.
* Makefile.am (FETCHFILES): Don't state that "there should be a
lot more here", as this is not true anymore today.  Only 'COPYING'
must be synced by hand.

12 years agohacking: don't reference ChangeLog anymore
Stefano Lattarini [Wed, 25 Jan 2012 08:50:54 +0000 (09:50 +0100)]
hacking: don't reference ChangeLog anymore

* HACKING: Don't reference the ChangeLog file anymore, since that
is now generated from the git commit messages, not maintained by
hand.  So remove advice that is obsolete, and speak about "git
commit message" instead of "ChangeLog entry" for advice that is
still relevant.

12 years agotests: fix spurious failure due to autom4te caching
Stefano Lattarini [Sun, 22 Jan 2012 16:18:59 +0000 (17:18 +0100)]
tests: fix spurious failure due to autom4te caching

* tests/lzma.test: Remove stale autom4te.cache directories, to
prevent racy, spurious failures (using 'aclocal --force' was
not enough, since the cache was still picked up by the following
automake call).

12 years agovala: fix name of temporary file used in vala rules
Stefano Lattarini [Sun, 22 Jan 2012 09:44:42 +0000 (10:44 +0100)]
vala: fix name of temporary file used in vala rules

Unquoted `@' characters in a "..." string in the automake script
were causing slightly wrong rules to be emitted in the generated
Makefile.in; i.e., rules like:

  rm -f $@ && echo stamp > $10t

instead of the expected:

  rm -f $@ && echo stamp > $@-t

* automake.in (lang_vala_finish_target): Fix that.
* tests/vala.test: Enhance.

12 years agovala tests: add missing 'valac' requirement, and other minor fixlets
Stefano Lattarini [Sun, 22 Jan 2012 09:21:26 +0000 (10:21 +0100)]
vala tests: add missing 'valac' requirement, and other minor fixlets

See also automake bug#10575.

* tests/vala-mix.test ($required): Add 'valac'; this will avoid
spurious failures on systems lacking a Vala compiler.
Add some explicative comments for a couple of non-obvious make
calls.
Make grepping of "make -n" slightly stricter, to avoid potential
false positives.

12 years agonews: fix grammaro
Stefano Lattarini [Sun, 22 Jan 2012 09:11:46 +0000 (10:11 +0100)]
news: fix grammaro

* NEWS (Miscellaneous changes): Fix grammaro: s/don't/doesn't/.

Reported by Jim Meyering.

12 years agofixup: distribute 'contrib/multilib/multi.m4'
Stefano Lattarini [Sat, 21 Jan 2012 18:40:35 +0000 (19:40 +0100)]
fixup: distribute 'contrib/multilib/multi.m4'

This fix up a blunder in commit v1.11-665-gc5df21e of 2012-01-17,
"multilib: deprecate, will be moved to contrib".

* contrib/Makefile.am (EXTRA_DIST): Add 'multilib/multi.m4'.

12 years agomultilib: deprecate, will be moved to contrib
Stefano Lattarini [Tue, 17 Jan 2012 18:48:06 +0000 (19:48 +0100)]
multilib: deprecate, will be moved to contrib

As of 2012-01-17, according to Google codesarch, almost no active
package is using the 'multilib' feature offered by automake.

The only major exception seems to be GCC...  But on a closer look,
it become clear that GCC basically carries its own version of
multilib support.  In fact, Automake syncs its 'config-ml.in' and
'symlink-tree' scripts from GCC; and the GCC repository contains a
version of the 'multi.m4' file that is *more* updated than the one
in the automake repository (the former having being modified the
last time in 2008, the latter only in 2006).

The 'multilib' feature was anyway hardly documented at all, only
being briefly cited in the manual as an "obscure feature", "still
experimental", that was only for users "familiar with multilibs"
and which "can debug problems they might encounter".  We expect
such users to be motivated and knowledgeable enough to make the
minor adjustments required to start using the contrib version of
multilib, if they really need to.

* NEWS (Future backward incompatibility): Update.
* doc/automake.texi: Deprecate multilib support.  State that it
will be removed from automake core in the next major release.
* m4/multi.m4 (AM_ENABLE_MULTILIB): Deprecate.  If called, now
gives a proper warning in the 'obsolete' category (while still
retaining its former behaviour for the rest).
* tests/multilib.test: Update.
* contrib/multilib/multi.m4: New, verbatim copy of the earlier
version of multi.m4, without the new deprecation warning.
* Makefile.am (fetch): Don't sync the 'config-ml.in' file nor
the 'symlink-tree' script from GCC SVN repository anymore.
(FETCHFILES): Adjust.
(WGET_GCC): Remove, it's not needed anymore.

12 years agofixlet: flags for Fortran77 compiler are in FFLAGS, not F77FLAGS
Stefano Lattarini [Fri, 20 Jan 2012 19:52:02 +0000 (20:52 +0100)]
fixlet: flags for Fortran77 compiler are in FFLAGS, not F77FLAGS

This change fixes automake bug#10555.

Note that the bug was a minor one, since it didn't affect the
compilation rules generated by automake, but only only the "hints"
printed by automake in some error messages (e.g., "The usual way
to define `FFLAGS' is to add AC_PROG_F77 to configure.ac").

* lib/Automake/Variable.pm (%_ac_macro_for_var): The code generated
by AC_PROG_F77 uses FFLAGS, not F77FLAGS, as the variable where to
look for switches for the Fortran 77 compiler: adjust accordingly.

12 years agocosmetics: fix a botched comment in a maintainer check
Stefano Lattarini [Thu, 19 Jan 2012 14:09:23 +0000 (15:09 +0100)]
cosmetics: fix a botched comment in a maintainer check

* Makefile.am (sc_tests_make_without_am_makeflags): Adjust
botched description of this check.

12 years agocmdline parsing: move into a dedicated perl module
Stefano Lattarini [Wed, 18 Jan 2012 16:55:40 +0000 (17:55 +0100)]
cmdline parsing: move into a dedicated perl module

With this change, we delegate most of the automake and aclocal code
for command-line options parsing to a new module "Automake::Getopt".
This allows better code sharing between automake and aclocal, and
also with Autoconf, which will sync the new module from us.  See
also autoconf commit 'v2.68-120-gf4be358' (2012-01-17, "getopt: new
Autom4te::Getopt module"), and this mailing list discussion:
<http://lists.gnu.org/archive/html/autoconf-patches/2012-01/msg00033.html>

This change might interact with the behaviour described in automake
bug#7434; for example, starting from now, "automake -Wfoo --version"
will cause automake to emit diagnostic like "unknown warning
category 'foo'" before actually printing the version number and
exiting.  This is not a big deal in practice, and the code sharing
and simplifications introduced by this patch is certainly worth it.
Still, we should revisited the issue in the future.

* lib/Automake/Getopt.pm: New module, basically a slightly-edited
copy of the 'lib/Autom4te/Getopt.pm' file from the autoconf devel
repository (commit v2.68-120-gf4be358).  It defines and exports ...
(parse_options): ... this new function.
* automake.in (parse_arguments): Use the new function.
* aclocal.in (parse_arguments): Likewise.
* lib/Automake/Makefile.am (dist_perllib_DATA): Add the new file.
* tests/getopt.test: Remove.
* tests/list-of-tests.mk: Update.

12 years agocosmetics: move CheckListOfTests.am into tests/
Stefano Lattarini [Wed, 18 Jan 2012 12:40:21 +0000 (13:40 +0100)]
cosmetics: move CheckListOfTests.am into tests/

After the previous change 'v1.11-660-gfbeda3d', the makefile
fragment 'CheckListOfTests.am' is used only by the Makefile.am
in 'tests'; so keeping them two nearer makes sense.  It also help
in reducing potential confusion, since (after that same change)
the whole Automake testsuite is expected to be (and remain)
contained into the 'tests' subdirectory.

* CheckListOfTests.am: Move ...
* tests/CheckListOfTests.am: ... to this.
* tests/Makefile.am (include): Adjust.

12 years agotests: move all under the same hierarchy ('tests/' directory)
Stefano Lattarini [Wed, 18 Jan 2012 11:17:11 +0000 (12:17 +0100)]
tests: move all under the same hierarchy ('tests/' directory)

This simplifies the organization of the Automake source tree and
reduces the (lamentably high) number of Makefiles in the Automake
build system by one.  It also makes the maintainer check that
verifies the consistency of list of tests more self-contained and
simpler.  Finally, it might be a first step forward the transition
to a non-recursive build system for automake (if we ever decide to
go down that road fully some day).

* lib/Automake/tests: All the '*.pl' tests in here moved ...
* tests/pm: ... into this new directory.
* lib/Automake/tests/Makefile.am: Remove, its meaningful
contents moved ...
* tests/Makefile.am: ... here, with obvious adjustments.
(test_subdirs): New variable, for the sake of the recipe
of 'maintainer-check-list-of-tests'.
* CheckListOfTests (maintainer-check-list-of-tests): Enhance
its recipe to make it able to deal with test script residing
in subdirectories.
* Makefile.am (maintainer-check-list-of-tests): Simplified.
(TEST_SUBDIRS): Remove, no more needed.
* tests/list-of-tests.mk (perl_TESTS): New variable, lists
the '.pl' tests just moved into 'tests/pm'.
(handwritten_TESTS): Add the contents of '$(perl_TESTS)'.
* lib/Automake/Makefile.am (SUBDIRS): Remove.
* configure.ac (AC_CONFIG_FILES): Update.
* .gitignore: Adjust.

12 years agogitlog-to-changelog: update from upstream
Stefano Lattarini [Wed, 18 Jan 2012 08:45:01 +0000 (09:45 +0100)]
gitlog-to-changelog: update from upstream

* lib/gitlog-to-changelog: Update from gnulib upstream.  The only
changes should be cosmetic and/or minor fixlets.

12 years agochangelog: don't cluster multiple entries under the same "date line"
Stefano Lattarini [Tue, 17 Jan 2012 22:31:19 +0000 (23:31 +0100)]
changelog: don't cluster multiple entries under the same "date line"

* lib/gitlog-to-changelog: Synced from gnulib.  The new version
has a new option '--no-cluster', that disables clustering of
adjacent commit messages under the same "date line".
* Makefile.am (gitlog_to_changelog_options): Add '--no-cluster'.
Also add a proper '--format' specification to ensure we have a
blank line between the summary line and the commit message body.

12 years agofixup: contrib: really integrate in automake build system
Stefano Lattarini [Tue, 17 Jan 2012 14:48:56 +0000 (15:48 +0100)]
fixup: contrib: really integrate in automake build system

* configure.ac (AC_CONFIG_FILES): Add 'contrib/Makefile'.
* Makefile.am (SUBDIRS): Add 'contrib'.

12 years agocontrib: new, a directory for non-mainstream functionalities
Stefano Lattarini [Tue, 17 Jan 2012 12:55:00 +0000 (13:55 +0100)]
contrib: new, a directory for non-mainstream functionalities

This new 'contrib' hierarchy will be a good place were to move
implementation/support for obsolescent features we are not yet
ready to remove completely, or were to leave experimental or
third-party features to cook before their eventual inclusion in
the automake core.

* contrib: New directory.
* contrib/README: New file.
* contrib/Makefile.am: New file.
(EXTRA_DIST): Distribute README.

12 years agoMerge branch 'check-html-deprecate' into maint
Stefano Lattarini [Mon, 16 Jan 2012 17:35:50 +0000 (18:35 +0100)]
Merge branch 'check-html-deprecate' into maint

* check-html-deprecate:
  recheck: fix interaction with "make -n"
  recheck: behave better with non-GNU make
  check: separate .log -> .html conversion from core testsuite harness
  docs: deprecate .log -> .html conversion by parallel-tests

12 years agorecheck: fix interaction with "make -n"
Stefano Lattarini [Fri, 13 Jan 2012 21:39:47 +0000 (22:39 +0100)]
recheck: fix interaction with "make -n"

* lib/am/check.am (recheck): Ensure the recipe does not erroneously
remove '.log' files when running under "make -n".  For the sake of
NetBSD make, this also means that ...
(.MAKE): ... this cannot depend on 'recheck' anymore.
* tests/parallel-tests-dryrun.test: New test.
* tests/list-of-tests.mk: Add it.

12 years agovala: avoid potential useless remakes (minor bugfix)
Stefano Lattarini [Mon, 16 Jan 2012 15:42:25 +0000 (16:42 +0100)]
vala: avoid potential useless remakes (minor bugfix)

* automake.in (lang_vala_finish_target): Ensure the timestamp file
from which the C files generated from Vala sources depend on gets
created with a modification time that is truly older than those of
said generated C files.  This prevents make from attempting useless
rebuilds (which were bound to happen deterministically on systems
with sub-second timestamp resolutions).  It is worth noting that,
luckily, those useless rebuild ended up being a no-op, since the
Vala compiler is careful not to update the timestamp of an output
file if its content has not changed from the previous version.
Still, the useless rebuilds messed up "make -q" and "make -n"
invocations, and were technically incorrect (despite being, as
noted, inoffensive in practice).

Problem revealed by failure of tests vala-mix.test and vala5.test
on a fast Solaris 10 system whose filesystem had a sub-second
timestamp resolution.

12 years agovala: enhance tests
Stefano Lattarini [Mon, 16 Jan 2012 14:38:56 +0000 (15:38 +0100)]
vala: enhance tests

* tests/vala.test: Extend test.  Throw in some cosmetic and
consistency changes since we are at it.
* tests/vala5.test: Avoid uselessly requiring libtool.  Ensure a
failure happens in case VALAFLAGS are not supported as expected.
Extend test in some ways.  Throw in some cosmetic and consistency
changes since we are at it.
* tests/vala-mix.test: New test.
* tests/list-of-tests.mk: Add it.

12 years agorecheck: behave better with non-GNU make
Stefano Lattarini [Fri, 13 Jan 2012 17:53:43 +0000 (18:53 +0100)]
recheck: behave better with non-GNU make

* automake.in (handle_tests): Also substitute '%CHECK_DEPS%' with
the value of the '@check' array, containing the list of early
test dependencies like '$(check_SCRIPTS)', $(check_PROGRAMS)',
etc.
* lib/am/check.am (recheck): Explicitly depend on '%CHECK_DEPS%'.
(check, recheck): Unify the implementation of their recipes, with
different code paths taken depending on the name of the target.
This makes the implementation of "recheck" less brittle in the
process (especially when non-GNU make and AM_MAKEFLAGS overriding
are involved).
* lib/am/check-html.am (check-html, recheck-html): Likewise.
* tests/check.test: Adjust to avoid spurious failure.
* tests/parallel-tests2.test: Improve coverage.

12 years agocheck: separate .log -> .html conversion from core testsuite harness
Stefano Lattarini [Fri, 13 Jan 2012 16:56:13 +0000 (17:56 +0100)]
check: separate .log -> .html conversion from core testsuite harness

That feature is to be deprecated in the 1.11.x series, and removed
from the automake core in the 1.12 release, where it will instead
be offered in a semi-independent extra '*.am' fragment.  So let's
start better separating the .log -> .html conversion from the "core
code" of the parallel-tests harness.

Reference:
  <http://lists.gnu.org/archive/html/automake/2012-01/msg00005.html>

* lib/am/check.am (.log.html, check-html, recheck-html): Move these
targets ...
* automake.in (handle_tests): ... and the initialization of the
TEST_SUITE_HTML variable and the cleaning of the $(TEST_SUITE_HTML)
file ...
* lib/am/check-html.am: ... in this new file, with related (minor)
refactorings, enhancements and simplifications.
* lib/am/check.am (.MAKE. PHONY, AM_RECURSIVE_TARGETS): Adjust.
* lib/am/Makefile.am (dist_am_DATA): Add 'check-html.am'.
* tests/parallel-tests2.test: Improve coverage.

12 years agodocs: deprecate .log -> .html conversion by parallel-tests
Stefano Lattarini [Sun, 8 Jan 2012 18:26:18 +0000 (19:26 +0100)]
docs: deprecate .log -> .html conversion by parallel-tests

That feature is to be deprecated in the 1.11.x series, and
removed in the 1.12 release.

Reference:
  <http://lists.gnu.org/archive/html/automake/2012-01/msg00005.html>

* doc/automake.texi (Simple Tests using parallel-tests): Deprecate
the '.log' -> '.html' conversion and the targets 'check-html' and
'recheck-html'.  Related rewording and reformatting.
* NEWS (Future backward-incompatibilities): Update.

12 years agotests: list some forgotten test cases in $(TESTS)
Stefano Lattarini [Mon, 16 Jan 2012 09:18:06 +0000 (10:18 +0100)]
tests: list some forgotten test cases in $(TESTS)

This way, they will be properly executed by "make check", and
properly distributed.  Our previous commit 'v1.11-647-g27f1a1c'
is already paying its dividends!

* tests/list-of-tests.mk (handwritten_TESTS): Add check12.test,
dist-missing-included-m4.test, dist-missing-am.test, and
dist-missing-m4.test.

12 years agomaintcheck: consistency of list of test scripts
Stefano Lattarini [Mon, 16 Jan 2012 09:05:59 +0000 (10:05 +0100)]
maintcheck: consistency of list of test scripts

This is basically a backport of commit 'v1.11-358-g7b6ab07'
and its follow-ups.  The possibility of easily checking that
the list of test scripts listed in a Makefile equals that of
the tests on the filesystem has proved itself so useful that
it's worth taking the annoyance of backporting it to maint.

* CheckListOfTests.am: New file, backported from master (commit
'v1.11-1736-g083a75b') with minor adjustments.
(maintainer-check-list-of-tests): New target, check for consistency
between the list of tests defined in the including Makefile and the
list of tests on the filesystem.
(clean-maintcheck-testslist-tmp): New rule, to clean up temporary
files that might be left around by the rules associated with the
previous target.
(clean-local): Depend on it.
* lib/Automake/tests/Makefile.am: Include `CheckListOfTests.am'.
* tests/Makefile.am: Likewise.
* Makefile.am (maintainer-check-list-of-test): New target,
calling recursively into `tests/' and `lib/Automake/tests/',
using ...
(TEST_SUBDIRS): ... this new variable.
(maintainer-check): Added dependency from the new target
`maintainer-check-list-of-tests'.

12 years agobuild: explicitly declare some targets as .PHONY
Stefano Lattarini [Sun, 15 Jan 2012 22:45:31 +0000 (23:45 +0100)]
build: explicitly declare some targets as .PHONY

* Makefile.am (fetch, git-dist, git-release, maintainer-check):
Declare as ".PHONY".

12 years agomaint: remove obsolete/broken maintainer targets
Stefano Lattarini [Sun, 15 Jan 2012 22:38:58 +0000 (23:38 +0100)]
maint: remove obsolete/broken maintainer targets

* Makefile.am (git-diff): Remove.  First, we don't distribute diffs
between an automake version and the next one anyway, so this target
is pointless.   Moreover, its recipe has been broken for quite a
long time now, always generating an empty diff due to the spurious
'$(PACKAGE)' argument that was passed to the "git diff" invocation.
(path-check): Remove.  The 'pathchk' program running in this check
complains about any file with name longer than 14 characters, which
is a ridiculously low limit for today standards.  Also, we already
had several test scripts (no less than 195!) that were exceeding
that limit, and nobody ever complained (not even on MinGW/MSYS nor
Cygwin).

12 years agobuild: improve silencing of automake build system
Stefano Lattarini [Sun, 15 Jan 2012 22:08:21 +0000 (23:08 +0100)]
build: improve silencing of automake build system

In this change, we continue the silencing of the automake build
system that has been started in commit v1.11-642-g17542c3, but
which has been left incomplete there for an (absent-mindness)
mistake.

* Makefile.am (INSTALL): Silence the recipe.
(automake, aclocal): Likewise, and improve them a little since
we are at it.
* lib/Automake/Makefile.am (Config.pm): Likewise.

12 years agotests: move list of tests in its own Makefile fragment
Stefano Lattarini [Sun, 15 Jan 2012 20:07:44 +0000 (21:07 +0100)]
tests: move list of tests in its own Makefile fragment

This change will make it easier to merge maint into master, which
has a similar Makefile setup in the testsuite.

* tests/Makefile.am (include): Inclusion of ...
* tests/list-of-tests.mk: ... this new file.
* tests/Makefile.am (TESTS): Move most of its content into,
and redefine in function of, ...
* tests/list-of-tests.mk (handwritten_TESTS): ... this new
variable.
* tests/gen-parallel-tests: Update.

12 years agobuild: silence automake build system
Stefano Lattarini [Sun, 15 Jan 2012 19:46:43 +0000 (20:46 +0100)]
build: silence automake build system

* configure.ac (AM_SILENT_RULES): Invoke with "yes" as a parameter,
to activate silent rules by default.
* NEWS: Update.
* Makefile.am (sc_perl_syntax): Silence its recipe unconditionally,
similarly to what is done for other syntax checks.
(release-stats): Be silent by default *but not unconditionally*,
thanks to the use of $(AM_V_GEN).
(path-check, git-diff): Be silent by default, thanks to the use
of $(AM_V_GEN).
* m4/Makefile.am ($(top_srcdir)/m4/amversion.m4): Likewise.
* doc/Makefile.am ($(srcdir)/amhello-1.0.tar.gz): Likewise.
* tests/Makefile.am ($(srcdir)/parallel-tests.am): Likewise.
($(parallel_tests)): Likewise.

12 years agognupload: moved to gnulib
Stefano Lattarini [Sun, 15 Jan 2012 16:14:04 +0000 (17:14 +0100)]
gnupload: moved to gnulib

Since the gnupload script is not required by automake-generated
code (be it configure or Makefile content), and is not specifically
tied to automake in any way, it is better to have its master copy
installed in the gnulib repository, as is already done for similar
generally-useful, maintainer-oriented scripts.  We can them sync it
from there.

See also gnulib commit v0.0-6822-gf8b7120, and:
<http://lists.gnu.org/archive/html/bug-gnulib/2012-01/msg00222.html>

* Makefile.am (FETCHFILES): Added 'gnupload'.
(fetch): Also sync 'gnupload' from the gnulib repository.
* lib/gnupload: Synced from gnulib.
* NEWS: Update.

12 years agosync: gitlog-to-changelog from gnulib upstream
Stefano Lattarini [Sun, 15 Jan 2012 16:10:21 +0000 (17:10 +0100)]
sync: gitlog-to-changelog from gnulib upstream

* lib/gitlog-to-changelog: Synced from upstream, by "make fetch".

12 years agotest defs: backport optimized 'using_gmake' implementation
Stefano Lattarini [Sat, 14 Jan 2012 09:32:13 +0000 (10:32 +0100)]
test defs: backport optimized 'using_gmake' implementation

* tests/defs.in (using_gmake): Backport optimized, result-caching
implementation from master.

12 years agotests: unify some tests on "make -n", reducing duplication
Stefano Lattarini [Fri, 13 Jan 2012 20:56:54 +0000 (21:56 +0100)]
tests: unify some tests on "make -n", reducing duplication

* tests/maken2.test: Merge into ...
* tests/maken.test: ... this test, to avoid unnecessary code
duplication.  Make checks depending on GNU make conditional to
the actual presence of GNU make.
* tests/maken4.test: Similarly, merge into ...
* tests/maken3.test: ... this test.
* tests/Makefile.am (TESTS): Remove maken2.test and maken4.test.

12 years agovala: use "$(am__cd) $(srcdir)", not "cd $(srcdir)"
Stefano Lattarini [Sat, 14 Jan 2012 08:57:55 +0000 (09:57 +0100)]
vala: use "$(am__cd) $(srcdir)", not "cd $(srcdir)"

* automake.in (lang_vala_finish_target): In the generated rules,
use '$(am__cd)', not bare 'cd', to chdir into $(scdir).  Issue
revealed by the maintainer check 'sc_cd_relative_dir'.

12 years agoMerge branch 'fix-pr10470' into maint
Stefano Lattarini [Fri, 13 Jan 2012 11:42:36 +0000 (12:42 +0100)]
Merge branch 'fix-pr10470' into maint

* fix-pr10470:
  dist: avoid $(distdir) removal failure on MSYS/MinGW
  coverage: expose automake bug#10470 (distcheck-related)

12 years agodist: avoid $(distdir) removal failure on MSYS/MinGW
Stefano Lattarini [Wed, 11 Jan 2012 17:09:07 +0000 (18:09 +0100)]
dist: avoid $(distdir) removal failure on MSYS/MinGW

This change fixes automake bug#10470.

On MSYS (1.0.17) it is not possible to remove a directory that is
in use, and this, together with timing issues, could cause spurious
failures in the cleanup code of the "distcheck" recipe.  In fact,
it should be noted that assuming a directory can be removed while
it the CWD of a running process is a POSIX violation:

  "If the directory is the root directory or the current working
   directory of any process, it is unspecified whether the function
   succeeds, or whether it shall fail and set errno to [EBUSY]."

* lib/am/distdir.am (am__remove_distdir): If rm fails, sleep some
seconds and retry, to give potential "pending" processes some time
to exit and "release" the directory.
* tests/Makefile.am (XFAIL_TESTS): Remove 'distcheck-pr10470.test'.

Report and suggestions by Peter Rosin and Eric Blake.

12 years agotests: fix spurious failure of 'get-sysconf.test'
Stefano Lattarini [Sun, 1 Jan 2012 18:06:00 +0000 (19:06 +0100)]
tests: fix spurious failure of 'get-sysconf.test'

* tests/get-sysconf.test: Do not assume that a ChangeLog file exists
in $(srcdir): now that the ChangeLog is autogenerated and not under
version control anymore, this is not necessary true.  Instead, if we
are running from a git checkout, use "git log" to get information on
the version of the automake snapshot being tested (and fall back on
extracting the first ChangeLog entry otherwise).

Reported by Jim Meyering in automake bug#10418.

Cherry picked from commit v1.11-1675-g104f302.