]> git.ipfire.org Git - thirdparty/automake.git/log
thirdparty/automake.git
13 years ago[ng] check: refactor (better names for internal vars)
Stefano Lattarini [Mon, 7 May 2012 15:02:01 +0000 (17:02 +0200)] 
[ng] check: refactor (better names for internal vars)

Rename some Automake-defined internal make variables as follows:

    am__TEST_BASES    =>  am__test_bases
    am__TEST_RESULTS  =>  am__test_results
    am__TEST_LOGS     =>  am__test_logs

* automake.in, lib/am/check.am, t/parallel-tests-empty-tests.sh,
t/test-trs-basic.sh, t/serial-tests.sh: Update accordingly.
* syntax-checks.mk (sc_no_am_TEST_BASES, sc_no_am_TEST_RESULTS,
sc_no_am_TEST_LOGS): New maintainer checks, to ensure the old
names are not used by mistake.
(syntax_check_rules): Add them.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] check: refactoring to reduce code duplication
Stefano Lattarini [Mon, 7 May 2012 14:57:24 +0000 (16:57 +0200)] 
[ng] check: refactoring to reduce code duplication

* lib/am/check.am (am__strip_suffixes): New internal function, factoring
the code used to "normalize" a list of test scripts (i.e., removing any
registered test extension and any leading $(srcdir) component).
(am__TEST_BASES, am__xfail_test_bases): Redefine using that function.
(am__cooked_tests, am__cooked_xfail_tests): Remove as obsolete.
* t/parallel-tests-empty-tests.sh: Don't bother checking the contents
of $(am__cooked_tests) anymore.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] refactor: get rid of am__EXEEXT (automake conditional and %transform)
Stefano Lattarini [Mon, 7 May 2012 14:38:12 +0000 (16:38 +0200)] 
[ng] refactor: get rid of am__EXEEXT (automake conditional and %transform)

We can substitute that with a static automake conditional %HANDLE-EXEEXT%
and a make runtime check on the non-emptiness of $(EXEEXT).

* automake.in (preprocess_file): New transform '%HANDLE-EXEEXT%', TRUE
if 'EXEEXT' has been AC_SUBST'd, FALSE otherwise.
(handle_tests): Don't define the transform '%HANDLE-EXEEXT%' anymore
when processing 'check.am': that is now done transparently by the
'preprocess_file' function.
(handle_per_suffix_test): Don't process the transform '%am__EXEEXT%'
anymore when reading 'check2.am'.  It's superseded by '%HANDLE-EXEEXT%'
and ...
* lib/am/check2.am [%HANDLE-EXEEXT%]: ... by a make-runtime check that
$(EXEEXT) is not empty.
* m4/init.m4 (AM_INIT_AUTOMAKE): Simplify, taking advantage of the fact
that we don't need the Automake conditional "am__EXEEXT" anymore.
* t/parallel-tests-exeext.sh: Tiny simplification.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] check: big refactoring with semantic changes in parallel-tests support
Stefano Lattarini [Sun, 15 Apr 2012 12:00:52 +0000 (14:00 +0200)] 
[ng] check: big refactoring with semantic changes in parallel-tests support

In this change, we move some further processing related to the parallel
testsuite harness support from Automake runtime to make runtime.

A welcome collateral effect of this is that we are now able to cope
with test scripts whose name ends with several concatenated suffixes.

Another (less welcome) collateral effect of the present change is that
the user now cannot override TEST_LOGS at make runtime anymore:

    # This won't work anymore!
    make check TESTS_LOGS="foo.log bar.log baz.log"

This admittedly is a small(ish) regression.  But it's not a real problem,
since we now explicitly allow *and document* that TESTS can be overridden
at runtime without bothering to add the test suffixes to its entries:

    # This will work even if complete names of the tests are (say)
    # "foo.test", "bar.test$(EXEEXT)" and "baz$(EXEEXT)".
    make check TESTS="foo bar baz"

With such usage, the user don't have to bother knowing which the exact
extensions of each tests are -- which was precisely the only advantage
of overriding TEST_LOGS instead of TESTS.

* NG-NEWS: Update.
* doc/automake.texi: Likewise.
* lib/am/header-vars.am (am__strip_suffixes_0, am__strip_suffixes): New
internal macros ...
* t/internals.tap: ... covered by new checks in this test, and used ...
* lib/am/check.am (am__xfail_test_bases): ... to define this new internal
variable in term of $(am__cooked_xfail_tests) (and thus eventually of
$(XFAIL_TESTS)), and to ...
(am__TEST_BASES): ... (re)define this pre-existing internal variable in
terms of $(am__cooked_tests) (and thus eventually of $(TESTS)), rather
than in terms of $(TEST_LOGS) as was done before.
(am__TEST_RESULTS, am__TEST_LOGS): Define in terms of $(am__TEST_BASES).
(TEST_LOGS): Define to $(am__TEST_LOGS), for backward-compatibility.
($(TEST_SUITE_LOG)): Depend on $(am__TEST_RESULTS) rather than on
$(TEST_LOGS).
(am__check_pre): Use $(am__xfail_test_bases) and new temporary shell
variable $f2, instead of $(am__cooked_xfail_tests) and $f, to decide
whether a test is expected to fail or not.
Fix some imprecise or botched comments since we are at it.
(check-TESTS, recheck): When re-invoking make recursively, override
am__TEST_BASES rather than TEST_LOGS.  Relate tweaks.
* automke.in (handle_tests): Pass new transform %HANDLE-EXEEXT% when
including check.am (used for the definitions of am__xfail_test_bases
and am__TEST_BASES).  Don't define the TEST_LOGS make variable, nor the
auxiliary make variables am__test_logs1, am__test_logs2, etc.  Put
$(am__TEST_LOGS) and $(am__TEST_RESULTS) among the "mostlyclean" files
(rather than "$(TEST_LOGS)" and "$(TEST_LOGS:.log=.trs)" as before).
* t/parallel-tests-concatenated-suffix.sh: New test.
* t/nodeps.sh: Delete, it was causing too much spurious failures.
* t/color2.sh: Avoid a spurious failure by not calling make with
the '-e' flag.
* t/parallel-tests-exeext.sh: Extended to check the user is not
forced to specify the test suffixes nor the $(EXEEXT) suffix
when overriding TESTS on the command line.
* t/check-concurrency-bug9245.sh: Adjust to the new semantics of "no
TEST_LOGS overriding from the command line".
* t/parallel-tests-cmdline-override.sh: Likewise.
* t/parallel-tests-dynamic.sh: Likewise.
* t/parallel-tests-fork-bomb.sh: Likewise.
* t/parallel-tests-log-override-2.sh: Likewise.
* t/tap-basic.sh: Likewise.
* t/test-driver-custom-multitest-recheck2.sh: Likewise.
* t/test-missing.sh: Likewise.
* t/test-trs-basic.sh: Likewise.
* t/test-trs-recover.sh: Likewise.
* t/parallel-tests-empty-tests.sh: Likewise, and extended to check
that an empty TESTS produces am__cooked_tests, am__TEST_RESULTS,
am__TEST_BASES and am__TEST_LOGS that are empty as well.
* t/parallel-tests.sh: Adjust to the new semantics of "no TEST_LOGS
overriding from the command line". Remove a workaround required only
by HP-UX make.  Make some "FIXME"-style comments stick out.
* t/serial-tests.sh: Adjust some checks that grep the Automake
generated Makefile.in.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] coverage: more on make variable memoization
Stefano Lattarini [Wed, 16 May 2012 08:02:52 +0000 (10:02 +0200)] 
[ng] coverage: more on make variable memoization

* t/memoize.tap: Four new tests: three on memoized variables expanded
as arguments of a function call, one on memoized variables expanded
inside other memoized variables.  While we are at it, improve brief
description of few existing tests.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] memoize: correctly work around a bug of GNU make < 3.83
Stefano Lattarini [Tue, 15 May 2012 10:36:37 +0000 (12:36 +0200)] 
[ng] memoize: correctly work around a bug of GNU make < 3.83

This is a follow-up to commit v1.12-218-g34a7d42 of 2012-05-15,
"[ng] memoize: expose a serious bug (affecting GNU make < 3.83)".

We implement a new workaround aimed at avoiding the subtle GNU make
bug affecting variable memoization:

  <http://lists.gnu.org/archive/html/bug-make/2012-05/msg00013.html>
  <https://savannah.gnu.org/patch/?7534>

Since that bug basically prevents dynamically reassigning to a variable
inside the expansion of the variable itself, we reimplement memoization
by having the memoized variable expanding to an $(if) branching either
to evaluate-and-store in *another* memo variable, else to the value of
that memo variable.

The new workaround works also in the situation that was causing our
previous workaround (as implemented in commit v1.12-217-gd55204f of
2012-05-12, "[ng] vars: implement memoization of make variables (new
'am__memoize' func)") to fail.

Approach suggested by Akim Demaille:
<http://lists.gnu.org/archive/html/automake-ng/2012-05/msg00074.html>
and coded by Stefano Lattarini.

* lib/am/header-vars (am__memoize): Change API and implementation.
(am__memoize_0): Delete, it's not needed anymore.
* t/memoize.tap: Update to new API, also removing checks that makes no
more sense with it.
* t/spy-override.sh: Delete, it's not needed anymore.

Co-authored-by: Akim Demaille <akim@lrde.epita.fr>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] coverage: test memoize on variable with long name and long content
Stefano Lattarini [Tue, 15 May 2012 09:25:05 +0000 (11:25 +0200)] 
[ng] coverage: test memoize on variable with long name and long content

* t/memoize.sh: Enhance.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] memoize: expose a serious bug (affecting GNU make < 3.83)
Stefano Lattarini [Tue, 15 May 2012 09:18:17 +0000 (11:18 +0200)] 
[ng] memoize: expose a serious bug (affecting GNU make < 3.83)

This is a follow-up to commit v1.12-217-gd55204f of 2012-05-12,
"[ng] vars: implement memoization of make variables (new 'am__memoize'
func)".

So, apparently, all our workarounds aimed at avoiding the subtle GNU
make bug affecting variable memoization:

  <http://lists.gnu.org/archive/html/bug-make/2012-05/msg00013.html>
  <https://savannah.gnu.org/patch/?7534>

have not been enough :-(

When trying to use 'am__memoize' in a non-trivial setup (to optimize
the new form of the parallel-tests harness implemented by the series
http://lists.gnu.org/archive/html/automake-ng/2012-05/msg00015.html),
we stumbled upon that bug again.  At this point, it's quite clear that
there is no safe way to safely avoid it, so we'll have to find a way
to enable memoization (that is just an optimization) only with GNU
make >= 3.83 (once that is out).

Here, we just enhance our testsuite to expose the (re)discovered
issue.

* t/memoize.tap: Enhance.  The new check fails with GNU make <= 3.82,
and passes with the development version of GNU make (which should
become GNU make 3.83 eventually).

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] vars: implement memoization of make variables (new 'am__memoize' func)
Stefano Lattarini [Sat, 12 May 2012 12:03:26 +0000 (14:03 +0200)] 
[ng] vars: implement memoization of make variables (new 'am__memoize' func)

This is a preparatory patch that introduces on-demand memoization through
the use of the new internal make function 'am__memoize'.  Rationale and a
more detailed explanation follow.

In GNU make (as well as in portable make), "recursive" variables (the
default kind, deriving from assignments like "var = value") have their
value recomputed every time they get expanded.

Most of the time, this has no actual impact on performance, since the
value of a recursive variable is usually either static:

    prefix = /usr/local

or only contains references to other recursive variables with static
values:

    datadir = ${prefix}/share

In other cases, though, the expansion of the value might require some
non-trivial calculation, or other time-costly operation:

    TESTS = $(sort LONG-LIST-OF-FILES)
    VC-VERSION = $(shell git describe)

Having such operation performed over and over again (each time the
variable is expanded) might become inefficient, sometimes intolerably
so.

"Immediate" variables (deriving from assignments like "var := value")
are better in this respect, since their definition evaluates the RHS
(Right-Hand Side) immediately, and only once.

But immediate variables have their drawbacks as well.

First of all, the fact that the RHS is expanded immediately means that
the definition of immediate variables is overly sensitive to ordering,
in that any variable referenced in the RHS must be completely defined
before the definition of the affected immediate variable is seen.
Ensuring this might be tricky in general, and even more so with Automake,
which performs non-trivial reordering of make variable.

Also, the RHS of an immediate variable definition is computed
unconditionally, which might be wasteful if only few of the immediate
variables defined in the Makefile are actually going to be used in
a given make invocation.

So we'd like to go for a good middle ground solutions: implementing
memoization for recursive-evaluations variable which are expected to
be expanded often.

Apparently, this is easy to do:

    LAZY-VAR = $(override LAZY-VAR := VALUE)$(LAZY-VAR)

But alas, a bug in all the GNU make versions up to *and including* 3.82
prevents the above to working correctly in some non-uncommon situations:

    <http://lists.gnu.org/archive/html/bug-make/2012-05/msg00013.html>
    <https://savannah.gnu.org/patch/?7534>

Still, we *seem* to have found an implementation that works around the
above issue.  Referencing again the examples above, we would now write
something like this:

    memo/TESTS = $(sort LONG-LIST-OF-FILES)
    memo/VC-VERSION = $(shell git describe)
    $(call am__memoize, TESTS VC-VERSION)

This API is a little more verbose and clumsy than we'd like, but since
it apparently doesn't tickle the nasty bug referenced above, we'll stick
with it for the moment.

The idea of memoizing recursive variables stemmed from a suggestion
by Akim Demaille:
<http://lists.gnu.org/archive/html/automake-ng/2012-05/msg00062.html>

* lib/am/header-vars.am (am__memoize): New internal function.
(am__memoize_0): Likewise.
* t/memoize.tap: New test, checking $(am__memoize).
* t/spy-override.sh: New test, check that we can use the 'override'
directive as we do in the 'am__memoize' implementation.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'ng/distdir-refactor' into ng/master
Stefano Lattarini [Fri, 11 May 2012 11:21:27 +0000 (13:21 +0200)] 
Merge branch 'ng/distdir-refactor' into ng/master

* ng/distdir-refactor:
  [ng] dist: optimize calculation of list of distributed file
  [ng] dist: rename some non-public vars to make clear they are internal
  [ng] dist: strip duplicates from dist files at make (not automake) runtime
  [ng] dist: simplify VPATH handling

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] dist: optimize calculation of list of distributed file
Stefano Lattarini [Fri, 4 May 2012 00:26:30 +0000 (02:26 +0200)] 
[ng] dist: optimize calculation of list of distributed file

Our implementation of the $(am__uniq) make function is slow as
hell when applied to big lists.  Since that function is used to
(re)calculate the list of distributed files, its inefficiency
reflects on *every* run of a Makefile generated by Automake which
distributes a lot of files.  For example, a null build of the
Automake tree now takes 20 seconds (!) on my Debian system, while
earlier it was practically instantaneous (less than half a second).

Luckily, the GNU make manual documents that the $(sort) built-in
also strip duplicates from the sorted list.  Since we don't care
about the order of the distributed files (or directories thereof),
we can use $(sort ...) instead of $(call am__uniq, ...), and live
happily.

* lib/am/distdir.am (am__dist_files)_: Uniqify content using
'$(sort)', not '$(am__uniq)'.
(am__dist_parent_dirs): Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'ng/no-suffixe-rules' into ng/master
Stefano Lattarini [Thu, 10 May 2012 14:41:32 +0000 (16:41 +0200)] 
Merge branch 'ng/no-suffixe-rules' into ng/master

* ng/no-suffixe-rules:
  [ng] cleanup: &Automake::Variable::hook is unused, remove it
  [ng] rules: forbid old-fashioned suffix rules, prefer pattern rules
  [ng] rules: can pass deps to &Automake::Rule::define
  [ng] am: prefer pattern rules over old-fashioned suffix rules

13 years ago[ng] cleanup: &Automake::Variable::hook is unused, remove it
Stefano Lattarini [Thu, 10 May 2012 10:55:04 +0000 (12:55 +0200)] 
[ng] cleanup: &Automake::Variable::hook is unused, remove it

* lib/Automake/Variable.pm (hook): Delete, it's not used anymore.
(%_hooks): Likewise.
(define): Don't process variable hooks anymore.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] rules: forbid old-fashioned suffix rules, prefer pattern rules
Stefano Lattarini [Wed, 9 May 2012 15:57:59 +0000 (17:57 +0200)] 
[ng] rules: forbid old-fashioned suffix rules, prefer pattern rules

Pattern rules are cleaner, safer, and vouched for in the GNU make manual
itself.  Supporting them instead of suffix rules will also allow us to
simplify a little the automake script, auxiliary perl modules, and
documentation.

This change introduces a slight backward-incompatibility now, in that
user provided definitions of the SUFFIXES variable or of the .SUFFIXES
target, as well as old-fashioned suffix rules, are now rejected.

Automake-NG still tries to parse and understand suffix-based pattern
rules though, to retain support for user-added file extensions in the
_SOURCES variables (see "Handling new file extensions" in the Automake
manual).

So, an usage like:

    SUFFIXES = .baz .c
    .baz.c:
            cp $< $@
    foo_SOURCES = foo.c bar.baz
    DISTCLEANFILES = bar.c

which was valid with mainline Automake, should be translated for
Automake-NG as:

    %.c: %.baz
            cp $< $@
    bin_PROGRAMS = foo
    foo_SOURCES = foo.c sub/bar.baz
    DISTCLEANFILES = bar.c

Note that suffix-based pattern rules with dot-less suffix are *not*
supported.

* NG-NEWS: Update.
* doc/automake.texi: Likewise.
* lib/am/footer.am: Declare '.SUFFIXES:' with empty dependencies, to
neutralize the default suffix rules.
* automake.in (&handle_footer): Reject the 'SUFFIXES' variable.  Don't
process its content anymore.  Don't generate the .SUFFIXES special target
anymore.
(&var_SUFFIXES_trigger): Remove.  And don't install it as an hook for the
now-deprecated 'SUFFIXES' variable.
* lib/Automake/Rule.pm (&define): Don't process old-fashioned suffix
rules specially, but just reject them.  Instead, process pattern rules
specially.
($_SUFFIX_RULE_PATTERN): Made local to the '&define' function, renaming
it as '$suffix_rule_rx'.
(&suffixes, @_suffixes): Delete, they are no more used.
(@EXPORT): Adjust.
(register_suffix_rule): Don't extend '@_suffixes' anymore.
(reset): Don't reset '@_suffixes' anymore.
* t/ext3.sh: Remove as obsolete.
* t/suffix4.sh: Likewise.
* t/suffix6.sh: Likewise.
* t/suffix6b.sh: Likewise.
* t/suffix7.sh: Likewise.
* t/suffix11.tap: Likewise.
* t/suffix6c.sh: Rename ...
* t/suffix-obj.sh: .. like this, and adjust.
* t/suffix-chain.tap: Rewrite a as "simple" test (rather than as
a TAP test), adjust, and rename ...
* t/suffix-chain.sh: ... like this.
* t/suffix3.tap: Likewise rewrite and rename ...
* t/suffix3.sh: ... like this.
* t/suffix8.tap: Likewise rewrite and rename ...
* t/suffix8.sh: ... like this.
* t/suffix10.tap: Likewise rewrite and rename ...
* t/suffix10.sh: ... like this.
* t/suffix5.sh: Adjust.
* t/suffix9.sh: Likewise.
* t/suffix13.sh: Likewise.
* t/parallel-tests8.sh: Likewise.
* t/warnings-strictness-interactions.sh: Likewise.
* t/warnings-win-over-strictness.sh: Likewise.
* t/warnings-precedence.sh: Likewise.
* t/warnings-override.sh: Likewise.
* t/warning-groups-win-over-strictness.sh: Likewise.
* t/amopts-variable-expansion.sh: Likewise.
* t/specflg10.sh: Likewise.
* t/suffix-rules-reject.sh: New test.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] rules: can pass deps to &Automake::Rule::define
Stefano Lattarini [Thu, 10 May 2012 08:24:55 +0000 (10:24 +0200)] 
[ng] rules: can pass deps to &Automake::Rule::define

This change is only useful in view of future changes.

* lib/Automake/Rule.pm (define): Add parameter '$deps' (still unused).
Adjust comments and POD documentation.
* automake.in (file_contents_internal, read_am_file) [/$RULE_PATTERN/]:
Also pass the list of dependencies to the 'Automake::Rule::define'
invocation.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] am: prefer pattern rules over old-fashioned suffix rules
Stefano Lattarini [Wed, 9 May 2012 12:04:31 +0000 (14:04 +0200)] 
[ng] am: prefer pattern rules over old-fashioned suffix rules

The use of pattern rules is cleaner, safer, and vouched for in the
GNU make manual itself.  Moreover, it will allow us to obtain some
simplifications in the automake script and the documentation in
future changes.

* lib/am/texinfos.am: Turn this suffix rules into pattern rules.
* lib/am/texibuild.am: Likewise.
* lib/am/depend2.am: Likewise.
* lib/am/yacc.am: Likewise.
* lib/am/lex.am: Likewise.
* lib/am/lang-compile.am: Likewise.  Also, since we are at it, remove
extra blank lines and quote 'like this' rather than `like this'.
* t/ext.sh: Adjust.
* t/objc-basic.sh: Likewise.
* t/objcxx-basic.sh: Likewise.
* t/txinfo6.sh: Likewise.
* t/suffix.sh: Likewise.
* t/suffix2.sh: Likewise.  Also, define a dummy LIBTOOL in Makefile.am
instead of requiring the libtool macros.
* t/cxx.sh: Remove as obsolete.
* t/nodep.sh: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] cleanup: remove unused function 'scan_variable_expansions'
Stefano Lattarini [Thu, 10 May 2012 11:00:18 +0000 (13:00 +0200)] 
[ng] cleanup: remove unused function 'scan_variable_expansions'

* lib/Automake/Variable.pm (scan_variable_expansions): Delete, it's
not used anymore since commit 'v1.11-1779-g9a82dcd' of 2012-02-23,
"[ng] vars: don't warn about non-POSIX names or GNU make function calls".

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] cleanup: use .DEFAULT_GOAL to set the default rule
Stefano Lattarini [Wed, 9 May 2012 09:55:38 +0000 (11:55 +0200)] 
[ng] cleanup: use .DEFAULT_GOAL to set the default rule

This change should introduce no semantic change, but allows
a minor simplification in automake.in.

* automake.in ($output_all): Don't define nor use anymore,
its role and function merged with '$output_rules'.
* lib/am/header-vars.am (.DEFAULT_GOAL): Define to 'all'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] news: resync with changes in Automake master
Stefano Lattarini [Wed, 9 May 2012 09:38:20 +0000 (11:38 +0200)] 
[ng] news: resync with changes in Automake master

* NG-NEWS: Don't list the fact that "support for silent rules is now
always active in Makefiles generated by Automake-NG" as a news entry.
That is now true also for the development version of Automake (since
commit 'v1.12-34-g14141f2' of 2012-05-01, "silent rules: support for
them is always active now".

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'master' into ng/master
Stefano Lattarini [Tue, 8 May 2012 11:25:28 +0000 (13:25 +0200)] 
Merge branch 'master' into ng/master

* master:
  fixup: s/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/ in 't/confsub.sh'
  tests: fix a spurious failure with dash
  test defs: fix indentation (cosmetic change)
  tests: remove obsolete uses of $sh_errexit_works
  configure: search a sturdy POSIX shell to be used in the testsuite
  tests: shell running test scripts is now named AM_TEST_RUNNER_SHELL
  fixup: distribute t/README
  init: warn against obsolete usage of AM_INIT_AUTOMAKE

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agofixup: s/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/ in 't/confsub.sh'
Stefano Lattarini [Tue, 8 May 2012 11:22:59 +0000 (13:22 +0200)] 
fixup: s/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/ in 't/confsub.sh'

Issue introduced in the recent merge 'v1.12-101-g12405c9'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'maint'
Stefano Lattarini [Tue, 8 May 2012 10:49:36 +0000 (12:49 +0200)] 
Merge branch 'maint'

* maint:
  tests: fix a spurious failure with dash
  test defs: fix indentation (cosmetic change)
  tests: remove obsolete uses of $sh_errexit_works
  configure: search a sturdy POSIX shell to be used in the testsuite
  tests: shell running test scripts is now named AM_TEST_RUNNER_SHELL
  fixup: distribute t/README
  init: warn against obsolete usage of AM_INIT_AUTOMAKE

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'testsuite-saner-shell' into maint
Stefano Lattarini [Mon, 7 May 2012 20:11:28 +0000 (22:11 +0200)] 
Merge branch 'testsuite-saner-shell' into maint

* testsuite-saner-shell:
  tests: fix a spurious failure with dash
  test defs: fix indentation (cosmetic change)
  tests: remove obsolete uses of $sh_errexit_works
  configure: search a sturdy POSIX shell to be used in the testsuite
  tests: shell running test scripts is now named AM_TEST_RUNNER_SHELL

13 years agotests: fix a spurious failure with dash
Stefano Lattarini [Mon, 23 Apr 2012 17:03:33 +0000 (19:03 +0200)] 
tests: fix a spurious failure with dash

The dash shell, at least version 0.5.5.1, doesn't always bail out
with a syntax error when a stray "fi" in encountered:

  $ dash -c ":; fi"; echo stat = $?
  stat = 0

See also the relevant bug report:

  <http://permalink.gmane.org/gmane.comp.shells.dash/717>

This behaviour was causing a spurious error in our testsuite.  Fix it.

* t/self-check-exit.tap: Use a stray parentheses rather than a stray
'fi' to trigger a syntax error.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agotest defs: fix indentation (cosmetic change)
Stefano Lattarini [Wed, 28 Dec 2011 12:23:31 +0000 (13:23 +0100)] 
test defs: fix indentation (cosmetic change)

* defs (exit trap): Fix indentation left botched by previous
patch 'v1.11b-51-g626bf65'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agotests: remove obsolete uses of $sh_errexit_works
Stefano Lattarini [Wed, 28 Dec 2011 12:23:31 +0000 (13:23 +0100)] 
tests: remove obsolete uses of $sh_errexit_works

After the last changes, configure will ensure that the shell
selected to run the test scripts can correctly propagate exit
status to the exit trap when 'set -e' is in effect.

* configure.ac (sh_errexit_works): Do not AC_SUBST it anymore.
* defs-static.in (sh_errexit_works): Do not initialize
from the AC_SUBST value anymore.
* defs (trap): Trap the EXIT signal unconditionally.
* t/self-check-explicit-skips.sh: Do not skip the test if
'$sh_errexit_works' is != "yes", this check doesn't make
sense anymore.
* t/self-check-cleanup.tap: Likewise.
* t/self-check-exit.tap: Assume the exit trap is always
installed by ./defs.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoconfigure: search a sturdy POSIX shell to be used in the testsuite
Stefano Lattarini [Wed, 28 Dec 2011 12:23:31 +0000 (13:23 +0100)] 
configure: search a sturdy POSIX shell to be used in the testsuite

* configure.ac: Add code (partially inspired to checks in gnulib's
'tests/init.sh') to search for a good-enough, not-buggy POSIX/XSI
shell to be used in our testsuite.  Accordingly AC_SUBSTitute the
variable 'AM_TEST_RUNNER_SHELL'.
* NEWS: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agotests: shell running test scripts is now named AM_TEST_RUNNER_SHELL
Stefano Lattarini [Wed, 28 Dec 2011 12:23:31 +0000 (13:23 +0100)] 
tests: shell running test scripts is now named AM_TEST_RUNNER_SHELL

This is just a preparatory refactoring for future changes.

* configure.ac (AM_TEST_RUNNER_SHELL): New variable, defined
to $SHELL', and AC_SUBST'd.
* Makefile.am (LOG_COMPILER): Redefine from $(SHELL) to
$(AM_TEST_RUNNER_SHELL).
* defs: Adjust to use $AM_TEST_RUNNER_SHELL instead
of $CONFIG_SHELL and/or $SHELL, where appropriate.  Minor
opportunistic changes.
* t/self-check-explicit-skips.sh: Likewise.
* t/self-check-sanity.sh: Likewise.
* t/self-check-tap.sh: Likewise.
* t/self-check-cleanup.tap: Likewise.
* t/self-check-dir.tap: Likewise.
* t/self-check-env-sanitize.tap: Likewise.
* t/self-check-exit.tap: Likewise.
* t/self-check-me.tap: Likewise.
* t/self-check-reexec.tap: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agofixup: distribute t/README
Stefano Lattarini [Sun, 6 May 2012 11:33:09 +0000 (13:33 +0200)] 
fixup: distribute t/README

Since commit v1.11-2128-g8e02441 of 2012-04-06, "maint: no more make
recursion in Automake's build system" we haven't been distributing the
testsuite README file in our release tarballs.  Oops.

* Makefile.am (EXTRA_DIST): Add 't/README'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] dist: rename some non-public vars to make clear they are internal
Stefano Lattarini [Thu, 3 May 2012 16:56:57 +0000 (18:56 +0200)] 
[ng] dist: rename some non-public vars to make clear they are internal

The variable $(DISTFILES), $(DIST_COMMON) and $(DIST_SOURCES) have never
been documented, and they were always intended to be internal variables.
This is absolutely not evident from their names, though.  So rename them
like this:

    DISTFILES     =>  am__dist_files
    DIST_COMMON   =>  am__dist_common
    DIST_SOURCES  =>  am__dist_sources

* NG-NEWS: Update.
* automake.in: Adjust code and comments.
* lib/am/configure.am, lib/am/data.am, lib/am/java.am, lib/am/lisp.am,
lib/am/python.am, lib/am/scripts.am, lib/am/texi-vers.am: Likewise.
* lib/am/distdir.am: Likewise, and related variable renamings.
And throw in a few improvements to comments since we are at it.
* Several tests: Adjust.
* syntax-checks.mk: Add rules (and supporting variables) verifying
that the obsolete 'DIST*' variables are actually not used anymore.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] dist: strip duplicates from dist files at make (not automake) runtime
Stefano Lattarini [Thu, 3 May 2012 16:56:57 +0000 (18:56 +0200)] 
[ng] dist: strip duplicates from dist files at make (not automake) runtime

We can do this thanks to the new make macros '$(am__uniq)' introduced in
the recent commit 'v1.12-145-g112d08a'.

* automake.in (handle_dist): Don't "uniq"ify the contents of DIST_COMMON
here, but instead ...
* lib/am/distdir.am: ... "uniq"ify the contents of DISTFILES here.
* t/dist-repeated.sh: Remove sanity check checking for a once expected
invariant that is not there anymore now.
* t/distcom4.sh, t/distcom5.sh: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] dist: simplify VPATH handling
Stefano Lattarini [Tue, 24 Apr 2012 17:50:00 +0000 (19:50 +0200)] 
[ng] dist: simplify VPATH handling

Now that we don't need to cater to Sun and Tru64 make, we can simplify
and rationalize our VPATH support in the creation of the distribution
directory.  Since we are at it, we clarify some existing comments, add
some new ones, and remove the obsolete ones.

This change has a little collateral effect in that after it the use of
"bare" wildcards in EXTRA_DIST does not work as intended anymore:

    # Won't distribute all test files in the builddir anymore.
    EXTRA_DIST = *.test

One will have to use the $(wildcard) GNU make builtin instead, as in:

    EXTRA_DIST = $(wildcard *.test)

This new limitation is deemed acceptable, especially because "bare"
wildcards suffer of a number of issues and inconsistencies, and their
use is mostly deprecated in favor of the $(wildcard) builtin (refer
to the GNU make manual for more details).

* lib/am/distdir.am (distdir): Extend the comments explaining why, while
filling up the dist directory, we need to check whether any distributed
file already exists in there; in particular, refer to some relevant bug
numbers and past commit IDs.  Remove workarounds and hack required to
support automatic VPATH rewrites with Sun and Tru64 make.  Refactor the
recipe using ...
(am__dist_files_1, am__dist_files_2, am__dist_files,
am__dist_parent_dirs): This new internal custom GNU make macros.
* NG-NEWS: Document that "bare" wildcards are not supported anymore
in EXTRA_DIST definition.
* t/extra12.sh: Adjust accordingly.
* t/nodep.sh: Remove, it's giving too much false positives to be
usable.
* t/dist-srcdir.sh: New test.
* t/dist-srcdir2.sh: New test, xfailing.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoinit: warn against obsolete usage of AM_INIT_AUTOMAKE
Stefano Lattarini [Sat, 31 Mar 2012 14:39:32 +0000 (16:39 +0200)] 
init: warn against obsolete usage of AM_INIT_AUTOMAKE

Support for the two- and three-arguments invocation forms of the
AM_INIT_AUTOMAKE macro, as in:

  AM_INIT_AUTOMAKE($PACKAGE, $VERSION)

or:

  AM_INIT_AUTOMAKE($PACKAGE, $VERSION, NODEFINE)

will be removed in the next major Automake release (1.13).

Such usages have already been deprecated in the documentation
starting from commit v1.11-2015-ge99690a of 23-02-2012 "docs,
news: document planned removal of obsolete macros and features".

We now start giving runtime warnings as well (in the 'obsolete'
category).

* NEWS: Update.
* m4/init.m4 (AM_INIT_AUTOMAKE): Report the two- and three-arguments
form invocation.
* automake.in (scan_autoconf_traces): Likewise.
* doc/automake.texi: Minor adjustments.  Add an @anchor to the
location where it's described how to modernize outdated invocation
of AM_INIT_AUTOMAKE, so that it can be referenced from automake
warning/error messages.
* t/aminit-moreargs-deprecation.sh: New test.
* tests/list-of-tests.mk: Add it.
* tests/ac-output-old.tap: Adjust by calling automake with the
warnings in the 'obsolete' category disabled.
* t/backcompat.test: Likewise.
* t/backcompat3.test: Likewise.
* t/backcompat5.test: Likewise.
* t/backcompat6.test: Likewise.
* t/version.test: Likewise.
* t/version2.test: Likewise.
* t/pr2.test: Modernize style of AC_INIT and AM_INIT_AUTOMAKE
invocations, and use proper m4 quoting.
* t/pr87.test: Likewise.
* t/confsub.test: Likewise.
* t/install2.test: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'master' into ng/master
Stefano Lattarini [Sun, 6 May 2012 09:24:28 +0000 (11:24 +0200)] 
Merge branch 'master' into ng/master

* master:
  m4: prepend m4 builtins with "m4_"
  require: autoconf >= 2.65; related simplifications
  docs: fix clumsy grammar in the scripts-based testsuite chapter
  tests: use append mode to capture parallel make output
  parallel-tests: separate different logs with an empty line

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'maint'
Stefano Lattarini [Sun, 6 May 2012 09:04:45 +0000 (11:04 +0200)] 
Merge branch 'maint'

* maint:
  m4: prepend m4 builtins with "m4_"
  docs: fix clumsy grammar in the scripts-based testsuite chapter

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agom4: prepend m4 builtins with "m4_"
Stefano Lattarini [Sun, 6 May 2012 08:15:59 +0000 (10:15 +0200)] 
m4: prepend m4 builtins with "m4_"

The comments in 'lib/autoconf/autoconf.m4' from Autoconf 2.69 read:

  We discourage the use of the non prefixed macro names: M4sugar maps
  all the builtins into 'm4_'.  Autoconf has been converted to these
  names too.  But users may still depend upon these, so reestablish
  them.

Alas, in our init.m4 files, we were still using m4 builtins without
prefixing them with "m4_".  Not nice for a package that is one of the
major clients of Autoconf, and an integral part of the GNU Autotools!

Fix the issue.

* m4/init.m4 (AM_INIT_AUTOMAKE): Use 'm4_define' and 'm4_defn' instead
of 'define' and 'defn'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agorequire: autoconf >= 2.65; related simplifications
Stefano Lattarini [Sat, 5 May 2012 19:48:49 +0000 (21:48 +0200)] 
require: autoconf >= 2.65; related simplifications

The new support for Objective C++ (to be added in Automake 1.12.1) can be
simplified if we assume Autoconf version 2.65 or later (2.65 being the
version that introduced support for Objective C++).  Since such an Autoconf
version is two and half years old now (and will likely be almost three
years old when Automake 1.13 gets released), requiring it is acceptable.
This will also simplify testing and maintenance of Automake, because we'll
need to test with fewer Autoconf version, and possibly rely on new Autoconf
features.

* NEWS (Version requirements): Automake 1.13 will require Autoconf
2.65 or later.
* configure.ac ($required_autoconf_version): Bump to 2.65.
* m4/init.m4 (AM_INIT_AUTOMAKE): Require Autoconf >= 2.65.
Assume AC_PROG_OBJCXX is unconditionally defined.
* m4/depout.m4: Adjust a comment about a nugget of defensive programming.
* t/ext.sh: Assume that AC_PROG_OBJCXX is unconditionally defined,
and that we are using Autoconf >= 2.65.  Related simplifications.
* t/objc-megademo.sh: Likewise.
* t/objcxx-basic.sh: Likewise.
* t/objcxx-deps.sh: Likewise.
* t/objcxx-flags.sh: Likewise.
* t/objcxx-minidemo.sh: Likewise.
* t/nodep2.sh: Likewise.
* t/backcompat3.sh: Assume AC_INIT accepts an URL argument.
* t/depend5.sh: Adjust a comment.
* syntax-checks.mk (sc_test_names): Delete this check as now useless:
autoconf >= 2.65 (>= 2.63, actually) can handle arguments to AC_INIT
that contain or are m4 builtins or predefined macros.
(m4_builtin): Delete this now-useless variable as well, was used only
by the check above.
(syntax_check_rules): Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agodocs: fix clumsy grammar in the scripts-based testsuite chapter
Nick Alcock [Fri, 4 May 2012 14:14:43 +0000 (15:14 +0100)] 
docs: fix clumsy grammar in the scripts-based testsuite chapter

* doc/automake.texi (Scripts-based Testsuites): "We'll have later" is
a rare example of English in the Automake manual clearly not written
by a native English-speaker: while comprehensible, it can be better
formulated.

Copyright-paperwork-exempt: yes
Signed-off-by: Nick Alcock <nick.alcock@oracle.com>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'maint'
Stefano Lattarini [Sat, 5 May 2012 17:28:35 +0000 (19:28 +0200)] 
Merge branch 'maint'

* maint:
  tests: use append mode to capture parallel make output
  parallel-tests: separate different logs with an empty line

13 years agotests: use append mode to capture parallel make output
Stefano Lattarini [Sat, 5 May 2012 17:22:40 +0000 (19:22 +0200)] 
tests: use append mode to capture parallel make output

This should fix the spurious failure reported in automake bug#11413.

This is due to the fact that the redirected output of parallel make
can racily loose lines.  For example, if GNU make (3.82) is run on
a Makefile like this:

  all = 0 1 2 3 4 5 6 7 8 9
  default: $(all)
  $(all):
        @sleep 0.$$(($RANDOM % 10)); echo $@

and has its standard output redirected in overwrite-mode to a regular
file, it looses a line of that output every 15 runs or so on a Fedora
17 system with 64 ppc64 cores and Linux 3.3.1.  Redirection in append
mode does not suffer of this problem.

See also similar commit 'Release-1-10-280-g6426999' of 2009-03-10,
"Use append mode to capture parallel test output", which tackled a
similar problem for 't/parallel-tests3.sh' and 't/lisp8.sh'.

* t/tap-more.sh: Use append mode for output from "make -j", to avoid
dropped lines.
* t/parallel-tests3.sh, t/lisp8.sh: Enhance comments.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'parallel-tests-performance' into maint
Stefano Lattarini [Sat, 5 May 2012 14:39:10 +0000 (16:39 +0200)] 
Merge branch 'parallel-tests-performance' into maint

* parallel-tests-performance:
  parallel-tests: separate different logs with an empty line

13 years agoparallel-tests: separate different logs with an empty line
Stefano Lattarini [Sat, 5 May 2012 14:33:36 +0000 (16:33 +0200)] 
parallel-tests: separate different logs with an empty line

After commit v1.12-21-g5eeb366 "parallel-tests: optimize global log
creation", the log files copied in the global log are not anymore
separated by a blank line, causing unclear output like this:

  FAIL: test1
  ===========

  output from test 1
  FAIL: test2
  ===========

  output from test 2

where we would want something like this:

  FAIL: test1
  ===========

  output from test 1

  FAIL: test2
  ===========

  output from test 2

Fix this regression.

* lib/am/check.am (am__create_global_log): Print an extra empty line
after having displayed the content of a '.log' file.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'master' into ng/master
Stefano Lattarini [Sat, 5 May 2012 09:12:27 +0000 (11:12 +0200)] 
Merge branch 'master' into ng/master

* master: (27 commits)
  maintcheck: avoid a couple of spurious failures
  maintcheck: reduce code duplication, increase coverage
  maintcheck: avoid a couple of spurious failures
  tests: avoid spurious failure on missing Obj C/C++ compiler
  dist: don't bother putting README first in $(DIST_COMMON)
  news: document improvement in parallel-tests performance
  tests: fix spurious failure due to autom4te caching
  objc, objc++: test support for compilation flags
  objc, objc++: add stress test
  objc, objc++: test automatic dependency tracking
  objc: reorganize basic tests
  objc++, objc: add first semantic tests
  objc++: add first basic test
  news: fix typos
  aclocal: error out again on unrecognized arguments
  cosmetics: fix typo in aclocal m4 directory README
  silent rules: support for them is always active now
  parallel-tests: save few forks when possible
  cygnus: remove support for Cygnus-style trees
  cygnus: warn when it's used (flagged as 'obsolete' now)
  ...

Extra non-trivial edits:

* t/parallel-tests-unreadable.sh: Adjust to new error message for
I/O errors.
* t/silent6.sh: In Automake-NG, there is no 'portability-recursive'
warning category anymore.  Adjust accordingly.
* lib/am/check.am (am__create_global_log): Don't exit at the first
I/O error, but report as much as possible of them.  If we don't do
so, the test 't/parallel-tests-unreadable.sh' starts failing.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'maint'
Stefano Lattarini [Sat, 5 May 2012 08:57:27 +0000 (10:57 +0200)] 
Merge branch 'maint'

* maint:
  maintcheck: avoid a couple of spurious failures
  maintcheck: reduce code duplication, increase coverage

13 years agomaintcheck: avoid a couple of spurious failures
Stefano Lattarini [Fri, 4 May 2012 16:09:02 +0000 (18:09 +0200)] 
maintcheck: avoid a couple of spurious failures

* t/objcxx-deps.sh, t/objcxx-minidemo.sh: In C++ files, use
"std::cout <<", not "cout <<", to avoid triggering a spurious
failure by the syntax check 'sc_tests_here_document_format'.

Cherry-picked from yesterday's commit v1.12-81-g7f3f467, that
had erroneously been applied to 'master' only rather than to
'maint'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agomaintcheck: reduce code duplication, increase coverage
Stefano Lattarini [Sat, 5 May 2012 00:01:20 +0000 (02:01 +0200)] 
maintcheck: reduce code duplication, increase coverage

* syntax-checks.mk: Move ...
(sc_tests_plain_aclocal,
sc_tests_plain_autoconf,
sc_tests_plain_perl,
sc_tests_plain_autoupdate,
sc_tests_plain_automake,
sc_tests_plain_make,
sc_tests_plain_autoheader,
sc_tests_plain_autoreconf,
sc_tests_plain_autom4te): ... all these targets ...
(sc_tests_plain_egrep_fgrep): ... and part of this target ...
(sc_tests_plain_check_rules): ... into this variable, and
reimplement their recipes ...
($(sc_tests_plain_check_rules)): ... with this static pattern
rule.  Enhance the coverage they offer a little since we are
at it.
(sc_m4_am_plain_egrep_fgrep): New rule, the part of the old
'sc_tests_plain_egrep_fgrep' rule that checked for use of
'fgrep' and 'egrep' in *.am and *.m4 fragments (rather than
in test scripts).
(syntax_check_rules): Update.
* t/dist-formats.tap: Fix bad use of "make" instead of "$MAKE"
revealed by the extra coverage.
* t/cond5.sh, t/auxdir-autodetect.sh: Cosmetic changes to avoid
spuriously triggering the maintainer checks due to the
enhanced coverage.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agomaintcheck: avoid a couple of spurious failures
Stefano Lattarini [Fri, 4 May 2012 16:09:02 +0000 (18:09 +0200)] 
maintcheck: avoid a couple of spurious failures

* t/objcxx-deps.sh, t/objcxx-minidemo.sh: In C++ files, use
"std::cout <<", not "cout <<", to avoid triggering a spurious
failure by the syntax check 'sc_tests_here_document_format'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'maint'
Stefano Lattarini [Fri, 4 May 2012 15:46:51 +0000 (17:46 +0200)] 
Merge branch 'maint'

* maint:
  tests: avoid spurious failure on missing Obj C/C++ compiler
  objc, objc++: test support for compilation flags
  objc, objc++: add stress test
  objc, objc++: test automatic dependency tracking
  objc: reorganize basic tests
  objc++, objc: add first semantic tests
  objc++: add first basic test
  news: announce initial support for Objective C++
  objc++: test support for '.mm' suffix in _SOURCES entries
  objc++: add documentation
  objc++: initial support for Objective C++

13 years agoMerge branch 'objc++' into maint
Stefano Lattarini [Fri, 4 May 2012 15:32:08 +0000 (17:32 +0200)] 
Merge branch 'objc++' into maint

* objc++:
  tests: avoid spurious failure on missing Obj C/C++ compiler

13 years agotests: avoid spurious failure on missing Obj C/C++ compiler
Stefano Lattarini [Fri, 4 May 2012 15:31:06 +0000 (17:31 +0200)] 
tests: avoid spurious failure on missing Obj C/C++ compiler

* t/objc-megademo.sh: Arrange the test to SKIP, not FAIL, if there is
no Objective C or no Objective C++ compiler.  Since we are at it, remove
some checks that were actually testing Autoconf (not Automake) behaviour.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'objc++' into maint
Stefano Lattarini [Fri, 4 May 2012 11:24:23 +0000 (13:24 +0200)] 
Merge branch 'objc++' into maint

* objc++:
  objc, objc++: test support for compilation flags
  objc, objc++: add stress test
  objc, objc++: test automatic dependency tracking
  objc: reorganize basic tests
  objc++, objc: add first semantic tests
  objc++: add first basic test
  news: announce initial support for Objective C++
  objc++: test support for '.mm' suffix in _SOURCES entries
  objc++: add documentation
  objc++: initial support for Objective C++

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago[ng] general: some new internal macros and functions
Stefano Lattarini [Thu, 3 May 2012 16:34:09 +0000 (18:34 +0200)] 
[ng] general: some new internal macros and functions

These will be useful in future changes and refactorings.

* lib/am/header-vars.am (am__empty, am__lastword, am__firstword,
am__strip_lastword, am__strip_firstword, am__uniq): New functions
and macros.
(am__make_dryrun): Fix a typo in the comments for this variable
since we are at it.
* t/internals.tap: New test.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agodist: don't bother putting README first in $(DIST_COMMON)
Stefano Lattarini [Thu, 3 May 2012 15:30:56 +0000 (17:30 +0200)] 
dist: don't bother putting README first in $(DIST_COMMON)

Comments on some of our automake-time pre-processing of $(DIST_COMMON)
said that it was done in order to "put README first because it then
becomes easier to make a Usenet-compliant shar file".  But such a
format is hardly relevant anymore, and not worth the (albeit small)
added complexity.

* automake.in (handle_dist): Don't sort @dist_common.
(for_dist_common): Delete this function, is not used anymore.
* lib/am/distdir.am (DISTFILES): Remove obsolete comment.
* t/distcom4.sh: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'always-support-silent-rules'
Stefano Lattarini [Wed, 2 May 2012 16:15:41 +0000 (18:15 +0200)] 
Merge branch 'always-support-silent-rules'

* always-support-silent-rules:
  silent rules: support for them is always active now

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'maint'
Stefano Lattarini [Wed, 2 May 2012 16:14:55 +0000 (18:14 +0200)] 
Merge branch 'maint'

* maint:
  news: document improvement in parallel-tests performance
  tests: fix spurious failure due to autom4te caching
  news: fix typos
  aclocal: error out again on unrecognized arguments
  parallel-tests: save few forks when possible
  parallel-tests: optimize global log creation
  parallel-tests: optimize 'recheck' target for speed
  coverage: add performance tests on some parallel-tests aspects

13 years agonews: document improvement in parallel-tests performance
Stefano Lattarini [Wed, 2 May 2012 16:04:25 +0000 (18:04 +0200)] 
news: document improvement in parallel-tests performance

* NEWS: Document the improved performances of the parallel-tests targets
'check' and 'recheck'. See recent commits:

  - v1.12-20-gf5733aa of 2012-04-26,
    "parallel-tests: optimize 'recheck' target for speed"

  - v1.12-21-g5eeb366 of 2012-02-26,
    "parallel-tests: optimize global log creation"

  - v1.12-22-g4c2dd6e of 2012-04-30,
    "parallel-tests: save few forks when possible"

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years ago tests: fix spurious failure due to autom4te caching
Stefano Lattarini [Wed, 2 May 2012 15:47:56 +0000 (17:47 +0200)] 
 tests: fix spurious failure due to autom4te caching

Reported by Peter Breitenlohner :
<http://lists.gnu.org/archive/html/automake-patches/2012-05/msg00045.html>

* t/suffix.sh: 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).

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoobjc, objc++: test support for compilation flags
Stefano Lattarini [Tue, 1 May 2012 13:04:37 +0000 (15:04 +0200)] 
objc, objc++: test support for compilation flags

* t/objc-flags.sh, t/objcxx-flags.sh: New tests.
* t/list-of-tests.mk: Add them.

Co-authored-by: Peter Breitenlohner <peb@mppmu.mpg.de>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoobjc, objc++: add stress test
Peter Breitenlohner [Mon, 30 Apr 2012 14:11:03 +0000 (16:11 +0200)] 
objc, objc++: add stress test

* t/objc-megademo.sh: New test, trying out a package using all
of C, C++, Objective C and Objective C++ at the same time.
* t/list-of-tests.mk: Add it.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoobjc, objc++: test automatic dependency tracking
Stefano Lattarini [Mon, 30 Apr 2012 13:17:13 +0000 (15:17 +0200)] 
objc, objc++: test automatic dependency tracking

* t/objc-deps.sh, t/objcxx-deps.sh: New tests.
* t/list-of-tests.mk: Add them.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoobjc: reorganize basic tests
Stefano Lattarini [Mon, 30 Apr 2012 12:30:42 +0000 (14:30 +0200)] 
objc: reorganize basic tests

* t/objc.sh, t/objc2.sh: Removed, merged into ...
* t/objc-basic.sh: ... this new test.
* t/objcxx-basic.sh: Add reference to new sister test.
* t/list-of-tests.mk: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoobjc++, objc: add first semantic tests
Stefano Lattarini [Mon, 30 Apr 2012 12:17:44 +0000 (14:17 +0200)] 
objc++, objc: add first semantic tests

* t/objcxx-minidemo.sh: New test.
* t/objc-minidemo.sh: Likewise.
* t/list-of-tests.mk: Add them.

Co-authored-by: Peter Breitenlohner <peb@mppmu.mpg.de>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoobjc++: add first basic test
Peter Breitenlohner [Thu, 26 Apr 2012 23:00:27 +0000 (01:00 +0200)] 
objc++: add first basic test

* t/objcxx-basic.sh: New test.
* t/list-of-tests.mk: Add it.

Signed-off-by: Peter Breitenlohner <peb@mppmu.mpg.de>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'parallel-tests-performance' into maint
Stefano Lattarini [Wed, 2 May 2012 10:51:09 +0000 (12:51 +0200)] 
Merge branch 'parallel-tests-performance' into maint

* parallel-tests-performance:
  parallel-tests: save few forks when possible
  parallel-tests: optimize global log creation
  parallel-tests: optimize 'recheck' target for speed
  coverage: add performance tests on some parallel-tests aspects

13 years agonews: fix typos
Stefano Lattarini [Wed, 2 May 2012 07:48:11 +0000 (09:48 +0200)] 
news: fix typos

* NEWS (Bugs fixed in 1.12.1): Fix botched indentation of an entry,
add a forgotten "and", remove a redundant "the".

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoaclocal: error out again on unrecognized arguments
Stefano Lattarini [Tue, 1 May 2012 22:13:10 +0000 (00:13 +0200)] 
aclocal: error out again on unrecognized arguments

Starting from commit v1.11-662-g52246cc of 2102-02-18, "cmdline parsing:
move into a dedicated perl module", aclocal has been silently ignoring
non-option arguments instead of correctly reporting them.
Fix this regression.

* t/aclocal.sh: Update to catch the regression.
* aclocal.in (parse_arguments): Explicitly reject non-option arguments.
* NEWS: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'cygnus-remove'
Stefano Lattarini [Wed, 2 May 2012 08:52:18 +0000 (10:52 +0200)] 
Merge branch 'cygnus-remove'

* cygnus-remove:
  cygnus: remove support for Cygnus-style trees

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'maint'
Stefano Lattarini [Wed, 2 May 2012 08:26:12 +0000 (10:26 +0200)] 
Merge branch 'maint'

* maint:
  cosmetics: fix typo in aclocal m4 directory README
  cygnus: warn when it's used (flagged as 'obsolete' now)

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'cygnus-deprecate' into maint
Stefano Lattarini [Wed, 2 May 2012 07:59:46 +0000 (09:59 +0200)] 
Merge branch 'cygnus-deprecate' into maint

* cygnus-deprecate:
  cygnus: warn when it's used (flagged as 'obsolete' now)

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agocosmetics: fix typo in aclocal m4 directory README
Andrew Eikum [Tue, 1 May 2012 14:18:56 +0000 (09:18 -0500)] 
cosmetics: fix typo in aclocal m4 directory README

* m4/acdir/README: Add forgotten "if".
* THANKS: Update.

Copyright-paperwork-exempt: yes
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agosilent rules: support for them is always active now
Stefano Lattarini [Tue, 1 May 2012 12:23:04 +0000 (14:23 +0200)] 
silent rules: support for them is always active now

Before this change, support for silent rules was optional and activated
only if the 'silent-rules' option was specified.

The rationale behind that behaviour was that the silent-rules machinery
originally only worked with make implementations supporting nested
variables expansions, which isn't (or wasn't) a POSIX-specified features;
so that packages wanting to be "extra-portable" couldn't use the
silent-rules machinery at all.

But after Paul Eggert's commit 'v1.11-598-g8493499' of 25-12-2011,
"silent-rules: fallback for makes without nested vars" (motivated
by automake bugs #9928 and #10237), Makefiles generated when the
'silent-rules' option is enabled can work also with those make
implementations that don't support nested variables expansion (albeit
the configure-time selected verbosity cannot be overridden at make
runtime in such case).

In light of that, and since silent rules are disabled by default even
when the 'silent-rules' option is given (unless the developer explicitly
makes them enabled by default be calling "AM_SILENT_RULES([yes])" in
configure.ac), we can now have the support for silent rules always
enabled.

The 'silent-rules' option will thus become a no-op, but will reaming a
valid option for the time being, for better backward-compatibility.

A collateral effect of this change is that the use of the 'silent-rules'
option will not anymore automatically disable the warnings in the
'portability-recursive' category.

The present change is basically a backport of the Automake-NG commit
'v1.11d-75-g61ca923' of 19-04-2012, "[ng] silent rules: support for
them is always active now".  Stemmed by this thread on the Automake-NG
list:
<http://lists.gnu.org/archive/html/automake-ng/2012-04/msg00027.html>

* automake.in: Enable silent-rules machinery unconditionally.  Reword
some comments.  Do not switch off warnings in the category
'portability-recursive' anymore if the 'silent-rules' option is
given.
* m4/init.m4: Call 'AC_REQUIRE' on 'AM_SILENT_RULES' unconditionally.
* lib/Automake/Options.pm: Recognize 'silent-rules' as a dummy option.
Do not bother anymore checking that it is set in 'configure.ac'.
* t/silent.sh: Remove now-redundant calls to AM_SILENT_RULES.
* t/silent2.sh: Likewise.
* t/silent3.sh: Likewise.
* t/silent4.sh: Likewise.
* t/silent8.sh: Likewise.
* t/silent9.sh: Likewise.
* t/silent-lex.sh: Likewise.
* t/silent-many-gcc.sh: Likewise.
* t/silent-many-generic.sh: Likewise.
* t/silent-yacc-headers.sh: Likewise.
* t/silent-yacc.sh: Likewise.
* t/silentcxx-gcc.sh: Likewise.
* t/silentcxx.sh: Likewise.
* t/silentf77.sh: Likewise.
* t/silentf90.sh: Likewise.
* t/help-silent.sh: Likewise.
* t/silent-configsite.sh: Likewise, and other minor adjustments.
* t/silent7.sh: Likewise.  Also, extend to check that silent rules
are disabled by default, and remove obsoleted checks about the
'silent-rules' option being rejected in 'AUTOMAKE_OPTIONS'.
* t/silent6.sh: Remove now-redundant calls to 'AM_SILENT_RULES'.
Call automake with '-Wno-portability-recursive'.  Remove other
obsoleted checks.
* t/dollarvar.sh: Don't expect the use of 'AM_SILENT_RULES' in
'configure.ac' to disable warning in the 'portability-recursive'
category anymore.
* t/compile_f_c_cxx.sh: Adjust to avoid a spurious failure.
* t/silent-amopts.sh: Remove as obsolete.
* t/silent-nowarn.sh: Likewise.
* t/list-of-tests.mk: Adjust.
* NEWS: Update.
* doc/automake.texi: Update and simplify accordingly.
* configure.ac (AM_INIT_AUTOMAKE): Remove 'silent-rules' option.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'master' into ng/master
Stefano Lattarini [Tue, 1 May 2012 12:32:55 +0000 (14:32 +0200)] 
Merge branch 'master' into ng/master

* master:
  fixup: botched edit in bootstrap.sh

13 years agoMerge branch 'maint'
Stefano Lattarini [Tue, 1 May 2012 12:28:39 +0000 (14:28 +0200)] 
Merge branch 'maint'

* maint:
  fixup: botched edit in bootstrap.sh

13 years agofixup: botched edit in bootstrap.sh
Stefano Lattarini [Tue, 1 May 2012 12:25:51 +0000 (14:25 +0200)] 
fixup: botched edit in bootstrap.sh

* bootstrap.sh (dosubst): Fix botched option ("G" instead of "g")
in a sed "s///" expression.  Issue introduced in today's commit
'v1.12-17-g5f810d0'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'master' into ng/master
Stefano Lattarini [Tue, 1 May 2012 12:06:33 +0000 (14:06 +0200)] 
Merge branch 'master' into ng/master

* master:
  news: fix confusing wording
  news: fixed weaknesses in build system and testsuite
  bootstrap: consistently use correct copyright year
  fixup: remove leftover "TERM=ansi" definition in 't/color.sh'

13 years agoMerge branch 'maint'
Stefano Lattarini [Tue, 1 May 2012 12:04:56 +0000 (14:04 +0200)] 
Merge branch 'maint'

* maint:
  news: fix confusing wording
  news: fixed weaknesses in build system and testsuite
  bootstrap: consistently use correct copyright year
  fixup: remove leftover "TERM=ansi" definition in 't/color.sh'

13 years agonews: fix confusing wording
Stefano Lattarini [Tue, 1 May 2012 11:42:52 +0000 (13:42 +0200)] 
news: fix confusing wording

Reported by Dave Hart.

* NEWS (Future backward-incompatibilities): Fix possibly confusing
wording about the upcoming requirement of Autoconf >= 2.65.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agonews: fixed weaknesses in build system and testsuite
Stefano Lattarini [Tue, 1 May 2012 11:32:42 +0000 (13:32 +0200)] 
news: fixed weaknesses in build system and testsuite

* NEWS (Bugs fixed in 1.12.1): Report that several weaknesses in the
Automake's own build system and test suite have been fixed.  See for
example recent commits:
  - commit v1.12-5-geb7e8f3, for bug#11345
  - commit v1.12-5-g63e07a9, for bug#11346
  - commit v1.12-5-gf31fe4f
  - commit v1.12-10-gab14841
  - commit v1.12-19-g807f3cf, for bug#11369
  - commit v1.12-20-gd330368, for bug#11369
  - bug#11387, pre-emptively solved by commit v1.12-4-g444618b

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agobootstrap: consistently use correct copyright year
Stefano Lattarini [Tue, 1 May 2012 10:43:22 +0000 (12:43 +0200)] 
bootstrap: consistently use correct copyright year

Suggested by Peter Johansson in the discussion about automake bug#11356:
<http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11356#41>

* boostrap.sh (dosubst): Don't initialize the substituted value for the
release year from the current year (using `date +%Y`); instead, do it
through ...
($RELEASE_YEAR): ... this new statically-defined variable.  To ensure it
won't get out-of-sync, it will be automatically updated ...
* Makefile.am (update-copyright): ... by this target's recipe.
Since are at it, fix a botched output redirection for an error message,
i.e., use ">&2" instead of ">&1".

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'master' into ng/master
Stefano Lattarini [Mon, 30 Apr 2012 21:34:17 +0000 (23:34 +0200)] 
Merge branch 'master' into ng/master

* master:
  news: Automake 1.13 will require Autoconf >= 2.65
  news: put planned future backward-incompatibilities on top
  readme: update INSTALL to latest version from Autoconf
  sync: some auxiliary files synced from upstream
  hacking: copyright notices must be updated before releasing
  color-tests: coloring can be forced on non-ANSI terminals as well
  tests: root can write on files without write perms; cater for this
  tests: require lex, not yacc, in a lex test case
  AM_PROG_MKDIR_P: remove as obsolete
  AM_PROG_MKDIR_P: deprecate, to be removed in Automake 1.13
  maint: fix a comment typo

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agofixup: remove leftover "TERM=ansi" definition in 't/color.sh'
Stefano Lattarini [Mon, 30 Apr 2012 21:25:18 +0000 (23:25 +0200)] 
fixup: remove leftover "TERM=ansi" definition in 't/color.sh'

It should have actually be removed in commit 'v1.12-23-gb105d40'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoparallel-tests: save few forks when possible
Stefano Lattarini [Mon, 30 Apr 2012 20:18:24 +0000 (22:18 +0200)] 
parallel-tests: save few forks when possible

* lib/am/check.am (am__check_pre): Save some forks, by analyzing more
carefully the value of '$@' to decide how to extract its dirname part,
and whether that should be created as a directory.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'maint'
Stefano Lattarini [Mon, 30 Apr 2012 20:07:15 +0000 (22:07 +0200)] 
Merge branch 'maint'

* maint:
  news: Automake 1.13 will require Autoconf >= 2.65
  news: put planned future backward-incompatibilities on top
  readme: update INSTALL to latest version from Autoconf
  sync: some auxiliary files synced from upstream
  hacking: copyright notices must be updated before releasing
  color-tests: coloring can be forced on non-ANSI terminals as well

13 years agonews: Automake 1.13 will require Autoconf >= 2.65
Stefano Lattarini [Mon, 30 Apr 2012 19:43:21 +0000 (21:43 +0200)] 
news: Automake 1.13 will require Autoconf >= 2.65

Autoconf 2.65 is almost three years old now, so requiring it is
acceptable.  Also, the soon-to-appear support for Objective C++
in Automake will be simplified if we can assume that Autoconf
version (which is the one that introduced support for Objective
C++).

* NEWS (Planned future backward-incompatibilities): Automake 1.13
will require Autoconf 2.65 or later.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agonews: put planned future backward-incompatibilities on top
Stefano Lattarini [Mon, 30 Apr 2012 19:29:34 +0000 (21:29 +0200)] 
news: put planned future backward-incompatibilities on top

* NEWS (New in 1.12): List of planned future backward-incompatibilities
moved from here ...
(New in 1.12.1): ... to here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoreadme: update INSTALL to latest version from Autoconf
Stefano Lattarini [Mon, 30 Apr 2012 19:25:37 +0000 (21:25 +0200)] 
readme: update INSTALL to latest version from Autoconf

* INSTALL: Updated to the version coming with Autoconf 2.69.  This
is warranted now that we use and require that same Autoconf version
in our build system.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agosync: some auxiliary files synced from upstream
Stefano Lattarini [Mon, 30 Apr 2012 19:18:36 +0000 (21:18 +0200)] 
sync: some auxiliary files synced from upstream

* lib/config.sub: Synced from upstream, by "make fetch".

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agohacking: copyright notices must be updated before releasing
Stefano Lattarini [Mon, 30 Apr 2012 19:17:06 +0000 (21:17 +0200)] 
hacking: copyright notices must be updated before releasing

* HACKING (Release procedure): Suggest to use "make update-copyright".

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agocolor-tests: coloring can be forced on non-ANSI terminals as well
Stefano Lattarini [Mon, 30 Apr 2012 18:44:50 +0000 (20:44 +0200)] 
color-tests: coloring can be forced on non-ANSI terminals as well

Before this change, colorization of testsuite output was suppressed
whenever the terminal was recognized to be a "dumb" one, incapable
of handling ANSI coloring (i.e., when the environment variable TERM
had a value of "dumb").  This happened even when the AM_COLOR_TESTS
variable was set to a value of "always".

Such a behaviour was suboptimal and slightly confusing; in fact, if
a user wants to force coloring of testsuite output that is being
redirected to a regular file, he should be able to do so even if his
terminal is not capable of handling ANSI colors -- in fact, such
terminal wouldn't be involved with the testsuite output in any way,
so why should it be allowed to influence it?

Thus, we now enable coloring of test output whenever AM_COLOR_TESTS
is set to "always", irrespective of the value of the TERM environment
variable.

* NEWS: Update.
* lib/am/check.am [%?COLOR%] (am__tty_colors): Activate colorization
of testsuite output whenever AM_COLOR_TESTS has the value of "always".
* t/ax/tap-summary-aux.sh: Export the TERM environment variable to
"dumb" when forcing colorization of the testsuite output; this should
*not* prevent such colorization from taking place, and we want to
check that this expectation really holds.
* t/ax/testsuite-summary-checks.sh: Likewise.
* t/color.sh: Likewise, and adjust some grepping checks.
* t/tap-color.sh: Likewise.  Also, remove redundant "make check"
invocation since we are at it.
* t/color2.sh: Likewise, and check that exporting TERM=dumb actually
prevents testsuite output colorization when AM_COLOR_TESTS is unset.
* t/parallel-tests-reset-term.sh: Relax, to prevent it from failing
spuriously due to the new semantic.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agocygnus: remove support for Cygnus-style trees
Stefano Lattarini [Fri, 6 Apr 2012 09:18:38 +0000 (11:18 +0200)] 
cygnus: remove support for Cygnus-style trees

Support for "Cygnus-style" tree as enabled by the 'cygnus' option
has been deprecated in the documentation and with runtime warning
since Automake 1.12.1.  It's now time to remove it.

Closes automake bug#11034.

* lib/Automake/Options.pm (_process_option_list): Issue a proper
error when the 'cygnus' option is seen.
* automake.in: Don't handle the 'cygnus' option anymore.
* docs/automake.texi: Remove references to cygnus option and
Cygnus-style trees.
* lib/am/dejagnu.am, lib/am/texinfos.am: Drop special setups for
cygnus mode.
* NEWS: Update.
* t/cygnus-no-more.sh: New test.
* t/flavor.sh: Adjust.
* t/cygnus-deprecation.sh: Remove.
* t/cygnus-check-without-all.sh: Likewise.
* t/cygnus-requires-maintainer-mode.sh: Likewise.
* t/cygnus-dependency-tracking.sh: Likewise.
* t/cygnus-imply-foreign.sh: Likewise.
* t/cygnus-no-installinfo.sh: Likewise.
* t/cygnus-no-dist.sh: Likewise.
* t/clean2.sh: Likewise.
* t/txinfo5.sh: Likewise.
* t/txinfo5b.sh: Likewise.
* t/list-of-tests.mk: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agocygnus: warn when it's used (flagged as 'obsolete' now)
Stefano Lattarini [Sat, 31 Mar 2012 12:53:24 +0000 (14:53 +0200)] 
cygnus: warn when it's used (flagged as 'obsolete' now)

Support for "Cygnus-style" tree as enabled by the 'cygnus'
option is now reported as obsolete when the warnings in the
'obsolete' category are enabled.

See automake bug#11034.

* automake.in (check_cygnus): Report the use of 'cygnus' mode as
obsolete.
* NEWS: Update.
* docs/automake.texi: Minor adjustments.
* t/cygnus-deprecation.sh: New test.
* t/list-of-tests.mk: Add it.
* tests/cygnus-check-without-all.sh: Adjust by calling automake
with the warnings in the 'obsolete' category disabled.
* t/cygnus-requires-maintainer-mode.sh: Likewise.
* t/cygnus-dependency-tracking.sh: Likewise.
* t/cygnus-imply-foreign.sh: Likewise.
* t/cygnus-no-installinfo.sh: Likewise.
* t/cygnus-no-dist.sh: Likewise.
* t/clean2.sh: Likewise.
* t/flavor.sh: Likewise.
* t/txinfo5.sh: Likewise.
* t/txinfo5b.sh: Likewise.
* t/library.sh: Remove use of 'cygnus' and 'dejagnu' options,
and of AM_MAINTAINER_MODE macro.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoparallel-tests: optimize global log creation
Stefano Lattarini [Sat, 25 Feb 2012 23:30:18 +0000 (00:30 +0100)] 
parallel-tests: optimize global log creation

With this change, the time required to execute the test case
'testsuite-summary-speed.sh' has dropped as follows:

  + Slow Debian i686 system, 1 core x 1.5 GHz, 768 MB of RAM,
    GNU make 3.81:
      - 1 run: 4 minutes => 30/40 seconds

  + Fast Solaris 10 i686 system, 4 cores x 3 GHz, 20 GB of RAM,
    Solaris CCS make:
     - 2 runs: 6 minutes => 30 seconds

  + Very fast Fedora ppc64 system, 64 cores x 3.5 GHz, 64 GB of RAM,
    GNU make 3.82:
     - 5 runs: 7 minutes => 1 minute and 10 seconds

* lib/am/check.am ($(TEST_SUITE_LOG)): Optimize for speed, by avoiding
lots of forks with the help of ...
(am__create_global_log): ... this new internal variable, basically
defining a smart awk program, and ...
(am__global_test_result_rx, am__copy_in_global_log_rx): ... these new
internal variables, used by the one above.
(am__rst_section): Remove as obsolete
* t/rst-formatting.trs: Remove.
* t/list-of-tests.mk: Update.
* t/testsuite-summary-count-many.sh: Improve its stress testing by
using 1 million tests rather than just 5 thousands: we can afford
this with our new optimization, and still have the test completed
in a reasonable time.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoparallel-tests: optimize 'recheck' target for speed
Stefano Lattarini [Thu, 26 Apr 2012 20:25:35 +0000 (22:25 +0200)] 
parallel-tests: optimize 'recheck' target for speed

With this change, the time required to execute the test case
'testsuite-recheck-speed.sh' has dropped as follows:

  + Slow Debian i686 system, 1 core x 1.5 GHz, 768 MB of RAM,
    GNU make 3.81:
      - 1 run: 6 minutes => 40 seconds

  + Fast Solaris 10 i686 system, 4 cores x 3 GHz, 20 GB of RAM,
    Solaris CCS make:
      - 4 runs: 3 minutes => 1 minute

  + Very fast Fedora ppc64 system, 64 cores x 3.5 GHz, 64 GB of RAM,
    GNU make 3.82:
      - 5 runs: 4 minutes => 1 minute 30 seconds

* lib/am/check.am (recheck): Optimize for speed, by avoiding lots of
forks with the help of ...
(am__list_recheck_tests): ... this new internal variable, basically
defining a proper awk program, and ...
(am__recheck_rx): ... this other new internal variable, used by the
one above.
* t/test-trs-recover2.sh: Relax by not checking for a very corner
case ('.log' and '.trs' files both unreadable) that we don't handle
anymore.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agonews: announce initial support for Objective C++
Stefano Lattarini [Thu, 26 Apr 2012 13:14:04 +0000 (15:14 +0200)] 
news: announce initial support for Objective C++

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoobjc++: test support for '.mm' suffix in _SOURCES entries
Peter Breitenlohner [Thu, 26 Apr 2012 13:12:39 +0000 (15:12 +0200)] 
objc++: test support for '.mm' suffix in _SOURCES entries

* t/ext.sh: Enhance by adding a file with the '.mm' suffix in
the 'foo_SOURCES' definition.
* t/nodep2.sh: Likewise.

Co-authored-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Peter Breitenlohner <peb@mppmu.mpg.de>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agocoverage: add performance tests on some parallel-tests aspects
Stefano Lattarini [Sun, 26 Feb 2012 08:42:11 +0000 (09:42 +0100)] 
coverage: add performance tests on some parallel-tests aspects

* t/testsuite-recheck-speed.sh: New test.
* t/testsuite-summary-speed.sh: Likewise.
* t/list-of-tests.mk: Update.

The new tests are not meant to PASS/FAIL, but rather to help us to
obtain quantitative measurements of the performance improvements
offered by soon-to-appear optimization patches.

Timing before the optimizations implemented by following patches:

  + Slow Debian i686 system, 1 core x 1.5 GHz, 768 MB of RAM,
    GNU make 3.81:
     - testsuite-recheck-speed.sh: 1 run, ~ 6 minutes
     - testsuite-summary-speed.sh: 1 run, ~ 4 minutes

  + Fast Solaris 10 i686 system, 4 cores x 3 GHz, 20 GB of RAM,
    Solaris CCS make:
     - testsuite-recheck-speed.sh: 4 runs, ~ 3 minutes
     - testsuite-summary-speed.sh: 2 runs, ~ 6 minutes

  + Very fast Fedora ppc64 system, 64 cores x 3.5 GHz, 64 GB of RAM,
    GNU make 3.82:
     - testsuite-recheck-speed.sh: 5 runs, ~ 4 minutes
     - testsuite-summary-speed.sh: 5 runs, ~ 7 minutes

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoobjc++: add documentation
Peter Breitenlohner [Thu, 26 Apr 2012 13:03:02 +0000 (15:03 +0200)] 
objc++: add documentation

* doc/automake.texi (Objective C++ Support): New node.
(How the Linker is Chosen, Support for Other Languages): Adjust.

Signed-off-by: Peter Breitenlohner <peb@mppmu.mpg.de>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoobjc++: initial support for Objective C++
Peter Breitenlohner [Thu, 26 Apr 2012 13:01:23 +0000 (15:01 +0200)] 
objc++: initial support for Objective C++

Original thread (dating back to almost three years ago):
<http://lists.gnu.org/archive/html/automake-patches/2009-07/msg00016.html>

* automake.in: Register new language 'objcxx'.
(lang_objcxx_rewrite): New subroutine.
(resolve_linker): Add OBJCXXLINK.
(%_am_macro_for_cond): Add am__fastdepOBJCXX and AC_PROG_OBJCXX.
(%_ac_macro_for_var): Add OBJCXX and OBJCXXFLAGS.
* m4/depend.m4 (_AM_DEPENDENCIES): Add OBJCXX.
* m4/init.m4 (AM_INIT_AUTOMAKE): Add AC_PROG_OBJCXX hook.

Signed-off-by: Peter Breitenlohner <peb@mppmu.mpg.de>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'mkdirp-remove' into master
Stefano Lattarini [Sun, 29 Apr 2012 20:45:00 +0000 (22:45 +0200)] 
Merge branch 'mkdirp-remove' into master

* mkdirp-remove:
  AM_PROG_MKDIR_P: remove as obsolete

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
13 years agoMerge branch 'maint'
Stefano Lattarini [Sun, 29 Apr 2012 20:43:27 +0000 (22:43 +0200)] 
Merge branch 'maint'

* maint:
  AM_PROG_MKDIR_P: deprecate, to be removed in Automake 1.13

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>