automake-commit
[Top][All Lists]
Advanced

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

[Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11-1032


From: Stefano Lattarini
Subject: [Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11-1032-g8f80364
Date: Tue, 20 Sep 2011 18:17:32 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Automake".

http://git.sv.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=8f80364582061d4bb13b74de9cd1ad35556a7afe

The branch, master has been updated
       via  8f80364582061d4bb13b74de9cd1ad35556a7afe (commit)
       via  122cb639106d5b3a8dad966e43af03426670642a (commit)
       via  2c57ac68468784a67c7ed8dced20cd5ac2b63e61 (commit)
       via  73497948db0d2c6c7418f7df5c129eeee16ddf51 (commit)
       via  9393a25995d4bbedc5103cce3e7dd9a7dd39e8d6 (commit)
       via  d5ebf21cccd0597f53e7b3c4063dff4704e454a6 (commit)
       via  0209b6ddef31d414e59c6f34ae7642e9785b5770 (commit)
       via  7aea1edaab587725f4a9becd30c00b5917cfe3f0 (commit)
       via  fb7141a5a2f1da7ec13f3cb14043a0591e8ff3ea (commit)
       via  c9dfc368a623178f32b67b164f051e9ab65edd99 (commit)
       via  b52f63c824a044e8adcde2ffe3640e0074c615a1 (commit)
       via  cd2efb9f05528c9c68e80185b250fe5b0abdec14 (commit)
       via  dd7e620bf9ef468a762be8594c61c7e5bb0b0d27 (commit)
       via  0b7d3cbc93055201bc58497e6519f477d0b72701 (commit)
       via  c31004a89fe50fedbce1b39cc567f06ab1c3a892 (commit)
       via  8d97cb95019b04707fdd60b4d9994d0acc9c6554 (commit)
       via  16912bdf1eeeeac517377e15c6c8bfe7743f9419 (commit)
       via  54942406955b4368104208eadeb55a13a258fa2e (commit)
       via  4f43232f4dc62bd3951cb5fda2bf1933b707902e (commit)
       via  e9e0b23fc89dbec01138359033b13a8f8be50ee8 (commit)
       via  76b756f9a40ca7b086d8239f48b0363e394eda5b (commit)
       via  c9a6f7e262be9f011862580a07e37091819b6785 (commit)
       via  9a937d21bbf695af2749d6ca2cd2def96009ec9a (commit)
       via  2990ef353fa395d1b7ded2aa15f5cf574adbb78d (commit)
       via  df73c36180fe7e822f4dbdfa9de4c460f8c8b795 (commit)
       via  20787ab1199329eda967d14a6fd1d7f6a92d149a (commit)
       via  829c04e73e888e8d03371f20707a8e993c217d15 (commit)
       via  31b07ed6985969d6d9663a0e9ed51217910dd7c0 (commit)
       via  60bd0bf85380e6cabb50ff07cec3366c18f170b2 (commit)
       via  672fd9352b5b8a07ab0c74cef2357770497fcdaa (commit)
       via  036767871101be12266ca04f9efe1957727744de (commit)
       via  527d34a6af23afcbede70765e72a255c7affe729 (commit)
       via  f2f162f5efda16ddb660163f838d27969d1e4025 (commit)
       via  fc8f9d7f9ec4a17be36595a35ec83d441ac2b8cf (commit)
       via  4480d9cf5bae98acd9d08d14d95f0dab149b9e7d (commit)
       via  9f10765954f400c047b3d6cd12e31e54efefe0c3 (commit)
       via  fc27b8fa70ffad842a525e05d5069022b96f6388 (commit)
       via  afeb921c579c9d1b75a5ce8aad442f359b51e0c5 (commit)
       via  3f7d0a5e8a9970e166a228a32a3bc80cd6da7868 (commit)
       via  f52e9abd0c2a4dfaa35993b448d1db5518687243 (commit)
       via  a2ebf0e5b1f34d76ce92673cf8575a10d33f9b05 (commit)
       via  cd16ceb382de8f64d44efd7dd1948c33fc52566e (commit)
       via  429b748cecaa046d11f5a93bea0c93c809179ed6 (commit)
       via  a716df2ed5f62889d3b442d5ecc5e2edd6794ee4 (commit)
       via  dd8b570a6a55cb20690cdc2c312309338d2495d3 (commit)
       via  b46debf534a9adab1b7c8e8b96c3c11de5dc9ae4 (commit)
       via  30f8ffc019653ba9b0ab47deda155d0efe660c8f (commit)
       via  bf1d029660136387a9fd4a451b230f954a81db5c (commit)
       via  2c2e5b4c334e7af191df3b6dfcc82001030447bc (commit)
       via  54932fd5e6957feb7a29f1e7e2ca68aa3b21ea91 (commit)
       via  afe776121aab4a44fe8dffcb7c8949c015370f90 (commit)
       via  a3988aeac8df3c9b4c1f2ea705ef96f00ab72ce5 (commit)
       via  62cb9a4f4be71d740ff412f0ba7c7ef29feaa8a0 (commit)
       via  5a46e0340900136d66dee39450117a70a4190d45 (commit)
       via  aa3ad84fd24967756cb031c4f3529198afdba900 (commit)
       via  59b5f75f6095f40d3316cb2928ba1d1f30ab15ce (commit)
       via  33e8c5aedbcb397954455761bee62715737a309a (commit)
       via  6a5482fcf190641eb46e00fe877ea1e31f241488 (commit)
       via  6b53cb6bfab7d903e5bf72bf2f0697be335707a8 (commit)
       via  01dede4422493957c23b3bc7ecfe596f93a58a54 (commit)
       via  0bf20ac342d7d4e2eaede58e110faf356e34e167 (commit)
       via  d76b503883525aaab6048102cbfe96bbdd9a0a85 (commit)
       via  141f17ca87d007fdfde0da85475dea7556c636a0 (commit)
      from  074b1188ea90da631ead2201ef66c7375d5a1e5c (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 8f80364582061d4bb13b74de9cd1ad35556a7afe
Merge: b52f63c 122cb63
Author: Stefano Lattarini <address@hidden>
Date:   Tue Sep 20 20:16:43 2011 +0200

    Merge branch 'maint'
    
    * maint:
      docs: document planned precedence changes in aclocal search path
      aclocal: handle ACLOCAL_PATH environment variable
      tests: fix spurious failure in 'primary-prefix-valid-couples.test'
      docs: deprecate JAVA primary
      docs: clearer distinction between `.java' with javac and with gcj
      java: complain if java_JAVA is used but $(javadir) is undefined

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

Summary of changes:
 ChangeLog                                          |  292 +++++++++++++++++++-
 NEWS                                               |   18 ++
 aclocal.in                                         |   21 ++-
 automake.in                                        |   39 ++--
 doc/automake.texi                                  |   72 ++++-
 lib/am/java.am                                     |   14 +-
 lib/am/python.am                                   |   19 +-
 lib/py-compile                                     |   51 +++--
 tests/Makefile.am                                  |   26 ++
 tests/Makefile.in                                  |   31 ++-
 tests/aclocal-path-install-serial.test             |   86 ++++++
 tests/aclocal-path-install.test                    |   55 ++++
 ...p-python.test => aclocal-path-nonexistent.test} |   23 +-
 tests/aclocal-path-precedence.test                 |   93 +++++++
 tests/aclocal-path.test                            |   58 ++++
 tests/defs                                         |    7 +-
 tests/distcheck-missing-m4.test                    |   27 ++-
 tests/distcheck-outdated-m4.test                   |   51 ++++-
 tests/instdir-java.test                            |    1 +
 tests/java-clean.test                              |   68 +++++
 tests/java-compile-install.test                    |   99 +++++++
 tests/java-compile-run-flat.test                   |  241 ++++++++++++++++
 tests/java-compile-run-nested.test                 |  254 +++++++++++++++++
 tests/java-mix.test                                |   69 +++++
 ...nized-extension.test => java-no-duplicate.test} |   31 ++-
 tests/java-nobase.test                             |   67 +++++
 tests/java-noinst.test                             |   38 ++--
 tests/java-rebuild.test                            |  126 +++++++++
 ...ck-tests_environment.test => java-sources.test} |   44 +++-
 tests/java-uninstall.test                          |  101 +++++++
 tests/java.test                                    |    6 +-
 ...todist-acconfig.test => javadir-undefined.test} |   31 +--
 .../{yflags-force-override.test => javaflags.test} |   54 ++--
 tests/javaprim.test                                |    5 +-
 tests/javasubst.test                               |    5 +-
 tests/nobase-nodist.test                           |   62 ++++
 tests/primary-prefix-valid-couples.test            |    2 -
 tests/py-compile-basedir.test                      |   51 ++++
 tests/py-compile-basic.test                        |   64 +++++
 tests/py-compile-basic2.test                       |   71 +++++
 tests/py-compile-destdir.test                      |   44 +++
 tests/py-compile-env.test                          |   60 ++++
 ...acdir.test => py-compile-option-terminate.test} |   33 ++-
 tests/py-compile-usage.test                        |   75 +++++
 44 files changed, 2474 insertions(+), 211 deletions(-)
 create mode 100755 tests/aclocal-path-install-serial.test
 create mode 100755 tests/aclocal-path-install.test
 copy tests/{help-python.test => aclocal-path-nonexistent.test} (72%)
 create mode 100755 tests/aclocal-path-precedence.test
 create mode 100755 tests/aclocal-path.test
 create mode 100755 tests/java-clean.test
 create mode 100755 tests/java-compile-install.test
 create mode 100755 tests/java-compile-run-flat.test
 create mode 100755 tests/java-compile-run-nested.test
 create mode 100755 tests/java-mix.test
 copy tests/{txinfo-unrecognized-extension.test => java-no-duplicate.test} (55%)
 create mode 100755 tests/java-nobase.test
 create mode 100755 tests/java-rebuild.test
 copy tests/{check-tests_environment.test => java-sources.test} (59%)
 create mode 100755 tests/java-uninstall.test
 copy tests/{autodist-acconfig.test => javadir-undefined.test} (61%)
 copy tests/{yflags-force-override.test => javaflags.test} (56%)
 create mode 100644 tests/nobase-nodist.test
 create mode 100755 tests/py-compile-basedir.test
 create mode 100755 tests/py-compile-basic.test
 create mode 100755 tests/py-compile-basic2.test
 create mode 100755 tests/py-compile-destdir.test
 create mode 100755 tests/py-compile-env.test
 copy tests/{aclocal-print-acdir.test => py-compile-option-terminate.test} (60%)
 create mode 100755 tests/py-compile-usage.test

diff --git a/ChangeLog b/ChangeLog
index 73c92ee..6d8c45e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,108 @@
+2011-09-20  Stefano Lattarini  <address@hidden>
+
+       docs: document planned precedence changes in aclocal search path
+       * doc/automake.texi (Macro Search Path): Explicitly state that the
+       lookup order for extra directories of `.m4' files will be changed
+       in the next major release.
+       * NEWS: Likewise.
+
+2011-09-19  Paolo Bonzini  <address@hidden>
+           Stefano Lattarini  <address@hidden>
+
+       aclocal: handle ACLOCAL_PATH environment variable
+       * aclocal.in (parse_ACLOCAL_PATH): New function, parse ACLOCAL_PATH
+       as a colon-separated list of directories to be included in the
+       search path.
+       * doc/automake.texi (Macro Search Path): Document new behavior and
+       the precedence rules for various elements of the search path.
+       * tests/aclocal-path.test: New test.
+       * tests/aclocal-path-install.test: Likewise.
+       * tests/aclocal-path-install-serial.test: Likewise.
+       * tests/aclocal-path-precedence.test: Likewise.
+       * tests/aclocal-path-nonexistent.test: Likewise.
+       * tests/Makefile.am (TESTS): Add them.
+       * NEWS: Update.
+       * tests/distcheck-missing-m4.test: Extend by also checking
+       interactions with ACLOCAL_PATH.
+       * tests/distcheck-outdated-m4.test: Likewise, and fix a couple
+       of botched comments since we are at it.
+
+2011-09-19  Stefano Lattarini  <address@hidden>
+
+       tests: fix spurious failure in 'primary-prefix-valid-couples.test'
+       * tests/primary-prefix-valid-couples.test: After commit
+       v1.11-464-gc9dfc36, `java_JAVA' is not a valid prefix/primary
+       combination by default anymore: one has to explicitly define
+       $(javadir) to make it so.  So just drop `java_JAVA' from our
+       Makefile.am  Also, since we are at it, ...
+       (configure.in): ... remove AM_PROG_GCJ from here, as it's not
+       really required.
+
+2011-09-19  Stefano Lattarini  <address@hidden>
+
+       docs: deprecate JAVA primary
+       * doc/automake.texi (Java): Deprecate the JAVA primary, stating
+       that it will become obsolete in automake 1.12 and probably removed
+       altogether in automake 1.13.  Reflect this in the section title,
+       by appending the string "(deprecated feature)".
+       (@menu, @detailmenu): Update.
+       (Java Support with gcj): The cross-referenced support for bytecode
+       compilation with the JAVA primary is rudimentary and deprecated.
+       State that explicitly.
+
+2011-09-19  Stefano Lattarini  <address@hidden>
+
+       docs: clearer distinction between `.java' with javac and with gcj
+       * doc/automake.texi (Java support): Rename this node ...
+       (Java support with gcj): ... to this, and change its title from
+       "Compiling Java sources" to "Compiling Java sources using gcj".
+       (@detailmenu, @menu, @cindex): Update and make more precise.
+       (Java): Change the title of this node from simply "Java" to
+       "Java bytecode compilation".
+       (@detailmenu, @menu, @cindex): Update and make more precise.
+
+2011-09-18  Stefano Lattarini  <address@hidden>
+
+       java: complain if java_JAVA is used but $(javadir) is undefined
+       Fixes automake bug#8461.
+       * automake.in (handle_java): Remove inappropriate "java" argument
+       from the calls to `&am_install_var' and `&am_primary_prefixes'.
+       * tests/instdir-java.test (Makefile.am): Define `$(javadir)'.
+       * tests/javadir-undefined.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+       * NEWS: Update.
+
+2011-09-16  Stefano Lattarini  <address@hidden>
+
+       automake: remove special handling of `ANSI2KNR' make variable
+       * automake.in (define_configure_variable): Remove special-cased
+       handling of `ANSI2KNR' variable.  Related minor simplifications.
+
+2011-09-12  Stefano Lattarini  <address@hidden>
+
+       cosmetics: fix various typos and grammaros
+       * NEWS: Fix typos.
+       * tests/py-compile-basic.test: Likewise.
+       * tests/py-compile-basedir.test: Fix botched wording in comments.
+       * tests/py-compile-option-terminate.test: Fix typo and incomplete
+       comment.
+       Suggestions by Peter Rosin.
+
+2011-09-18  Stefano Lattarini  <address@hidden>
+
+       coverage: test interactions of `nobase_' and `nodist_'
+       * tests/nobase-nodist.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+
+2011-09-18  Stefano Lattarini  <address@hidden>
+
+       java: fix various blunders in test 'java-mix.test'
+       * tests/java-mix.test: Add missing call to `set -e'.  Fix inverted
+       semantics (`.java' files are expected *not* to be distributed by
+       default, not the other way round).  Fix various typos in the name
+       of the `.java' files.  Correct other minor blunders.  Improve some
+       comments.
+
 2011-09-11  Stefano Lattarini  <address@hidden>
 
        tests: fix spurious failure on fast machines
@@ -746,6 +851,67 @@
        generic hard errors.  The latter should be reserved for "real"
        set-up failures.
 
+2011-06-08  Stefano Lattarini  <address@hidden>
+
+       py-compile: '--' and non-option arguments terminate the option list
+       * lib/py-compile: Any non-option argument, or the special `--'
+       argument, now explicitly terminates the list of options.
+       * tests/py-compile-option-terminate.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+       * NEWS: Update.
+
+2011-06-08  Stefano Lattarini  <address@hidden>
+
+       py-compile: complain on unrecognized options
+       * lib/py-compile: Complain on unrecognized options.  Don't be too
+       lax in matching `--help' and `--version' options.
+       * tests/py-compile-usage.test: Extend accordingly.
+       * NEWS: Update.
+
+2011-06-08  Stefano Lattarini  <address@hidden>
+
+       py-compile: normalize error and help messages
+       * lib/py-compile: Now error messages do not begin with a capital
+       letter, nor end with a period, as per GNU standards.  Prepend the
+       error messages with the name of the script, not with its path.
+       When an invalid usage is recognized, always display the customary
+       message "Try `py-compile --help' ..." on a line of its own.
+       ($me): New variable, containing the name of the
+       program, i.e., `py-compile'.  Use it throughout.
+       (usage_error): New function, used to display error messages about
+       invalid usage.
+       * tests/py-compile-usage.test: Extend and tighten accordingly.
+
+2011-06-08  Stefano Lattarini  <address@hidden>
+
+       python tests: add "unit tests" on py-compile
+       * tests/py-compile-basic.test: New test.
+       * tests/py-compile-basic2.test: New test.
+       * tests/py-compile-basedir.test: Likewise.
+       * tests/py-compile-destdir.test: Likewise.
+       * tests/py-compile-env.test: Likewise.
+       * tests/py-compile-usage.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+       Tested with python 2.0.1, 2.4.6, 2.6.6, 2.7.1, and 3.1.3.
+
+2011-06-08  Stefano Lattarini  <address@hidden>
+
+       py-compile: the '--destdir' option now accepts a blank argument
+       * lib/py-compile (Option parsing): Do not count an empty argument
+       to `--destdir' or `--basedir' as a missing argument.
+       * lib/python.am: Simplify accordingly, passing the `--destdir'
+       option to py-compile unconditionally, even if `$(DESTDIR)' is
+       empty.
+       * NEWS: Update.
+
+2011-06-08  Stefano Lattarini  <address@hidden>
+
+       python: run the 'py-compile' script with $(SHELL)
+       * lib/python.am (install-%DIR%PYTHON): Run each instance of
+       py-compile using $(SHELL).  Since we are at it, break overly
+       long lines.
+       (am__py_compile): New variable, to reduce code duplication.
+
 2011-06-05  Stefano Lattarini  <address@hidden>
 
        tests: fix typo-related error in auxdir2.test
@@ -881,6 +1047,11 @@
        driver.
        * tests/pr401b.test: Likewise.
        * tests/pr401c.test: Likewise.
+       * tests/java-flat.test: Likewise, and properly update heading
+       comments.
+       * tests/java-nested.test: Likewise, but defining `parallel_tests'
+       to "yes" instead, for improved coverage in conjunction with the
+       sister test `java-flat.test'.
 
 2011-05-20  Stefano Lattarini  <address@hidden>
 
@@ -964,6 +1135,12 @@
 
 2011-05-04  Stefano Lattarini  <address@hidden>
 
+       tests defs: use `skip_' for skipping java-related tests
+       * tests/defs.in (java, javac): Use `skip_' to signal test
+       skipping.
+
+2011-05-04  Stefano Lattarini  <address@hidden>
+
        tests defs: allow requirements for compilers (mostly dummy)
        Most of the new requirements that are now accepted in `$required'
        as consequence of this patch are still dummy.  They are planned
@@ -1073,6 +1250,80 @@
        superseded by the much more complete `maintclean.test'.
        * tests/Makefile.am (TESTS): Update.
 
+2011-05-03  Stefano Lattarini  <address@hidden>
+
+       java tests: use $PATH_SEPARATOR where appropriate
+       * tests/java-compile-run-nested.test: Use `$PATH_SEPARATOR', not
+       `:', to separate entries of extended PATH and CLASSPATH variables.
+       * tests/java-compile-run-flat.test: Likewise.
+
+2011-04-26  Stefano Lattarini  <address@hidden>
+
+       java coverage: test JAVACFLAGS and AM_JAVACFLAGS
+       * tests/javaflags.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-26  Stefano Lattarini  <address@hidden>
+
+       java coverage: test rebuild rules for java
+       * tests/java-rebuild.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-26  Stefano Lattarini  <address@hidden>
+
+       java coverage: try to build and run a java program
+       * tests/java-compile-run-flat.test: New test, try to build and run
+       a "UNIX-style" java program (complete with wrapper shell script
+       and the like) with a "flat" source-tree setup (i.e., everything in
+       the top-level directory).
+       * tests/java-compile-nested.test: Likewise, but using a more
+       typical "nested" source-tree setup.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-23  Stefano Lattarini  <address@hidden>
+
+       test defs: new requirement for the default java interpreter
+       * tests/defs.in (for tool in $required): New requirement 'java'.
+
+2011-04-23  Stefano Lattarini  <address@hidden>
+
+       java tests: tweak and make stricter a couple of tests
+       * tests/javasubst.test: Use proper m4 quoting.  Add trailing `:'
+       command.  Enable `errexit' shell flag, and related changes.
+       Prefer cat + here-doc over echo to append to configure.in.
+       Make grepping of Makefile.in stricter.  Add debugging output.
+       Improve heading comments.
+       * tests/javaprim.test: Likewise.
+
+2011-04-23  Stefano Lattarini  <address@hidden>
+
+       java coverage: add test on uninstall with JAVA primary
+       * tests/java-uninstall.test: New test.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-23  Stefano Lattarini  <address@hidden>
+
+       java tests: require java compiler more properly
+       * tests/java-extra.test: Use "required=javac" instead of ad-hoc
+       configure check.
+       * tests/java-noinst.test: Likewise.
+
+2011-04-23  Stefano Lattarini  <address@hidden>
+
+       java: allow both JAVA and nobase_JAVA in the same Makefile.am
+       * automake.in (handle_java): Also strip `nobase_' from the given
+       prefix, when needed.
+       * tests/java-clean.test: Update and extend.
+       * tests/java-compile-install.test: Likewise.
+       * tests/java-no-duplicate.test: Likewise.
+       * tests/java-sources.test: Likewise.
+       * tests/java-noinst.test: Likewise.
+       * tests/java-mix-dist-nodist.test: Renamed to ...
+       * tests/java-mix.test: ... this, and extended.
+       * tests/java-nobase.test: New test, still xfailing due to
+       unrelated issues.
+       * tests/Makefile.am (TESTS, XFAIL_TESTS): Update.
+
 2011-04-22  Stefano Lattarini  <address@hidden>
 
        testsuite: more environment sanitization
@@ -1283,6 +1534,38 @@
        * NEWS: Update.
        Report by Bruno Haible.
 
+2011-04-18  Stefano Lattarini  <address@hidden>
+
+       java: allow both dist_JAVA and nodist_JAVA in the same Makefile.am
+       Fixes automake bug#8434.
+       * automake.in (handle_java): Strip `dist_' and `nodist_' from
+       the given prefix.  Define a new internal Makefile variable
+       `am__java_sources'.  Related adjustments.
+       * lib/am/java.am (JAVAC, JAVAROOT, CLASSPATH_ENV): Define only the
+       first time this am file is processed.
+       (class%DIR%.stamp): Stamp file renamed ...
+       (class%NDIR%.stamp): ... to this, so that the `dist_' and `nodist_'
+       prefixes are stripped from the name of the stampfile.  Adjust
+       declaration of dependencies by using the new automake-generated
+       internal variable `$(am__java_sources)'.  In the rule, use `$@'
+       as the name of the target, rather than hard-coding it.
+       * tests/java.test: Update and extend.
+       * tests/java-no-duplicate.test: New test.
+       * tests/java-mix-dist-nodist.test: Likewise.
+       * tests/java-compile-and-install.test: Likewise.
+       * tests/java-clean.test: Likewise.
+       * tests/java-sources.test: Likewise.
+       * tests/Makefile.am (TESTS): Update.
+
+2011-04-06  Stefano Lattarini  <address@hidden>
+
+       coverage: more on java support EXTRA_ and noinst_ prefixes
+       * tests/java-extra.test: New test, checking support for the
+       prefix `EXTRA_' with the JAVA primary.
+       * tests/java-noinst.test: New test, checking support for the
+       prefix `noinst_' with the JAVA primary.
+       * tests/Makefile.am (TESTS): Update.
+
 2011-04-10  Stefano Lattarini  <address@hidden>
 
        test defs: fix 'javac' requirement for older JDK versions
@@ -1346,15 +1629,6 @@
        * tests/defs: Fix typo (`itslef' instead of `itself') in
        comments.
 
-2011-04-06  Stefano Lattarini  <address@hidden>
-
-       coverage: more on java support EXTRA_ and noinst_ prefixes
-       * tests/java-extra.test: New test, checking support for the
-       prefix `EXTRA_' with the JAVA primary.
-       * tests/java-noinst.test: New test, checking support for the
-       prefix `noinst_' with the JAVA primary.
-       * tests/Makefile.am (TESTS): Update.
-
 2011-04-09  Ralf Wildenhues  <address@hidden>
 
        Clarify regex code in depcomp.
diff --git a/NEWS b/NEWS
index 60b89d5..2b47eea 100644
--- a/NEWS
+++ b/NEWS
@@ -14,11 +14,20 @@ New in 1.11a:
   - The `--acdir' option of aclocal is deprecated, and will probably be
     removed in the next major Automake release (1.12).
 
+  - The exact order in which the directories in the aclocal macro
+    search path are looked up is probably going to be changed in the
+    next Automake release (1.12).
+
 * Changes to aclocal:
 
   - The `--acdir' option is deprecated.  Now you should use th new options
     `--automake-acdir' and `--system-acdir' instead.
 
+  - The `ACLOCAL_PATH' environment variable is now interpreted as a
+    colon-separated list of additional directories to search after the
+    automake internal acdir (by default ${prefix}/share/aclocal-APIVERSION)
+    and before the system acdir (by default ${prefix}/share/aclocal).
+
 * Miscellaneous changes:
 
   - The `dist' and `dist-all' targets now can run compressors in parallel.
@@ -52,6 +61,11 @@ New in 1.11a:
   - C source and header files derived from non-distributed Yacc sources are
     now removed by "make clean", not only by "make maintainer-clean".
 
+  - The py-compile script now accepts empty arguments passed to the options
+    `--destdir' and `--basedir', and complains about unrecognized options.
+    Moreover, a non-option argument or a special `--' argument terminates
+    the list of options.
+
   - A developer that needs to pass specific flags to configure at "make
     distcheck" time can now, and indeed he's advised to, do so by defining
     the developer-reserved makefile variable AM_DISTCHECK_CONFIGURE_FLAGS,
@@ -149,6 +163,10 @@ Bugs fixed in 1.11a:
   - Java sources specified with check_JAVA are not compiled anymore upon
     "make all", but only upon "make check".
 
+  - An usage like "java_JAVA = foo.java" will now cause Automake to warn
+    and error out if `javadir' is undefined, instead of silently producing
+    a broken Makefile.in.
+
   - Now aclocal and automake, when they've to spawn autoconf or autom4te
     processes, honour the configure-time definitions of AUTOCONF and
     AUTOM4TE.
diff --git a/aclocal.in b/aclocal.in
index bc0804a..93ed5eb 100644
--- a/aclocal.in
+++ b/aclocal.in
@@ -57,8 +57,9 @@ $perl_threads = 0;
 # third-party macros.
 # @user_includes can be augmented with -I.
 # @automake_includes can be reset with the `--automake-acdir' option.
-# @system_includes can be augmented with the `dirlist' file, and reset
-# with the `--system-acdir' option.
+# @system_includes can be augmented with the `dirlist' file or the
+# ACLOCAL_PATH environment variable, and reset with the `--system-acdir'
+# option.
 my @user_includes = ();
 my @automake_includes = ("@datadir@/aclocal-$APIVERSION");
 my @system_includes = ('@datadir@/aclocal');
@@ -1045,10 +1046,26 @@ sub parse_arguments ()
     }
 }
 
+# Add any directory listed in the `ACLOCAL_PATH' environment variable
+# to the list of system include directories.
+sub parse_ACLOCAL_PATH ()
+{
+  return if not defined $ENV{"ACLOCAL_PATH"};
+  # Directories in ACLOCAL_PATH should take precedence over system
+  # directories, so we use unshift.  However, directories that
+  # come first in ACLOCAL_PATH take precedence over directories
+  # coming later, which is why the result of split is reversed.
+  foreach my $dir (reverse split /:/, $ENV{"ACLOCAL_PATH"})
+    {
+      unshift (@system_includes, $dir) if $dir ne '' && -d $dir;
+    }
+}
+
 ################################################################
 
 parse_WARNINGS;                    # Parse the WARNINGS environment variable.
 parse_arguments;
+parse_ACLOCAL_PATH;
 $configure_ac = require_configure_ac;
 
 # We may have to rerun aclocal if some file have been installed, but
diff --git a/automake.in b/automake.in
index 288ff61..5a44f3a 100644
--- a/automake.in
+++ b/automake.in
@@ -4970,23 +4970,35 @@ sub handle_java
 {
     my @sourcelist = &am_install_var ('-candist',
                                      'java', 'JAVA',
-                                     'java', 'noinst', 'check');
+                                     'noinst', 'check');
     return if ! @sourcelist;
 
-    my @prefix = am_primary_prefixes ('JAVA', 1,
-                                     'java', 'noinst', 'check');
+    my @prefixes = am_primary_prefixes ('JAVA', 1,
+                                       'noinst', 'check');
 
     my $dir;
-    foreach my $curs (@prefix)
+    my @java_sources = ();
+    foreach my $prefix (@prefixes)
       {
+        (my $curs = $prefix) =~ s/^(?:nobase_)?(?:dist_|nodist_)?//;
+
        next
          if $curs eq 'EXTRA';
 
-       err_var "${curs}_JAVA", "multiple _JAVA primaries in use"
-         if defined $dir;
+        push @java_sources, '$(' . $prefix . '_JAVA' . ')';
+
+       if (defined $dir)
+         {
+           err_var "${curs}_JAVA", "multiple _JAVA primaries in use"
+            unless $curs eq $dir;
+         }
+
        $dir = $curs;
       }
 
+    define_pretty_variable ('am__java_sources', TRUE, INTERNAL,
+                            "@java_sources");
+
     if ($dir eq 'check')
       {
         push (@check, "class$dir.stamp");
@@ -6330,22 +6342,11 @@ sub define_files_variable (address@hidden)
 sub define_configure_variable ($)
 {
   my ($var) = @_;
-
-  my $pretty = VAR_ASIS;
-  my $owner = VAR_CONFIGURE;
-
   # Some variables we do not want to output.  For instance it
   # would be a bad idea to output `U = @address@hidden when address@hidden@` 
can be
   # substituted as `\`.
-  $pretty = VAR_SILENT if exists $ignored_configure_vars{$var};
-
-  # ANSI2KNR is a variable that Automake wants to redefine, so
-  # it must be owned by Automake.  (It is also used as a proof
-  # that AM_C_PROTOTYPES has been run, that's why we do not simply
-  # omit the AC_SUBST.)
-  $owner = VAR_AUTOMAKE if $var eq 'ANSI2KNR';
-
-  Automake::Variable::define ($var, $owner, '', TRUE, subst $var,
+  my $pretty = exists $ignored_configure_vars{$var} ? VAR_SILENT : VAR_ASIS;
+  Automake::Variable::define ($var, VAR_CONFIGURE, '', TRUE, subst $var,
                              '', $configure_vars{$var}, $pretty);
 }
 
diff --git a/doc/automake.texi b/doc/automake.texi
index 2f81c10..68995d9 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -230,7 +230,7 @@ Building Programs and Libraries
 * Assembly Support::            Compiling assembly sources
 * Fortran 77 Support::          Compiling Fortran 77 sources
 * Fortran 9x Support::          Compiling Fortran 9x sources
-* Java Support::                Compiling Java sources
+* Java Support with gcj::       Compiling Java sources using gcj
 * Vala Support::                Compiling Vala sources
 * Support for Other Languages::  Compiling other languages
 * Dependencies::                Automatic dependency tracking
@@ -290,7 +290,7 @@ Other GNU Tools
 * Emacs Lisp::                  Emacs Lisp
 * gettext::                     Gettext
 * Libtool::                     Libtool
-* Java::                        Java
+* Java::                        Java bytecode compilation (deprecated)
 * Python::                      Python
 
 Building documentation
@@ -3433,6 +3433,40 @@ Similarly, @file{dirlist} can be handy if you have 
installed a local
 copy of Automake in your account and want @command{aclocal} to look for
 macros installed at other places on the system.
 
address@hidden Modifying the Macro Search Path: @file{ACLOCAL_PATH}
address@hidden @env{ACLOCAL_PATH}
+
+The fourth and last mechanism to customize the macro search path is
+also the simplest.  Any directory included in the colon-separated
+environment variable @env{ACLOCAL_PATH} is added to the search path
address@hidden Keep in sync with aclocal-path-precedence.test.
+and takes precedence over system directories (including those found via
address@hidden), with the exception of the versioned directory
address@hidden (@pxref{Macro Search Path}).  However, directories
+passed via @option{-I} will take precedence over directories in
address@hidden
+
address@hidden Keep in sync with aclocal-path-installed.test.
+Also note that, if the @option{--install} option is used, any @file{.m4}
+file containing a required macro that is found in a directory listed in
address@hidden will be installed locally.
address@hidden Keep in sync with aclocal-path-installed-serial.test.
+In this case, serial numbers in @file{.m4} are honoured too,
address@hidden
+
+Conversely to @file{dirlist}, @env{ACLOCAL_PATH} is useful if you are
+using a global copy of Automake and want @command{aclocal} to look for
+macros somewhere under your home directory.
+
address@hidden Planned future incompatibilities
+
+The order in which the directories in the macro search path are currently
+looked up is confusing and/or suboptimal in various aspects, and is
+probably going to be changed in the future Automake release.  In
+particular, directories in @env{ACLOCAL_PATH} and @address@hidden
+might end up taking precedence over @address@hidden, and
+directories in @address@hidden/dirlist} might end up taking precedence
+over @address@hidden  @emph{This is a possible future incompatibility!}
 
 @node Extending aclocal
 @subsection Writing your own aclocal macros
@@ -4621,7 +4655,7 @@ to build programs and libraries.
 * Assembly Support::            Compiling assembly sources
 * Fortran 77 Support::          Compiling Fortran 77 sources
 * Fortran 9x Support::          Compiling Fortran 9x sources
-* Java Support::                Compiling Java sources
+* Java Support with gcj::       Compiling Java sources using gcj
 * Vala Support::                Compiling Vala sources
 * Support for Other Languages::  Compiling other languages
 * Dependencies::                Automatic dependency tracking
@@ -6692,17 +6726,19 @@ is as follows:
 
 @end table
 
address@hidden Java Support
address@hidden Java Support with gcj
 @comment  node-name,  next,  previous,  up
address@hidden Java Support
address@hidden Compiling Java sources using gcj
 
address@hidden Java support
address@hidden Support for Java
address@hidden Java support with gcj
address@hidden Support for Java with gcj
address@hidden Java to native code, compilation
address@hidden Compilation of Java to native code
 
 Automake includes support for natively compiled Java, using @command{gcj},
-the Java front end to the GNU Compiler Collection (preliminary support
+the Java front end to the GNU Compiler Collection (rudimentary support
 for compiling Java to bytecode using the @command{javac} compiler is
-also present; @pxref{Java}).
+also present, @emph{albeit deprecated}; @pxref{Java}).
 
 Any package including Java code to be compiled must define the output
 variable @code{GCJ} in @file{configure.ac}; the variable @code{GCJFLAGS}
@@ -6796,8 +6832,9 @@ source file.
 Automake currently only includes full support for C, C++ (@pxref{C++
 Support}), Objective C (@pxref{Objective C Support}), Fortran 77
 (@pxref{Fortran 77 Support}), Fortran 9x (@pxref{Fortran 9x Support}),
-and Java (@pxref{Java Support}).  There is only rudimentary support for other
-languages, support for which will be improved based on user demand.
+and Java (@pxref{Java Support with gcj}).  There is only rudimentary
+support for other languages, support for which will be improved based
+on user demand.
 
 Some limited support for adding your own languages is available via the
 suffix rule handling (@pxref{Suffixes}).
@@ -7392,7 +7429,7 @@ use in GNU programs, it tries hard to interoperate with 
other GNU tools.
 * Emacs Lisp::                  Emacs Lisp
 * gettext::                     Gettext
 * Libtool::                     Libtool
-* Java::                        Java
+* Java::                        Java bytecode compilation (deprecated)
 * Python::                      Python
 @end menu
 
@@ -7485,15 +7522,22 @@ libtool, The Libtool Manual}) with the 
@code{LTLIBRARIES} primary.
 
 
 @node Java
address@hidden Java
address@hidden Java bytecode compilation (deprecated)
 
 @cindex @code{_JAVA} primary, defined
 @cindex @code{JAVA} primary, defined
 @cindex Primary variable, @code{JAVA}
address@hidden Java to bytecode, compilation
address@hidden Compilation of Java to bytecode
 
 Automake provides some minimal support for Java bytecode compilation with
 the @code{JAVA} primary (in addition to the support for compiling Java to
-native machine code; @pxref{Java Support}).
+native machine code; @pxref{Java Support with gcj}).  Note however that
address@hidden interface and most features described here are deprecated}; the
+next automake release will strive to provide a better and cleaner
+interface, which however @emph{won't be backward-compatible}; the present
+interface will probably be removed altogether in future automake releases
+(1.13 or later), so don't use it in new code.
 
 Any @file{.java} files listed in a @code{_JAVA} variable will be
 compiled with @code{JAVAC} at build time.  By default, @file{.java}
diff --git a/lib/am/java.am b/lib/am/java.am
index 604df22..464b706 100644
--- a/lib/am/java.am
+++ b/lib/am/java.am
@@ -20,11 +20,13 @@
 ## Building.  ##
 ## ---------- ##
 
+if %?FIRST%
 JAVAC = javac
 CLASSPATH_ENV = 
CLASSPATH=$(JAVAROOT):$(srcdir)/$(JAVAROOT)$${CLASSPATH:+":$$CLASSPATH"}
 JAVAROOT = $(top_builddir)
+endif %?FIRST%
 
-class%DIR%.stamp: $(%DIR%_JAVA)
+class%NDIR%.stamp: $(am__java_sources)
        @list1='$?'; list2=; if test -n "$$list1"; then \
          for p in $$list1; do \
            if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
@@ -33,7 +35,7 @@ class%DIR%.stamp: $(%DIR%_JAVA)
          echo '$(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) 
$(JAVACFLAGS) '"$$list2"; \
          $(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) 
$(JAVACFLAGS) $$list2; \
        else :; fi
-       echo timestamp > class%DIR%.stamp
+       echo timestamp > $@
 
 
 ## ------------ ##
@@ -44,7 +46,7 @@ if %?INSTALL%
 am__installdirs += "$(DESTDIR)$(%NDIR%dir)"
 ?EXEC?.PHONY install-exec-am: install-%DIR%JAVA
 ?!EXEC?.PHONY install-data-am: install-%DIR%JAVA
-install-%DIR%JAVA: class%DIR%.stamp
+install-%DIR%JAVA: class%NDIR%.stamp
        @$(NORMAL_INSTALL)
        test -z "$(%NDIR%dir)" || $(MKDIR_P) "$(DESTDIR)$(%NDIR%dir)"
 ## A single .java file can be compiled into multiple .class files.  So
@@ -76,9 +78,9 @@ endif %?INSTALL%
 ## Cleaning.  ##
 ## ---------- ##
 
-.PHONY clean-am: clean-%DIR%JAVA
-clean-%DIR%JAVA:
-       -rm -f *.class class%DIR%.stamp
+.PHONY clean-am: clean-%NDIR%JAVA
+clean-%NDIR%JAVA:
+       -rm -f *.class class%NDIR%.stamp
 
 
 ## -------------- ##
diff --git a/lib/am/python.am b/lib/am/python.am
index 9424a19..40aaa62 100644
--- a/lib/am/python.am
+++ b/lib/am/python.am
@@ -1,6 +1,6 @@
 ## automake - create Makefile.in from Makefile.am
-## Copyright (C) 1999, 2001, 2003, 2004, 2006, 2007, 2008, 2009  Free
-## Software Foundation, Inc.
+## Copyright (C) 1999, 2001, 2003, 2004, 2006, 2007, 2008, 2009, 2011
+## Free Software Foundation, Inc.
 
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -24,6 +24,7 @@ endif %?INSTALL%
 ## ------------ ##
 
 if %?INSTALL%
+?FIRST?am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
 am__installdirs += "$(DESTDIR)$(%NDIR%dir)"
 .PHONY install-%EXEC?exec:data%-am: install-%DIR%PYTHON
 install-%DIR%PYTHON: $(%DIR%_PYTHON)
@@ -52,11 +53,8 @@ if %?BASE%
 ## Byte-compile must be done at install time, since file times are
 ## encoded in the actual files.
        if test -n "$$dlist"; then \
-         if test -z "$(DESTDIR)"; then \
-           PYTHON=$(PYTHON) $(py_compile) --basedir "$(%NDIR%dir)" $$dlist; \
-         else \
-           PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir 
"$(%NDIR%dir)" $$dlist; \
-         fi; \
+         $(am__py_compile) --destdir "$(DESTDIR)" \
+                           --basedir "$(%NDIR%dir)" $$dlist; \
        else :; fi
 else !%?BASE%
        @list='$(%DIR%_PYTHON)'; test -n "$(%NDIR%dir)" || list=; \
@@ -76,11 +74,8 @@ else !%?BASE%
 ## Byte-compile must be done at install time, since file times are
 ## encoded in the actual files.
          if test -n "$$dlist"; then \
-           if test -z "$(DESTDIR)"; then \
-             PYTHON=$(PYTHON) $(py_compile) --basedir "$(%NDIR%dir)" $$dlist; \
-           else \
-             PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir 
"$(%NDIR%dir)" $$dlist; \
-           fi; \
+           $(am__py_compile) --destdir "$(DESTDIR)" \
+                             --basedir "$(%NDIR%dir)" $$dlist; \
          else :; fi \
        done
 endif !%?BASE%
diff --git a/lib/py-compile b/lib/py-compile
index 3f9d05b..15c834c 100755
--- a/lib/py-compile
+++ b/lib/py-compile
@@ -1,10 +1,10 @@
 #!/bin/sh
 # py-compile - Compile a Python program
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2011-06-08.12; # UTC
 
-# Copyright (C) 2000, 2001, 2003, 2004, 2005, 2008, 2009 Free Software
-# Foundation, Inc.
+# Copyright (C) 2000, 2001, 2003, 2004, 2005, 2008, 2009, 2011 Free
+# Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -32,28 +32,36 @@ if [ -z "$PYTHON" ]; then
   PYTHON=python
 fi
 
+me=py-compile
+
+usage_error ()
+{
+  echo "$me: $*" >&2
+  echo "Try \`$me --help' for more information." >&2
+  exit 1
+}
+
 basedir=
 destdir=
-files=
 while test $# -ne 0; do
   case "$1" in
     --basedir)
-      basedir=$2
-      if test -z "$basedir"; then
-        echo "$0: Missing argument to --basedir." 1>&2
-        exit 1
+      if test $# -lt 2; then
+        usage_error "option '--basedir' requires an argument"
+      else
+        basedir=$2
       fi
       shift
       ;;
     --destdir)
-      destdir=$2
-      if test -z "$destdir"; then
-        echo "$0: Missing argument to --destdir." 1>&2
-        exit 1
+      if test $# -lt 2; then
+        usage_error "option '--destdir' requires an argument"
+      else
+        destdir=$2
       fi
       shift
       ;;
-    -h|--h*)
+    -h|--help)
       cat <<\EOF
 Usage: py-compile [--help] [--version] [--basedir DIR] [--destdir DIR] 
FILES..."
 
@@ -69,20 +77,27 @@ Report bugs to <address@hidden>.
 EOF
       exit $?
       ;;
-    -v|--v*)
-      echo "py-compile $scriptversion"
+    -v|--version)
+      echo "$me $scriptversion"
       exit $?
       ;;
+    --)
+      shift
+      break
+      ;;
+    -*)
+      usage_error "unrecognized option '$1'"
+      ;;
     *)
-      files="$files $1"
+      break
       ;;
   esac
   shift
 done
 
+files=$*
 if test -z "$files"; then
-    echo "$0: No files given.  Try \`$0 --help' for more information." 1>&2
-    exit 1
+    usage_error "no files given"
 fi
 
 # if basedir was given, then it should be prepended to filenames before
diff --git a/tests/Makefile.am b/tests/Makefile.am
index fe89caa..dd2acde 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -25,6 +25,7 @@ auxdir2.test \
 cond17.test \
 gcj6.test \
 override-conditional-2.test \
+java-nobase.test \
 pr8365-remake-timing.test \
 yacc-dist-nobuild-subdir.test \
 vala-vpath.test \
@@ -133,6 +134,11 @@ acloca22.test \
 acloca23.test \
 aclocal-acdir.test \
 aclocal-print-acdir.test \
+aclocal-path.test \
+aclocal-path-install.test \
+aclocal-path-install-serial.test \
+aclocal-path-nonexistent.test \
+aclocal-path-precedence.test \
 acoutnoq.test \
 acoutpt.test \
 acoutpt2.test \
@@ -539,11 +545,23 @@ java.test \
 java2.test \
 java3.test \
 java-check.test \
+java-clean.test \
 java-empty-classpath.test \
+javadir-undefined.test \
 javaprim.test \
 javasubst.test \
+javaflags.test \
 java-extra.test \
 java-noinst.test \
+java-nobase.test \
+java-compile-install.test \
+java-compile-run-flat.test \
+java-compile-run-nested.test \
+java-sources.test \
+java-no-duplicate.test \
+java-mix.test \
+java-uninstall.test \
+java-rebuild.test \
 ldadd.test \
 ldflags.test \
 lex.test \
@@ -667,6 +685,7 @@ no-outdir-option.test \
 nobase.test \
 nobase-libtool.test \
 nobase-python.test \
+nobase-nodist.test \
 nodef.test \
 nodef2.test \
 nodep.test \
@@ -787,6 +806,13 @@ primary-prefix-valid-couples.test \
 primary-prefix-couples-force-valid.test \
 primary-prefix-couples-documented-valid.test \
 proginst.test \
+py-compile-basic.test \
+py-compile-basic2.test \
+py-compile-basedir.test \
+py-compile-destdir.test \
+py-compile-env.test \
+py-compile-option-terminate.test \
+py-compile-usage.test \
 python.test \
 python2.test \
 python3.test \
diff --git a/tests/Makefile.in b/tests/Makefile.in
index da0702a..d151705 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -297,9 +297,9 @@ MAINTAINERCLEANFILES = $(parallel_tests) $(instspc_tests)
 EXTRA_DIST = ChangeLog-old gen-parallel-tests instspc-tests.sh \
        $(TESTS) distcheck-hook-m4.am
 XFAIL_TESTS = all.test auxdir2.test cond17.test gcj6.test \
-       override-conditional-2.test pr8365-remake-timing.test \
-       yacc-dist-nobuild-subdir.test vala-vpath.test txinfo5.test \
-       $(instspc_xfail_tests)
+       override-conditional-2.test java-nobase.test \
+       pr8365-remake-timing.test yacc-dist-nobuild-subdir.test \
+       vala-vpath.test txinfo5.test $(instspc_xfail_tests)
 parallel_tests = backcompat5-p.test check-concurrency-bug9245-p.test \
        check-exported-srcdir-p.test check-tests-in-builddir-p.test \
        check-tests_environment-p.test check-p.test check10-p.test \
@@ -405,6 +405,11 @@ acloca22.test \
 acloca23.test \
 aclocal-acdir.test \
 aclocal-print-acdir.test \
+aclocal-path.test \
+aclocal-path-install.test \
+aclocal-path-install-serial.test \
+aclocal-path-nonexistent.test \
+aclocal-path-precedence.test \
 acoutnoq.test \
 acoutpt.test \
 acoutpt2.test \
@@ -811,11 +816,23 @@ java.test \
 java2.test \
 java3.test \
 java-check.test \
+java-clean.test \
 java-empty-classpath.test \
+javadir-undefined.test \
 javaprim.test \
 javasubst.test \
+javaflags.test \
 java-extra.test \
 java-noinst.test \
+java-nobase.test \
+java-compile-install.test \
+java-compile-run-flat.test \
+java-compile-run-nested.test \
+java-sources.test \
+java-no-duplicate.test \
+java-mix.test \
+java-uninstall.test \
+java-rebuild.test \
 ldadd.test \
 ldflags.test \
 lex.test \
@@ -939,6 +956,7 @@ no-outdir-option.test \
 nobase.test \
 nobase-libtool.test \
 nobase-python.test \
+nobase-nodist.test \
 nodef.test \
 nodef2.test \
 nodep.test \
@@ -1059,6 +1077,13 @@ primary-prefix-valid-couples.test \
 primary-prefix-couples-force-valid.test \
 primary-prefix-couples-documented-valid.test \
 proginst.test \
+py-compile-basic.test \
+py-compile-basic2.test \
+py-compile-basedir.test \
+py-compile-destdir.test \
+py-compile-env.test \
+py-compile-option-terminate.test \
+py-compile-usage.test \
 python.test \
 python2.test \
 python3.test \
diff --git a/tests/aclocal-path-install-serial.test 
b/tests/aclocal-path-install-serial.test
new file mode 100755
index 0000000..15b4204
--- /dev/null
+++ b/tests/aclocal-path-install-serial.test
@@ -0,0 +1,86 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# ACLOCAL_PATH, acdir and `--install' interactions when serial number
+# are involved.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+set -e
+
+cat > configure.in << 'END'
+AC_INIT
+AM_FOO
+END
+
+set_serial ()
+{
+  serial=$1 file=$2
+  sed '/^# serial/d' $file > t
+  case $serial in
+    none) mv -f t $file;;
+       *) (echo "# serial $serial" && cat t) > $file; rm -f t;;
+  esac
+  cat $file # For debugging.
+}
+
+win ()
+{
+  case $1 in
+    sdir) ok=sdir ko=pdir;;
+    pdir) ok=pdir ko=sdir;;
+       *) fatal_ "win(): invalud argument \`$1'";;
+  esac
+  rm -rf aclocal.m4 autom4te*.cache m4/*
+  $ACLOCAL -I m4 --install
+  test -f m4/foo.m4 # Sanity check.
+  $AUTOCONF
+  $FGREP "::$ok:"  m4/foo.m4
+  $FGREP "::$ok::" configure
+  $FGREP "::$ko::" m4/foo.m4 configure && Exit 1
+  :
+}
+
+mkdir sdir pdir m4
+
+ACLOCAL="$ACLOCAL --system-acdir=`pwd`/sdir"
+ACLOCAL_PATH=./pdir; export ACLOCAL_PATH
+
+cat > sdir/foo.m4 << 'END'
+AC_DEFUN([AM_FOO], [::sdir::])
+END
+cat > pdir/foo.m4 << 'END'
+AC_DEFUN([AM_FOO], [::pdir::])
+END
+
+set_serial 2 sdir/foo.m4
+set_serial 1 pdir/foo.m4
+win sdir
+
+set_serial 3.3 sdir/foo.m4
+set_serial 5.7 pdir/foo.m4
+win pdir
+
+set_serial 0    sdir/foo.m4
+set_serial none pdir/foo.m4
+win sdir
+
+set_serial none  sdir/foo.m4
+set_serial 1.2.3 pdir/foo.m4
+win pdir
+
+:
diff --git a/tests/aclocal-path-install.test b/tests/aclocal-path-install.test
new file mode 100755
index 0000000..5e46eb6
--- /dev/null
+++ b/tests/aclocal-path-install.test
@@ -0,0 +1,55 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# ACLOCAL_PATH and `--install' interactions.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+set -e
+
+cat > configure.in << 'END'
+AC_INIT
+AM_FOO
+END
+
+mkdir acdir pdir ldir
+
+ACLOCAL="$ACLOCAL --system-acdir=`pwd`/acdir"
+ACLOCAL_PATH=./pdir; export ACLOCAL_PATH
+
+cat > acdir/foo.m4 << 'END'
+AC_DEFUN([AM_FOO], [:])
+END
+
+cat > pdir/bar.m4 << 'END'
+AC_DEFUN([AM_BAR], [:])
+END
+
+# The `--install' option should never cause anything to be installed
+# in a directory specified in ACLOCAL_PATH.
+$ACLOCAL --install 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep ' no -I was supplied' stderr
+test ! -f pdir/foo.m4
+
+# The `--install' option should cause a required macro found in a
+# directory specified in ACLOCAL_PATH to be installed locally.
+echo AM_BAR >> configure.in
+$ACLOCAL --install -I ldir
+diff pdir/bar.m4 ldir/bar.m4
+
+:
diff --git a/tests/help-python.test b/tests/aclocal-path-nonexistent.test
similarity index 72%
copy from tests/help-python.test
copy to tests/aclocal-path-nonexistent.test
index e6a6fd3..e1157a1 100755
--- a/tests/help-python.test
+++ b/tests/aclocal-path-nonexistent.test
@@ -14,22 +14,23 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Make sure that macro `AM_PATH_PYTHON' adds proper text to the
-# configure help screen.
+# Non-existent directories in ACLOCAL_PATH are ok.
 
+am_create_testdir=empty
 . ./defs || Exit 1
 
-cat > configure.in <<END
-AC_INIT([$me], [1.0])
-AM_PATH_PYTHON
-END
+set -e
 
-$ACLOCAL
-$AUTOCONF
+cat > configure.in << 'END'
+AC_INIT
+AM_FOO
+END
 
-./configure --help >stdout || { cat stdout; Exit 1; }
-cat stdout
+mkdir mdir
+echo 'AC_DEFUN([AM_FOO], [am--foo])' > mdir/foo.m4
 
-grep '^  *PYTHON  *the Python interpreter$' stdout
+ACLOCAL_PATH=./nonesuch:./mdir:`pwd`/nonesuch2:nonesuch3 $ACLOCAL
+$AUTOCONF
+$FGREP 'am--foo' configure
 
 :
diff --git a/tests/aclocal-path-precedence.test 
b/tests/aclocal-path-precedence.test
new file mode 100755
index 0000000..0378fb2
--- /dev/null
+++ b/tests/aclocal-path-precedence.test
@@ -0,0 +1,93 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check precedence rules for ACLOCAL_PATH.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_INIT
+AM_INIT_AUTOMAKE([parallel-tests])
+FOO_MACRO
+BAR_MACRO
+AC_PROG_LIBTOOL
+AM_GNU_GETTEXT
+END
+
+mkdir mdir1 mdir2 mdir3 sysdir extradir
+
+cat > mdir1/foo1.m4 << 'END'
+AC_DEFUN([FOO_MACRO], [::pass-foo::])
+END
+
+cat > mdir2/foo2.m4 << 'END'
+AC_DEFUN([FOO_MACRO], [::fail-foo::])
+END
+
+cat > mdir1/baz.m4 << 'END'
+AC_DEFUN([BAR_MACRO], [::fail-bar::])
+END
+
+cat > mdir3/bar.m4 << 'END'
+AC_DEFUN([BAR_MACRO], [::pass-bar::])
+END
+
+cat > mdir2/quux.m4 << 'END'
+AC_DEFUN([AM_INIT_AUTOMAKE], [::fail-init::])
+AC_DEFUN([AC_PROG_LIBTOOL],  [::pass-libtool::])
+AC_DEFUN([AM_GNU_GETTEXT],   [::pass-gettext::])
+END
+
+cat > sysdir/libtool.m4 << 'END'
+AC_DEFUN([AC_PROG_LIBTOOL], [::fail-libtool::])
+END
+
+cat > extradir/gettext.m4 << 'END'
+AC_DEFUN([AM_GNU_GETTEXT], [::fail-gettext::])
+END
+
+echo ./extradir > sysdir/dirlist
+
+ACLOCAL_PATH=mdir1:mdir2 $ACLOCAL -I mdir3
+$AUTOCONF
+
+$FGREP '::' configure # For debugging.
+
+# Directories coming first in ACLOCAL_PATH should take precedence
+# over those coming later.
+$FGREP '::pass-foo::' configure
+
+# Directories from `-I' options should take precedence over directories
+# in ACLOCAL_PATH.
+$FGREP '::pass-bar::' configure
+
+# Directories in ACLOCAL_PATH should take precedence over system acdir
+# (typically `${prefix}/share/aclocal'), and any directory added through
+# the `dirlist' special file.
+$FGREP '::pass-gettext::' configure
+$FGREP '::pass-libtool::' configure
+
+# Directories in ACLOCAL_PATH shouldn't take precedence over the internal
+# automake acdir (typically `${prefix}/share/aclocal-${APIVERSION}').
+$FGREP 'am__api_version' configure
+
+# A final sanity check.
+$FGREP '::fail' configure && Exit 1
+
+:
diff --git a/tests/aclocal-path.test b/tests/aclocal-path.test
new file mode 100755
index 0000000..16fd3f9
--- /dev/null
+++ b/tests/aclocal-path.test
@@ -0,0 +1,58 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check basic ACLOCAL_PATH support.
+
+am_create_testdir=empty
+. ./defs || Exit 1
+
+set -e
+
+cat > configure.in << 'END'
+AC_INIT
+AM_FOO_MACRO
+AM_BAR_MACRO
+AM_BAZ_MACRO
+END
+
+mkdir mdir1 mdir2 mdir3
+
+cat > mdir1/foo.m4 << 'END'
+AC_DEFUN([AM_FOO_MACRO], [am--foo])
+END
+
+cat > mdir2/bar.m4 << 'END'
+AC_DEFUN([AM_BAR_MACRO], [am--bar])
+END
+
+cat > mdir3/baz.m4 << 'END'
+AC_DEFUN([AM_BAZ_MACRO], [am--baz])
+END
+
+ACLOCAL_PATH=mdir1:./mdir2:`pwd`/mdir3 $ACLOCAL
+$AUTOCONF
+
+# there should be no m4_include in aclocal.m4, even though ACLOCAL_PATH
+# contains `mdir1' and `./mdir2' as relative directories.  Only -I
+# directories should be subject to file inclusion.
+$FGREP m4_include aclocal.m4 && Exit 1
+
+$EGREP 'AM_(FOO|BAR|BAZ)_MACRO' configure && Exit 1
+$FGREP 'am--foo' configure
+$FGREP 'am--bar' configure
+$FGREP 'am--baz' configure
+
+:
diff --git a/tests/defs b/tests/defs
index 2c43bc1..ba4e9cc 100644
--- a/tests/defs
+++ b/tests/defs
@@ -403,7 +403,12 @@ do
       # telling that source files are missing.  Adding also the `-help'
       # option seems to solve the problem.
       echo "$me: running javac -version -help"
-      javac -version -help || exit 77
+      javac -version -help || skip_ "java compiler not found"
+      ;;
+    java)
+      # See the comments above about `javac' for why we use also `-help'.
+      echo "$me: running java -version -help"
+      java -version -help || skip_ "java interpreter not found"
       ;;
     makedepend)
       echo "$me: running makedepend -f-"
diff --git a/tests/distcheck-missing-m4.test b/tests/distcheck-missing-m4.test
index f4e0eda..1a2b62f 100755
--- a/tests/distcheck-missing-m4.test
+++ b/tests/distcheck-missing-m4.test
@@ -39,9 +39,10 @@ AC_OUTPUT
 MY_FOO
 MY_BAR
 MY_BAZ
+MY_ZAR
 END
 
-mkdir m4 acdir acdir1 acdir2
+mkdir m4 acdir acdir1 acdir2 pth
 
 cat > acdir/dirlist << END
 $cwd/acdir1
@@ -52,21 +53,25 @@ echo 'AC_DEFUN([MY_FOO], [:])' > m4/foo.m4
 echo 'AC_DEFUN([MY_BAR], [:])' > acdir1/bar.m4
 echo 'AC_DEFUN([MY_BAZ], [:])' > acdir1/baz.m4
 echo 'AC_DEFUN([MY_QUX], [:])' > acdir2/qux.m4
+echo 'AC_DEFUN([MY_ZAR], [:])' > pth/zar.m4
+echo 'AC_DEFUN([MY_BLA], [:])' > pth/bla.m4
 
 ACLOCAL="$ACLOCAL --system-acdir=$cwd/acdir"; export ACLOCAL
+ACLOCAL_PATH=$cwd/pth; export ACLOCAL_PATH
 
 # We don't use `--install' here.  Our distcheck-hook should catch this.
 $ACLOCAL -I m4
 $AUTOCONF
-$EGREP 'MY_(FOO|BAR|BAZ)' configure && Exit 1 # Sanity check.
+$EGREP 'MY_(FOO|BAR|BAZ|ZAR)' configure && Exit 1 # Sanity check.
 $AUTOMAKE
 
 ./configure
 
 $MAKE distcheck >output 2>&1 && { cat output; Exit 1; }
 cat output
-$EGREP "required m4 file.*not distributed.* bar.m4( |$)" output
-$EGREP "required m4 file.*not distributed.* baz.m4( |$)" output
+for x in bar baz zar; do
+  $EGREP "required m4 file.*not distributed.* $x.m4( |$)" output
+done
 # Check that we don't fail for spurious errors.
 $EGREP -i 'mkdir:|autom4te.*\.cache|:.*(permission|denied)' output && Exit 1
 
@@ -74,28 +79,34 @@ $EGREP -i 'mkdir:|autom4te.*\.cache|:.*(permission|denied)' 
output && Exit 1
 $ACLOCAL -I m4 --install
 test -f m4/bar.m4 # Sanity check.
 test -f m4/baz.m4 # Likewise.
+test -f m4/zar.m4 # Likewise.
 using_gmake || $MAKE Makefile
 $MAKE distcheck
 
-# We start to use a new "third-party" macro from a new .m4 file, but forget
+# We start to use new "third-party" macros from new .m4 files, but forget
 # to re-run "aclocal --install" by hand, relying on automatic remake rules.
 # Our distcheck-hook should catch this too.
-echo MY_QUX >> configure.in
+cat >> configure.in << 'END'
+MY_QUX
+MY_BLA
+END
 
 $MAKE
-$EGREP 'MY_(FOO|BAR|BAZ|QUX)' configure && Exit 1 # Sanity check.
+$EGREP 'MY_(FOO|BAR|BAZ|QUX|ZAR|BLA)' configure && Exit 1 # Sanity check.
 
 $MAKE distcheck >output 2>&1 && { cat output; Exit 1; }
 cat output
 $EGREP "required m4 file.*not distributed.* qux.m4( |$)" output
+$EGREP "required m4 file.*not distributed.* bla.m4( |$)" output
 # Check that we don't fail for spurious errors.
 $EGREP -i 'mkdir:|autom4te.*\.cache|permission|denied' output && Exit 1
 # Check that we don't complain for files that should have been found.
-grep " ba[rz].m4" output && Exit 1
+$FGREP " (bar|baz|zar).m4" output && Exit 1
 
 # Now we again use `--install', and "make distcheck" should pass.
 $ACLOCAL -I m4 --install
 test -f m4/qux.m4 # Sanity check.
+test -f m4/bla.m4 # Likewise.
 using_gmake || $MAKE Makefile
 $MAKE distcheck
 
diff --git a/tests/distcheck-outdated-m4.test b/tests/distcheck-outdated-m4.test
index 74f2922..7a3ade8 100755
--- a/tests/distcheck-outdated-m4.test
+++ b/tests/distcheck-outdated-m4.test
@@ -50,7 +50,8 @@ END
 
 ACLOCAL="$ACLOCAL --system-acdir=$cwd/acdir"; export ACLOCAL
 
-# We don't use `--install' here.  Our distcheck-hook should catch this.
+# The use of `--install' here won't help when the installed file `.m4'
+# will become out-of-date w.r.t. the one in the system acdir.
 $ACLOCAL -I m4 --install
 $AUTOCONF
 $AUTOMAKE
@@ -77,10 +78,54 @@ cat output
 $EGREP "required m4 file.* outdated.* baz.m4( |$)" output
 # Check that we don't fail for spurious errors.
 $EGREP -i 'mkdir:|autom4te.*\.cache|permission|denied' output && Exit 1
-# Check that we don't complain for files that should have been found.
+# Check that we don't complain for files that aren't outdated.
 $EGREP " (foo|bar).m4" output && Exit 1
 
-# Now we again use `--install', and "make distcheck" should pass.
+# Now we again use `--install' explicitly, and "make distcheck"
+# should pass.
+$ACLOCAL -I m4 --install
+using_gmake || $MAKE Makefile
+$MAKE distcheck
+
+# Similar to what have been done above, but this time we:
+#  - use ACLOCAL_PATH, and
+#  - do not add the use of a new macro.
+
+echo MY_FNORD >> configure.in
+
+mkdir pth
+cat > pth/fnord.m4 << 'END'
+# serial 1
+AC_DEFUN([MY_FNORD], [:])
+END
+
+ACLOCAL_PATH="$cwd/pth"; export ACLOCAL_PATH
+
+# The explicit use of `--install' here won't help when the installed file
+# `.m4' will become out-of-date w.r.t. the one in the system acdir.
+$ACLOCAL -I m4 --install
+using_gmake || $MAKE Makefile
+$MAKE distcheck
+
+# Only increase serial number, without changing the other contents; this
+# is deliberate.
+cat > pth/fnord.m4 << 'END'
+# serial 2
+AC_DEFUN([MY_FNORD], [:])
+END
+
+$MAKE # Rebuild configure and makefiles.
+$MAKE distcheck >output 2>&1 && { cat output; Exit 1; }
+cat output
+
+$EGREP "required m4 file.* outdated.* fnord.m4( |$)" output
+# Check that we don't fail for spurious errors.
+$EGREP -i 'mkdir:|autom4te.*\.cache|permission|denied' output && Exit 1
+# Check that we don't complain for files that aren't outdated.
+$EGREP " (foo|bar|baz).m4" output && Exit 1
+
+# Now we again use `--install' explicitly, and "make distcheck"
+# should pass.
 $ACLOCAL -I m4 --install
 using_gmake || $MAKE Makefile
 $MAKE distcheck
diff --git a/tests/instdir-java.test b/tests/instdir-java.test
index 8cad153..eaf2981 100755
--- a/tests/instdir-java.test
+++ b/tests/instdir-java.test
@@ -24,6 +24,7 @@ AC_OUTPUT
 END
 
 cat >Makefile.am <<'END'
+javadir = $(datarootdir)/java
 java_JAVA = foo.java
 END
 
diff --git a/tests/java-clean.test b/tests/java-clean.test
new file mode 100755
index 0000000..7db5e53
--- /dev/null
+++ b/tests/java-clean.test
@@ -0,0 +1,68 @@
+#! /bin/sh
+# Copyright (C) 1998, 2001, 2002, 2004, 2007  Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test cleaning of Java class files and timestamps.
+
+required=javac
+. ./defs || Exit 1
+
+set -e
+
+cat >> configure.in <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+javadir = $(datadir)/java
+
+java_JAVA = Class.java
+dist_java_JAVA = ClassDist.java
+nodist_java_JAVA = ClassNodist.java
+
+nobase_java_JAVA = ClassNobase.java
+nobase_dist_java_JAVA = ClassNobaseDist.java
+nobase_nodist_java_JAVA = ClassNobaseNodist.java
+END
+
+for base in '' Nobase; do
+  for dist in '' Dist Nodist; do
+    echo "class Class$base$dist {}" > Class$base$dist.java
+  done
+done
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE
+ls -l
+test -f classjava.stamp
+for base in '' Nobase; do
+  for dist in '' Dist Nodist; do
+    test -f Class$base$dist.class
+  done
+done
+$MAKE clean
+find . -name '*.class' -o -name '*.stamp' | grep . && Exit 1
+# We should not remove unrelated stamp files.
+echo timestamp > classjava2.stamp
+echo timestamp > classdist_java.stamp
+$MAKE clean
+test -f classjava2.stamp
+test -f classdist_java.stamp
+
+:
diff --git a/tests/java-compile-install.test b/tests/java-compile-install.test
new file mode 100755
index 0000000..74b7a00
--- /dev/null
+++ b/tests/java-compile-install.test
@@ -0,0 +1,99 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test on compilation and installation of Java class files.
+
+required=javac
+. ./defs || Exit 1
+
+set -e
+
+cat >>configure.in <<'EOF'
+AC_OUTPUT
+EOF
+
+cat > Makefile.am << 'END'
+javadir = $(datadir)/java
+java_JAVA = Foo.java
+nobase_java_JAVA = Foo2.java
+nobase_dist_java_JAVA = Bar.java
+nodist_java_JAVA = Baz.java
+
+# Java files are not distributed by default, so we distribute
+# one "by hand" ...
+EXTRA_DIST = Foo.java
+# ... and make the other one generated.
+Foo2.java:
+       rm -f $@ address@hidden
+       echo 'class bClass {}' > address@hidden
+       chmod a-w address@hidden && mv -f address@hidden $@
+
+# Explicitly declared as `nodist_', so generate it.
+Baz.java:
+       rm -f $@ address@hidden
+       echo 'class Baz {}' > address@hidden
+       echo 'class Baz2 {}' >> address@hidden
+       chmod a-w address@hidden && mv -f address@hidden $@
+
+test:
+       ls -l $(srcdir) . ;: For debugging.
+       test   -f $(srcdir)/Foo.java
+       test   -f $(srcdir)/Bar.java
+       test   -f Foo2.java
+       test   -f Baz.java
+       test   -f aClass.class
+       test   -f bClass.class
+       test   -f Zardoz.class
+       test   -f Baz.class
+       test   -f Baz2.class
+       test ! -r Foo.class
+       test ! -r Bar.class
+       test   -f classjava.stamp
+
+test-install:
+       ls -l $(javadir) ;: For debugging.
+       test   -f '$(javadir)/bClass.class'
+       test   -f '$(javadir)/aClass.class'
+       test   -f '$(javadir)/Zardoz.class'
+       test   -f '$(javadir)/Baz.class'
+       test   -f '$(javadir)/Baz2.class'
+       test ! -r '$(javadir)/Foo.class'
+       test ! -r '$(javadir)/Bar.class'
+       if find $(prefix) | grep '\.stamp$$'; then exit 1; else :; fi
+
+check-local: test
+installcheck-local: test-install
+
+.PHONY: test test-install
+
+DISTCLEANFILES = Baz.java Foo2.java
+END
+
+echo 'class aClass {}' > Foo.java
+echo 'class Zardoz {}' > Bar.java
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure --prefix="`pwd`"/_inst
+$MAKE
+$MAKE test
+$MAKE install
+$MAKE test-install
+$MAKE distcheck
+
+:
diff --git a/tests/java-compile-run-flat.test b/tests/java-compile-run-flat.test
new file mode 100755
index 0000000..0d5651e
--- /dev/null
+++ b/tests/java-compile-run-flat.test
@@ -0,0 +1,241 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test on compilation and execution of Java class files.
+# Also meddle with wrapper scripts, as would be probably seen in a real
+# "UNIX-style" use case.
+# This test uses a "flat" setup for the source tree (i.e., everything in
+# the top-level directory), and forces the use of the old, non-parallel
+# testsuite driver.  The sister test `java-compile-run-nested.test' do
+# similar checks with a more usual, "nested" setup, and using the newer
+# 'parallel-tests' driver.
+
+required='java javac'
+parallel_tests=no
+. ./defs || Exit 1
+
+set -e
+
+echo "AC_SUBST([PATH_SEPARATOR], ['$PATH_SEPARATOR'])" >> configure.in
+
+cat >> configure.in <<'END'
+AC_SUBST([JAVA], [java])
+AC_CONFIG_SRCDIR([PkgLocation.jin])
+AC_CONFIG_FILES([PkgLocation.java:PkgLocation.jin])
+AC_OUTPUT
+END
+
+## TOP-LEVEL SETUP AND TARGETS ##
+
+cat > Makefile.am <<'END'
+EXTRA_DIST = # Will be updated later.
+
+test-built:
+       ls -l $(srcdir)               ;: For debugging.
+       test $(srcdir) = . || ls -l . ;: Likewise.
+       test -f $(srcdir)/Main.java
+       test -f $(srcdir)/HelloStream.java
+       test -f $(srcdir)/PkgLocation.jin
+       test -f PkgLocation.java
+       test -f HelloStream.class
+       test -f PkgLocation.class
+       test -f Main.class
+       test -f classjava.stamp
+
+test-installed:
+       ls -l $(javadir) ;: For debugging.
+       test -f $(javadir)/HelloStream.class
+       test -f $(javadir)/PkgLocation.class
+       test -f $(javadir)/Main.class
+       if find $(prefix) | grep '\.stamp$$'; then exit 1; else :; fi
+
+run-installed:
+       jprog_doing_installcheck=yes $(MAKE) $(AM_MAKEFLAGS) check
+
+check-local: test-built
+installcheck-local: test-installed run-installed
+
+.PHONY: test-built test-installed run-installed
+END
+
+## WRAPPER SCRIPT ##
+
+cat >> Makefile.am <<'END'
+bin_SCRIPTS = jprog
+
+edit_script = sed -e 's|address@hidden@|$(JAVA)|g' \
+                  -e 's|address@hidden@|$(javadir)|g' \
+                  -e 's|address@hidden@|$(SHELL)|g' \
+                  -e 's|address@hidden@|$(PATH_SEPARATOR)|g'
+
+jprog: jprog.sh
+       rm -f $@ address@hidden
+       $(edit_script) `test -f 'address@hidden' || echo 
$(srcdir)/address@hidden >address@hidden
+       chmod a-w address@hidden && chmod a+x address@hidden && mv -f 
address@hidden $@
+       sed 's/^/ | /' $@ ;: for debugging.
+
+EXTRA_DIST += jprog.sh
+CLEANFILES = jprog
+END
+
+cat > jprog.sh <<'END'
address@hidden@
+CLASSPATH=${jprog_classpath-'@javadir@'}${CLASSPATH+"@address@hidden"}
+export CLASSPATH
+case $# in
+  0) exec @JAVA@ Main;;
+  *) exec @JAVA@ Main "$@";;
+esac
+END
+
+## JAVA SOURCES ##
+
+cat >> Makefile.am <<'END'
+javadir = $(pkgdatadir)/java
+
+dist_java_JAVA = Main.java HelloStream.java
+nodist_java_JAVA = PkgLocation.java
+END
+
+cat > PkgLocation.jin <<'END'
+public class PkgLocation {
+    public static String prefix() {
+        return new String("@prefix@");
+    }
+}
+END
+
+cat > Main.java <<'END'
+public class Main {
+    public static void main(String[] args) {
+        for (int i = 0; i < args.length; i++) {
+            if (args[i].equals("--print-prefix")) {
+                System.out.println(PkgLocation.prefix());
+            } else if (args[i].equals("--hello-stdout")) {
+                HelloStream.to(System.out);
+            } else if (args[i].equals("--hello-stderr")) {
+                HelloStream.to(System.err);
+            } else {
+               System.err.println("jprog: invalid option '" + args[i] +
+                                  "'");
+               System.exit(2);
+            }
+        }
+        System.exit(0);
+    }
+}
+END
+
+cat > HelloStream.java <<'END'
+import java.io.PrintStream;
+class HelloStream {
+    public static void to(PrintStream stream) {
+        stream.println("Hello, Stream!");
+    }
+}
+END
+
+## TESTS ##
+
+cat >> Makefile.am <<'END'
+## FIXME: Use AM_TESTS_ENVIRONMENT here when it becomes available.
+TESTS_ENVIRONMENT = \
+    if test x"$$jprog_doing_installcheck" != x"yes"; then \
+        jprog_classpath='$(abs_top_builddir):$(abs_top_srcdir)'; \
+        export jprog_classpath; \
+        PATH='$(abs_top_builddir)$(PATH_SEPARATOR)'$$PATH; \
+        export PATH; \
+    else \
+        unset jprog_classpath || :; \
+        PATH='$(prefix)/bin$(PATH_SEPARATOR)'$$PATH; \
+        export PATH; \
+    fi; \
+    config_time_prefix='@prefix@'; export config_time_prefix;
+
+TESTS = \
+  simple.test \
+  prefix.test \
+  stdout.test \
+  stderr.test \
+  badarg.test
+
+XFAIL_TESTS = badarg.test
+
+EXTRA_DIST += $(TESTS)
+END
+
+cat > simple.test <<'END'
+#!/bin/sh
+jprog
+END
+
+cat > prefix.test <<'END'
+#!/bin/sh
+jprefix=`jprog --print-prefix` || exit 1
+echo "$0: exp prefix: $config_time_prefix"
+echo "$0: got prefix: $jprefix"
+test x"$jprefix" = x"$config_time_prefix"
+END
+
+cat > stdout.test <<'END'
+#!/bin/sh
+rc=0
+jprog --hello-stdout >stdout.out 2>stdout.err || { echo \$?=$?; rc=1; }
+sed 's/^/out:/' <stdout.out      # For debugging.
+sed 's/^/err:/' <stdout.err >&2  # Likewise.
+test -s stdout.err && rc=1
+test "`cat stdout.out`" = 'Hello, Stream!' || rc=1
+rm -f stdout.out stdout.err || rc=1
+exit $rc
+END
+
+cat > stderr.test <<'END'
+#!/bin/sh
+rc=0
+jprog --hello-stderr >stderr.out 2>stderr.err || { echo \$?=$?; rc=1; }
+sed 's/^/out:/' <stderr.out      # For debugging.
+sed 's/^/err:/' <stderr.err >&2  # Likewise.
+test -s stderr.out && rc=1
+test "`cat stderr.err`" = 'Hello, Stream!' || rc=1
+rm -f stderr.out stderr.err || rc=1
+exit $rc
+END
+
+cat > badarg.test <<'END'
+#!/bin/sh
+jprog --bad-argument
+END
+
+chmod a+x *.test
+
+## DO CHECKS ##
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+# To have the parallel testsuite more verbose.
+VERBOSE=yes; export VERBOSE
+
+./configure --prefix="`pwd`/_inst"
+cat PkgLocation.java # For debugging.
+$MAKE check
+$MAKE install
+$MAKE test-installed
+$MAKE run-installed
+$MAKE distcheck
+
+:
diff --git a/tests/java-compile-run-nested.test 
b/tests/java-compile-run-nested.test
new file mode 100755
index 0000000..ec75c92
--- /dev/null
+++ b/tests/java-compile-run-nested.test
@@ -0,0 +1,254 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test on compilation and execution of Java class files.
+# Also meddle with wrapper scripts, as would be probably seen in a real
+# "UNIX-style" use case.
+# This test uses a typical "nested" source tree setup (i.e., different
+# components/aspects are separated into different subdirectories),
+# and uses the 'parallel-tests' testsuite driver.  The sister test
+# `java-compile-run-flat.test' do similar checks with a "flat" setup
+# (i.e., everything in the top-level directory), and forcing the use
+# of the older non-parallel 'simple-tests' driver.
+
+required='java javac'
+parallel_tests=yes
+. ./defs || Exit 1
+
+set -e
+
+echo "AC_SUBST([PATH_SEPARATOR], ['$PATH_SEPARATOR'])" >> configure.in
+
+cat >> configure.in <<'END'
+AC_SUBST([JAVA], [java])
+AC_CONFIG_SRCDIR([jprog/PkgLocation.jin])
+AC_SUBST([jprogdatadir],  ['${pkgdatadir}'])
+AC_SUBST([jprogclassdir], ['${jprogdatadir}/jprog'])
+AC_CONFIG_FILES([jprog/PkgLocation.java:jprog/PkgLocation.jin])
+AC_CONFIG_FILES([jprog/Makefile bin/Makefile tests/Makefile])
+AC_OUTPUT
+END
+
+## TOP-LEVEL SETUP AND TARGETS ##
+
+cat > Makefile.am <<'END'
+SUBDIRS = bin jprog tests
+
+test-built:
+       ls -l $(srcdir)/*             ;: For debugging.
+       test $(srcdir) = . || ls -l * ;: Likewise.
+       test -f $(srcdir)/jprog/Main.java
+       test -f $(srcdir)/jprog/HelloStream.java
+       test -f $(srcdir)/jprog/PkgLocation.jin
+       test -f jprog/PkgLocation.java
+       test -f jprog/HelloStream.class
+       test -f jprog/Main.class
+       test -f jprog/PkgLocation.class
+       test -f jprog/classjprogclass.stamp
+
+test-installed:
+       ls -l $(jprogclassdir) ;: For debugging.
+       test -f $(jprogclassdir)/HelloStream.class
+       test -f $(jprogclassdir)/Main.class
+       test -f $(jprogclassdir)/PkgLocation.class
+       if find $(prefix) | grep '\.stamp$$'; then exit 1; else :; fi
+
+run-installed:
+       jprog_doing_installcheck=yes $(MAKE) $(AM_MAKEFLAGS) check
+
+check-local: test-built
+installcheck-local: test-installed run-installed
+
+.PHONY: test-built test-installed run-installed
+END
+
+## WRAPPER SCRIPT ##
+
+mkdir bin
+
+cat > bin/Makefile.am <<'END'
+bin_SCRIPTS = jprog
+
+edit_script = sed -e 's|address@hidden@|$(JAVA)|g' \
+                  -e 's|address@hidden@|$(jprogdatadir)|g' \
+                  -e 's|address@hidden@|$(SHELL)|g' \
+                  -e 's|address@hidden@|$(PATH_SEPARATOR)|g'
+
+jprog: jprog.sh
+       rm -f $@ address@hidden
+       $(edit_script) `test -f 'address@hidden' || echo 
$(srcdir)/address@hidden >address@hidden
+       chmod a-w address@hidden && chmod a+x address@hidden && mv -f 
address@hidden $@
+       sed 's/^/ | /' $@ ;: for debugging.
+
+EXTRA_DIST = jprog.sh
+CLEANFILES = jprog
+END
+
+cat > bin/jprog.sh <<'END'
address@hidden@
+CLASSPATH=${jprog_classpath-'@jprogdatadir@'}${CLASSPATH+"@address@hidden"}
+export CLASSPATH
+case $# in
+  0) exec @JAVA@ jprog.Main;;
+  *) exec @JAVA@ jprog.Main "$@";;
+esac
+END
+
+## JAVA SOURCES ##
+
+mkdir jprog
+
+cat > jprog/Makefile.am <<'END'
+dist_jprogclass_JAVA = Main.java HelloStream.java
+nodist_jprogclass_JAVA = PkgLocation.java
+END
+
+cat > jprog/PkgLocation.jin <<'END'
+package jprog;
+public class PkgLocation {
+    public static String prefix() {
+        return new String("@prefix@");
+    }
+}
+END
+
+cat > jprog/Main.java <<'END'
+package jprog;
+import jprog.PkgLocation;
+import jprog.HelloStream;
+public class Main {
+    public static void main(String[] args) {
+        for (int i = 0; i < args.length; i++) {
+            if (args[i].equals("--print-prefix")) {
+                System.out.println(PkgLocation.prefix());
+            } else if (args[i].equals("--hello-stdout")) {
+                HelloStream.to(System.out);
+            } else if (args[i].equals("--hello-stderr")) {
+                HelloStream.to(System.err);
+            } else {
+               System.err.println("jprog: invalid option '" + args[i] +
+                                  "'");
+               System.exit(2);
+            }
+        }
+        System.exit(0);
+    }
+}
+END
+
+cat > jprog/HelloStream.java <<'END'
+package jprog;
+import java.io.PrintStream;
+class HelloStream {
+    public static void to(PrintStream stream) {
+        stream.println("Hello, Stream!");
+    }
+}
+END
+
+## TESTS ##
+
+mkdir tests
+
+cat > tests/Makefile.am <<'END'
+## FIXME: Use AM_TESTS_ENVIRONMENT here when it becomes available.
+TESTS_ENVIRONMENT = \
+    if test x"$$jprog_doing_installcheck" != x"yes"; then \
+        jprog_classpath='$(abs_top_builddir):$(abs_top_srcdir)'; \
+        export jprog_classpath; \
+        PATH='$(abs_top_builddir)/bin$(PATH_SEPARATOR)'$$PATH; \
+        export PATH; \
+    else \
+        unset jprog_classpath || :; \
+        PATH='$(prefix)/bin$(PATH_SEPARATOR)'$$PATH; \
+        export PATH; \
+    fi; \
+    config_time_prefix='@prefix@'; export config_time_prefix;
+
+TESTS = \
+  simple.test \
+  prefix.test \
+  stdout.test \
+  stderr.test \
+  badarg.test
+
+XFAIL_TESTS = badarg.test
+
+EXTRA_DIST = $(TESTS)
+END
+
+cat > tests/simple.test <<'END'
+#!/bin/sh
+jprog
+END
+
+cat > tests/prefix.test <<'END'
+#!/bin/sh
+jprefix=`jprog --print-prefix` || exit 1
+echo "$0: exp prefix: $config_time_prefix"
+echo "$0: got prefix: $jprefix"
+test x"$jprefix" = x"$config_time_prefix"
+END
+
+cat > tests/stdout.test <<'END'
+#!/bin/sh
+rc=0
+jprog --hello-stdout >stdout.out 2>stdout.err || { echo \$?=$?; rc=1; }
+sed 's/^/out:/' <stdout.out      # For debugging.
+sed 's/^/err:/' <stdout.err >&2  # Likewise.
+test -s stdout.err && rc=1
+test "`cat stdout.out`" = 'Hello, Stream!' || rc=1
+rm -f stdout.out stdout.err || rc=1
+exit $rc
+END
+
+cat > tests/stderr.test <<'END'
+#!/bin/sh
+rc=0
+jprog --hello-stderr >stderr.out 2>stderr.err || { echo \$?=$?; rc=1; }
+sed 's/^/out:/' <stderr.out      # For debugging.
+sed 's/^/err:/' <stderr.err >&2  # Likewise.
+test -s stderr.out && rc=1
+test "`cat stderr.err`" = 'Hello, Stream!' || rc=1
+rm -f stderr.out stderr.err || rc=1
+exit $rc
+END
+
+cat > tests/badarg.test <<'END'
+#!/bin/sh
+jprog --bad-argument
+END
+
+chmod a+x tests/*.test
+
+## DO CHECKS ##
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+# To have the parallel testsuite more verbose.
+VERBOSE=yes; export VERBOSE
+
+./configure --prefix="`pwd`/_inst"
+cat jprog/PkgLocation.java # For debugging.
+$MAKE check
+$MAKE install
+$MAKE test-installed
+$MAKE run-installed
+$MAKE distcheck
+
+:
diff --git a/tests/java-mix.test b/tests/java-mix.test
new file mode 100755
index 0000000..d6a43e7
--- /dev/null
+++ b/tests/java-mix.test
@@ -0,0 +1,69 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the JAVA primary can be used freely in the same Makefile.am
+# with proper combinations of the `dist_', `nodist_' and `nobase_'
+# modifiers.  Also check that `.java' files are not ditributed by default.
+
+. ./defs || Exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+# This test does not require compilation of *.java files.
+JAVAC = false
+javadir = $(prefix)
+
+java_JAVA = Class.java
+dist_java_JAVA = ClassDist.java
+nodist_java_JAVA = ClassNodist.java
+
+nobase_java_JAVA = ClassNobase.java
+nobase_dist_java_JAVA = ClassNobaseDist.java
+nobase_nodist_java_JAVA = ClassNobaseNodist.java
+
+Class.java ClassNodist.java ClassNobase.java ClassNobaseNodist.java:
+       @echo '$@ should not be generated!' >&2; exit 1
+END
+
+: > ClassDist.java
+: > ClassNobaseDist.java
+
+$ACLOCAL
+$AUTOCONF
+# Automake used to display non-fatal warnings with this test, but
+# they were unexpected, so we want to consider them as failures in
+# this test.
+$AUTOMAKE 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+test ! -s stderr
+
+./configure
+
+$MAKE distdir
+ls -l $distdir # For debugging.
+test ! -f $distdir/Class.java
+test -f $distdir/ClassDist.java
+test ! -f $distdir/ClassNobase.java
+test -f $distdir/ClassNobaseDist.java
+test ! -f $distdir/ClassNodist.java
+test ! -f $distdir/ClassNobaseNodist.java
+
+:
diff --git a/tests/txinfo-unrecognized-extension.test 
b/tests/java-no-duplicate.test
similarity index 55%
copy from tests/txinfo-unrecognized-extension.test
copy to tests/java-no-duplicate.test
index 719f508..ec42a3b 100755
--- a/tests/txinfo-unrecognized-extension.test
+++ b/tests/java-no-duplicate.test
@@ -14,25 +14,34 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Test that automake complains properly when the files with unrecognized
-# extensions are passed to the TEXINFOS primary.
+# Test that some Java-related variables and rules are not repeatedly
+# defined.
 
 . ./defs || Exit 1
 
+set -e
+
 cat > Makefile.am << 'END'
-info_TEXINFOS = foobar.foo bazquux.tex zardoz.c
+javadir = $(datadir)/java
+java_JAVA = a.java
+dist_java_JAVA = b.java
+nodist_java_JAVA = c.java
+nobase_java_JAVA = d.java
+nobase_dist_java_JAVA = e.java
+nobase_nodist_java_JAVA = f.java
 END
 
-echo '@setfilename foobar.info'  > foobar.foo
-echo '@setfilename bazquux.info' > bazquux.tex
-echo '@setfilename zardoz.info'  > zardoz.c
-: > texinfo.tex
-
 $ACLOCAL
-AUTOMAKE_fails
+$AUTOMAKE
 
-for x in 'foobar\.foo' 'bazquux\.tex' 'zardoz\.c'; do
-  grep "^Makefile\\.am:.* texinfo file .*$x.* unrecognized extension" stderr
+$EGREP -i '\.stamp|\.class|java|classpath' Makefile.in # For debugging.
+
+for var in JAVAC JAVAROOT CLASSPATH_ENV am__java_sources; do
+  grep "^$var =" Makefile.in
+  test `grep -c "^[$sp$tab]*$var[$sp$tab]*=" Makefile.in` = 1
 done
 
+grep '^classjava\.stamp:' Makefile.in
+test `grep -c "class.*java.*\.stamp.*:" Makefile.in` = 1
+
 :
diff --git a/tests/java-nobase.test b/tests/java-nobase.test
new file mode 100755
index 0000000..7b55290
--- /dev/null
+++ b/tests/java-nobase.test
@@ -0,0 +1,67 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test support of `nobase_' with the `JAVA' primary.
+
+required=javac
+. ./defs || Exit 1
+
+set -e
+
+cat >>configure.in <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+javadir = $(datadir)/java
+nobase_java_JAVA = sub/subsub/Foo.java
+nobase_dist_java_JAVA = sub/Bar.java
+nobase_nodist_java_JAVA = sub2/Baz.java
+
+# Java files are not distributed by default.
+EXTRA_DIST = sub/subsub/Foo.java
+
+sub2/Baz.java:
+       rm -f $@ address@hidden
+       test -d sub2 || mkdir sub2
+       echo 'class Baz {}' > address@hidden
+       chmod a-w address@hidden && mv -f address@hidden $@
+
+.PHONY: test-install
+test-install:
+       find $(prefix) ;: For debugging.
+       test   -f $(javadir)/sub/subsub/Foo.class
+       test   -f $(javadir)/sub/Bar.class
+       test   -f $(javadir)/sub2/Baz.class
+installcheck-local: test-install
+DISTCLEANFILES = sub2/Baz.java
+END
+
+mkdir sub sub/subsub
+echo 'class Foo {}' > sub/subsub/Foo.java
+echo 'class Bar {}' > sub/Bar.java
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure --prefix="`pwd`"/_inst
+$MAKE check
+$MAKE install
+$MAKE test-install
+$MAKE distcheck
+
+:
diff --git a/tests/java-noinst.test b/tests/java-noinst.test
index 5fe66d8..eb90aa9 100755
--- a/tests/java-noinst.test
+++ b/tests/java-noinst.test
@@ -14,8 +14,8 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Make sure that noinst_JAVA causes generated *.class files not to be
-# installed.
+# Make sure that noinst_JAVA causes generated *.class files not to
+# be installed.
 
 required=javac
 . ./defs || Exit 1
@@ -24,28 +24,32 @@ cat >> configure.in << 'END'
 AC_OUTPUT
 END
 
-cat > Foo.java <<'END'
-class Foo { }
+cat > Makefile.am <<'END'
+noinst_JAVA = 1.java
+dist_noinst_JAVA = 2.java
+nodist_noinst_JAVA = 3.java
+nobase_noinst_JAVA = 4.java
+nobase_dist_noinst_JAVA = 5.java
+nobase_nodist_noinst_JAVA = 6.java
 END
 
+for i in 1 2 3 4 5 6; do
+  echo "class Class$i {}" > $i.java
+done
+
 $ACLOCAL
+$AUTOMAKE
 $AUTOCONF
 
-: > Makefile.in # Will be updated later.
-
 ./configure --prefix="`pwd`/_inst"
 
-# We need this hacky loop because multiple uses of the JAVA primary
-# in the same Makefile.am are not allowed.
-
-for prefix in '' nodist_ dist_; do
-  echo "${prefix}noinst_JAVA = Foo.java" > Makefile.am
-  $AUTOMAKE
-  ./config.status Makefile
-  $MAKE
-  test -f Foo.class
-  $MAKE install
-  test ! -d _inst
+$MAKE
+ls -l
+for i in 1 2 3 4 5 6; do
+  test -f Class$i.class
 done
 
+$MAKE install
+test -d _inst && { ls -l _inst; Exit 1; }
+
 :
diff --git a/tests/java-rebuild.test b/tests/java-rebuild.test
new file mode 100755
index 0000000..75be5f7
--- /dev/null
+++ b/tests/java-rebuild.test
@@ -0,0 +1,126 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test rebuild rules for Java class files.
+
+required='javac'
+. ./defs || Exit 1
+
+set -e
+
+cat >> configure.in <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+AM_JAVACFLAGS = -verbose
+foodir = $(datadir)/java
+foo_JAVA = a.java
+dist_foo_JAVA = d.java
+nodist_foo_JAVA = n.java
+nobase_foo_JAVA = Nobase.java
+nobase_dist_foo_JAVA = NobaseDist.java
+nobase_nodist_foo_JAVA = NobaseNoDist.java
+END
+
+echo 'class _x {}' > a.java
+echo 'class x_ {}' > d.java
+echo 'class a {} class d {}' > n.java
+echo 'class Nobase_Foo {} class Nobase_Bar {}' > Nobase.java
+echo 'class NobaseDist {}' > NobaseDist.java
+echo 'class NobaseNoDist {}' > NobaseNoDist.java
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+all_classes='_x x_ a d Nobase_Foo Nobase_Bar NobaseDist NobaseNoDist'
+
+for vpath in : false; do
+
+  if $vpath; then
+    srcdir=..
+    mkdir build
+    cd build
+  else
+    srcdir=.
+  fi
+
+  $srcdir/configure
+  $MAKE
+  ls -l # For debugging.
+
+  # Sanity check.
+  test -f classfoo.stamp
+  for cls in $all_classes; do
+    test -f $cls.class
+  done
+
+  # When the stampfile is removed, all the *.class files should
+  # be considered out-of-date.
+  echo timestamp > older
+  $sleep
+  rm -f classfoo.stamp
+  $MAKE
+  for cls in $all_classes; do
+    is_newest $cls.class older
+  done
+
+  # When only a java file is modified, only the *.class files derived from
+  # it should be updated.
+  # The strings we loop on here have the following format:
+  # ``JAVA-FILES-TO-BE-TOUCHED -- CLASSES-THAT-SHOULD-BE-UPDATED''
+  for args in \
+    'a -- _x' \
+    'd -- x_' \
+    'n -- a d' \
+    'a d Nobase -- _x x_ Nobase_Foo Nobase_Bar' \
+    'n NobaseDist -- a d NobaseDist' \
+    'd NobaseNoDist -- x_ NobaseNoDist' \
+    "a d n Nobase NobaseDist NobaseNoDist -- $all_classes" \
+  ; do
+    set $args
+    touched_javas=
+    while test $# -gt 0; do
+      if test x"$1" = x"--"; then
+        shift
+        break
+      else
+        touched_javas="$touched_javas $1"
+        shift
+      fi
+    done
+    updated_classes=$*
+    echo timestamp > older
+    $sleep
+    for j in $touched_javas; do
+      touch $srcdir/$j.java
+    done
+    $MAKE
+    is_newest classfoo.stamp older
+    for cls in $all_classes; do
+      case " $updated_classes " in
+        *" $cls "*) is_newest $cls.class older;;
+        *) is_newest older $cls.class;;
+      esac
+    done
+  done # $args ...
+
+  cd $srcdir
+
+done # $vpath ...
+
+:
diff --git a/tests/check-tests_environment.test b/tests/java-sources.test
similarity index 59%
copy from tests/check-tests_environment.test
copy to tests/java-sources.test
index e3dc76a..770eb2d 100755
--- a/tests/check-tests_environment.test
+++ b/tests/java-sources.test
@@ -14,32 +14,54 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# "Simple Tests" testsuite driver: check TESTS_ENVIRONMENT support.
+# Test definition of automake-generated private Makefile variable
+# `$(am__java_sources)'.
 
 . ./defs || Exit 1
 
+set -e
+
 cat >> configure.in << 'END'
 AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
-TESTS = foo.test
-EXTRA_DIST = $(TESTS)
-END
+foodir = $(prefix)
 
-cat > foo.test << 'END'
-#! /bin/sh
-test x"$FOO" = x"ok"
+foo_JAVA = a.java
+dist_foo_JAVA = b.java
+nodist_foo_JAVA = c.java
+nobase_foo_JAVA = d.java
+nobase_dist_foo_JAVA = e.java
+nobase_nodist_foo_JAVA = f.java
+
+.PHONY: debug
+debug:
+       @echo 'am__java_sources: "$(am__java_sources)"'
+got:
+       @lst='$(am__java_sources)'; \
+         for f in $$lst; do echo $$f; done | sort > $@
 END
-chmod a+x foo.test
 
 $ACLOCAL
+$AUTOMAKE
 $AUTOCONF
-$AUTOMAKE -a
+
+cat > exp << 'END'
+a.java
+b.java
+c.java
+d.java
+e.java
+f.java
+END
 
 ./configure
+$MAKE debug
+$MAKE got
 
-FOO=bad TESTS_ENVIRONMENT='FOO=ok'  $MAKE check
-FOO=ok  TESTS_ENVIRONMENT='FOO=bad' $MAKE check && Exit 1
+cat got
+cat exp
+diff exp got
 
 :
diff --git a/tests/java-uninstall.test b/tests/java-uninstall.test
new file mode 100755
index 0000000..35d1e4a
--- /dev/null
+++ b/tests/java-uninstall.test
@@ -0,0 +1,101 @@
+#! /bin/sh
+# Copyright (C) 1998, 2001, 2002, 2004, 2007  Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check uninstallation of Java class files.
+
+required=javac
+. ./defs || Exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+javadir = $(prefix)/java
+java_JAVA = Foo.java
+nobase_java_JAVA = Foo2.java
+nobase_dist_java_JAVA = Bar.java
+nodist_java_JAVA = Baz.java
+
+# Java files are not distributed by default, so we distribute
+# one "by hand" ...
+EXTRA_DIST = Foo.java
+# ... and make the other one generated.
+Foo2.java:
+       rm -f $@ address@hidden
+       echo 'class bClass {}' > address@hidden
+       chmod a-w address@hidden && mv -f address@hidden $@
+
+# Explicitly declared as `nodist_', so generate it.
+Baz.java:
+       rm -f $@ address@hidden
+       echo 'class Baz {}' > address@hidden
+       echo 'class Baz2 {}' >> address@hidden
+       chmod a-w address@hidden && mv -f address@hidden $@
+
+DISTCLEANFILES = Baz.java Foo2.java
+END
+
+echo 'class aClass {}' > Foo.java
+echo 'class Zardoz {}' > Bar.java
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure --prefix="`pwd`"/_inst
+javadir=_inst/java
+
+check_uninstallation()
+{
+  test ! -r $javadir/aClass.class
+  test ! -r $javadir/bClass.class
+  test ! -r $javadir/Zardoz.class
+  test ! -r $javadir/Baz.class
+  test ! -r $javadir/Baz2.class
+  test   -f $javadir/Foo.class
+  test   -f $javadir/Bar.class
+  test   -f $javadir/xClass.class
+  test   -f $javadir/aclass.class
+}
+
+$MAKE
+ls -l
+$MAKE install
+: > $javadir/Foo.class
+: > $javadir/Bar.class
+: > $javadir/xClass.class
+: > $javadir/aclass.class
+ls -l $javadir
+$MAKE uninstall
+ls -l $javadir
+check_uninstallation
+
+# FIXME: "make uninstall" should continue to work also after "make clean",
+#        but currently this doesn't happen.  See automake bug#8540.
+$MAKE install
+ls -l $javadir
+$MAKE clean
+ls -l
+$MAKE uninstall
+ls -l $javadir
+#check_uninstallation
+
+$MAKE distcheck
+
+:
diff --git a/tests/java.test b/tests/java.test
index 671d2fd..fdf2092 100755
--- a/tests/java.test
+++ b/tests/java.test
@@ -24,7 +24,6 @@ cat >>configure.in <<'EOF'
 AC_OUTPUT
 EOF
 
-
 cat > Makefile.am << 'END'
 javadir = $(datadir)/java
 dist_java_JAVA = a.java b.java
@@ -33,7 +32,10 @@ END
 $ACLOCAL
 $AUTOCONF
 $AUTOMAKE
-grep '^all[-a-z]*:.*classdist_java\.stamp' Makefile.in
+
+$EGREP '\.stamp|class' Makefile.in # For debugging.
+grep '^all[-a-z]*:.*classjava\.stamp' Makefile.in
+test `grep -c '^all[-a-z]*:.*classjava\.stamp' Makefile.in` -eq 1
 
 cat >a.java <<EOF
 class a
diff --git a/tests/autodist-acconfig.test b/tests/javadir-undefined.test
similarity index 61%
copy from tests/autodist-acconfig.test
copy to tests/javadir-undefined.test
index 5674e27..9b6d1f3 100755
--- a/tests/autodist-acconfig.test
+++ b/tests/javadir-undefined.test
@@ -14,31 +14,24 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Check that `acconfig.h' is automatically distributed if it exists
-# (at automake runtime).
-# Related to automake bug#7819.
+# Use of JAVA primary should not allow the use of the `java_' prefix
+# when $(javadir) is undefined.  Otherwise, we could silently end up
+# with a broken Makefile.in (where "make install" doesn't install
+# the *.class files).
+# See automake bug#8461.
 
 . ./defs || Exit 1
 
-cat >> configure.in <<END
-AC_OUTPUT
-END
+set -e
 
-cat > Makefile.am <<'END'
-.PHONY: test
-test: distdir
-       ls -l $(distdir)
-       echo ' ' $(DIST_COMMON) ' ' | grep '[ /]acconfig\.h '
-       test -f $(distdir)/acconfig.h
-END
+$ACLOCAL
 
-: > acconfig.h
+echo java_JAVA = a.java > Makefile.am
+AUTOMAKE_fails
+grep '^Makefile\.am:1:.*java_JAVA.*javadir.* undefined' stderr
+$EGREP '(uninitialized|line) ' stderr && Exit 1
 
-$ACLOCAL
+echo javadir = a-dummy-value >> Makefile.am
 $AUTOMAKE
-$AUTOCONF
-
-./configure
-$MAKE test
 
 :
diff --git a/tests/yflags-force-override.test b/tests/javaflags.test
similarity index 56%
copy from tests/yflags-force-override.test
copy to tests/javaflags.test
index b76b529..7564322 100755
--- a/tests/yflags-force-override.test
+++ b/tests/javaflags.test
@@ -14,51 +14,49 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Check that automake can cope with a definition of the $(YFLAGS) variable
-# in Makefile.am (even if that is extremely bad practice, because that
-# variable is user-reserved).
+# Check support for $(JAVACFLAGS) and $(AM_JAVACFLAGS).
 
-required=yacc
 . ./defs || Exit 1
 
+set -e
+
+cat > fake-javac <<'END'
+#!/bin/sh
+echo "$*" > javaflags.list
+END
+chmod a+x fake-javac
+
+# Remove JAVAC from the environment, so that it won't interfere
+# with `make -e' below.
+unset JAVAC || :
+
 cat >> configure.in <<'END'
 AC_PROG_CC
-AC_PROG_YACC
+# Simulate presence of the java compiler using our fake-javac script.
+AC_SUBST([JAVAC], ['$(abs_top_srcdir)'/fake-javac])
 AC_OUTPUT
 END
 
 cat > Makefile.am <<'END'
-bin_PROGRAMS = foo
-foo_SOURCES = foo.y
-# Don't do this in a real-life Makefile.am!
-YFLAGS = -d -v
-END
-
-cat > foo.y << 'END'
-%{
-int yylex () { return 0; }
-void yyerror (char *s) { return; }
-int main () { return 0; }
-%}
-%%
-foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
+foodir = $(prefix)
+foo_JAVA = bar.java
+AM_JAVACFLAGS = __am_flags__
 END
 
 $ACLOCAL
-$AUTOMAKE -a -Wno-gnu
+$AUTOMAKE
 
-$EGREP '(foo|YFLAGS)' Makefile.in # for debugging
-grep '^foo.h *:' Makefile.in
+grep '\$(JAVACFLAGS).*\$(AM_JAVACFLAGS)' Makefile.in && Exit 1
+
+: > bar.java
 
 $AUTOCONF
 ./configure
+env JAVACFLAGS=__user_flags__ $MAKE -e
 
-$MAKE
-
-test -f foo.c
-test -f foo.h
-test -f foo.output
+ls -l
 
-$MAKE distcheck
+cat javaflags.list
+grep '__am_flags__.*__user_flags__' javaflags.list
 
 :
diff --git a/tests/javaprim.test b/tests/javaprim.test
index f0b8a1a..f80cec9 100755
--- a/tests/javaprim.test
+++ b/tests/javaprim.test
@@ -15,7 +15,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Test to make sure JAVA variable can be defined.
+# Test to make sure JAVA variable can be defined by AC_SUBST.
 
 . ./defs || Exit 1
 
@@ -31,4 +31,7 @@ END
 $ACLOCAL
 $AUTOMAKE
 
+grep -i java Makefile.in # For debugging.
+grep '^JAVA = address@hidden@ *$' Makefile.in
+
 :
diff --git a/tests/javasubst.test b/tests/javasubst.test
index 6b867d9..7d6dd9c 100755
--- a/tests/javasubst.test
+++ b/tests/javasubst.test
@@ -15,7 +15,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Test to make sure redefining JAVAC works.
+# Test to make sure redefining JAVAC with AC_SUBST works.
 
 . ./defs || Exit 1
 
@@ -31,6 +31,7 @@ END
 $ACLOCAL
 $AUTOMAKE
 
-grep 'address@hidden@' Makefile.in
+grep -i java Makefile.in # For debugging.
+grep '^JAVAC = address@hidden@ *$' Makefile.in
 
 :
diff --git a/tests/nobase-nodist.test b/tests/nobase-nodist.test
new file mode 100644
index 0000000..90823e2
--- /dev/null
+++ b/tests/nobase-nodist.test
@@ -0,0 +1,62 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Interaction of `nobase_' and `nodist_' prefixes.
+
+. ./defs || Exit 1
+
+set -e
+
+# Simulate no emacs and no python (it shouldn't be needed in this test).
+EMACS="no" PYTHON=":"; export EMCAS PYTHON
+
+cat >> configure.in << 'END'
+AM_PATH_LISPDIR
+AM_PATH_PYTHON([], [], [:])
+# Simulate no javac (it shouldn't be needed in this test).
+AC_SUBST([JAVAC], [false])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+nobase_nodist_noinst_PYTHON = baz1.py sub/baz2.py
+# Lisp and Java sources are not distributed by default, so try both
+# with and without the `nodist_' prefix, for more coverage.
+nobase_noinst_LISP = foo1.el sub/foo2.el
+nobase_nodist_noinst_LISP = foo3.el sub/foo4.el
+nobase_noinst_JAVA = bar1.java sub/bar2.java
+nobase_nodist_noinst_JAVA = bar3.java sub/bar4.java
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+./configure
+$MAKE distdir
+
+ls -l $distdir $distdir/* # For debugging.
+test ! -f $distdir/foo1.el
+test ! -f $distdir/sub/foo2.el
+test ! -f $distdir/foo3.el
+test ! -f $distdir/sub/foo4.el
+test ! -f $distdir/bar1.java
+test ! -f $distdir/sub/bar2.java
+test ! -f $distdir/bar3.java
+test ! -f $distdir/sub/bar4.java
+test ! -f $distdir/baz1.py
+test ! -f $distdir/sub/baz2.py
+
+:
diff --git a/tests/primary-prefix-valid-couples.test 
b/tests/primary-prefix-valid-couples.test
index f326808..36ff5d8 100755
--- a/tests/primary-prefix-valid-couples.test
+++ b/tests/primary-prefix-valid-couples.test
@@ -25,7 +25,6 @@ cat >> configure.in <<'END'
 AC_PROG_CC
 AC_PROG_RANLIB
 AC_PROG_LIBTOOL
-AM_PROG_GCJ
 AM_PATH_PYTHON
 AM_PATH_LISPDIR
 END
@@ -78,7 +77,6 @@ done
 echo "info_TEXINFOS = foo.texi" >> Makefile.am
 echo "lisp_LISP = foo.el" >> Makefile.am
 echo "python_PYTHON = foo.py" >> Makefile.am
-echo "java_JAVA = foo.java" >> Makefile.am
 
 awk '{print NR ":" $0}' Makefile.am # For debugging.
 
diff --git a/tests/py-compile-basedir.test b/tests/py-compile-basedir.test
new file mode 100755
index 0000000..a277639
--- /dev/null
+++ b/tests/py-compile-basedir.test
@@ -0,0 +1,51 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test the `--basedir' option of the `py-compile' script,
+
+required=python
+. ./defs || Exit 1
+
+set -e
+
+# We'll need to create files in `..', so we need one more subdirectory
+# level in order not to clutter up the top-level tests directory.
+mkdir sandbox
+cd sandbox
+
+cp "$testsrcdir/../lib/py-compile" .
+
+f=__init__
+for d in foo foo/bar "`pwd`/foo" . .. ../foo ''; do
+  if test -z "$d"; then
+    d2=.
+  else
+    d2=$d
+  fi
+  ../install-sh -d "$d2" "$d2/sub" || Exit 99
+  : > "$d2/$f.py"
+  : > "$d2/sub/$f.py"
+  ./py-compile --basedir "$d" "$f.py" "sub/$f.py"
+  ls -l "$d2" "$d2/sub" # For debugging.
+  test -f "$d2/$f.pyc"
+  test -f "$d2/$f.pyo"
+  test -f "$d2/sub/$f.pyc"
+  test -f "$d2/sub/$f.pyo"
+  rm -f "$d2/$f.pyc" "$d2/$f.pyo" "$d2/sub/$f.pyc" "$d2/sub/$f.pyo"
+  find . | grep '\.py[co]$' && Exit 1
+done
+
+:
diff --git a/tests/py-compile-basic.test b/tests/py-compile-basic.test
new file mode 100755
index 0000000..a7a3f89
--- /dev/null
+++ b/tests/py-compile-basic.test
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test more basic functionalities of the `py-compile' script,
+# with "believable" python sources.  See also related test
+# `py-compile-basic2.test'.
+
+required=python
+. ./defs || Exit 1
+
+set -e
+
+cp "$testsrcdir/../lib/py-compile" .
+
+cat > foo.py <<'END'
+# Try out some non-trivial syntax in here.
+
+'''Module docstring'''
+
+def foo (*args, **kwargs):
+  """Function docstring
+  with embedded newline"""
+  return 1
+
+class Foo:
+  r"""Class docstring"""
+  def __init__(self):
+    r'''Method docstring
+        with
+        embedded
+        newlines'''
+    pass
+
+bar = baz = (1, (2,), [3, 4]); zardoz = 0;
+END
+
+cat > bar.py <<'END'
+# Import of non-existent modules, or assertion of false conditions,
+# shouldn't cause problems, as it should be enough for the code to
+# be syntactically correct.
+import Automake.No.Such.Module
+assert False
+END
+
+./py-compile foo.py bar.py
+test -f foo.pyc
+test -f foo.pyo
+test -f bar.pyc
+test -f bar.pyo
+
+:
diff --git a/tests/py-compile-basic2.test b/tests/py-compile-basic2.test
new file mode 100755
index 0000000..0da0d42
--- /dev/null
+++ b/tests/py-compile-basic2.test
@@ -0,0 +1,71 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test more basic functionalities of the `py-compile' script, with
+# dummy python sources, but more complex directory layouts.  See also
+# related test `py-compile-basic.test'.
+
+required=python
+. ./defs || Exit 1
+
+set -e
+
+ocwd=`pwd` || Exit 99
+
+pyfiles="
+  foo.py
+  ./foo1.py
+  ../foo2.py
+  ../dir/foo3.py
+  $ocwd/foo4.py
+  sub/bar.py
+  sub/subsub/barbar.py
+  __init__.py
+  sub/__init__.py
+  1.py
+  .././_.py
+"
+
+lst='
+  dir/foo
+  dir/foo1
+  foo2
+  dir/foo3
+  foo4
+  dir/sub/bar
+  dir/sub/subsub/barbar
+  dir/__init__
+  dir/sub/__init__
+  dir/1
+  _
+'
+
+mkdir dir
+cd dir
+cp "$testsrcdir/../lib/py-compile" .
+mkdir sub sub/subsub
+touch $pyfiles
+./py-compile $pyfiles
+cd "$ocwd"
+
+for x in $lst; do echo $x.pyc; echo $x.pyo; done | sort > exp
+find . -name '*.py[co]' | sed 's|^\./||' | sort > got
+
+cat exp
+cat got
+diff exp got
+
+:
diff --git a/tests/py-compile-destdir.test b/tests/py-compile-destdir.test
new file mode 100755
index 0000000..3d122e6
--- /dev/null
+++ b/tests/py-compile-destdir.test
@@ -0,0 +1,44 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test the `--destdir' option of the `py-compile' script,
+
+required=python
+. ./defs || Exit 1
+
+set -e
+
+cp "$testsrcdir/../lib/py-compile" .
+
+# Should not give false positives when grepping for it, so use
+# an "uncommon" string (with ugly CamelCase).
+destdir=TheDestDir
+
+mkdir sub $destdir $destdir/sub
+echo 'def foo (): return "foo"' > $destdir/foo.py
+echo 'def bar (): return "bar"' > $destdir/sub/bar.py
+
+./py-compile --destdir $destdir foo.py sub/bar.py
+ls -l $destdir $destdir/sub # For debugging.
+ls . sub | grep '\.py[co]$' && Exit 1
+test -f $destdir/foo.pyc
+test -f $destdir/foo.pyo
+test -f $destdir/sub/bar.pyc
+test -f $destdir/sub/bar.pyo
+strings $destdir/*.py[co] $destdir/sub/*.py[co] || : # For debugging.
+$FGREP $destdir $destdir/*.py[co] $destdir/sub/*.py[co] && Exit 1
+
+:
diff --git a/tests/py-compile-env.test b/tests/py-compile-env.test
new file mode 100755
index 0000000..a72d173
--- /dev/null
+++ b/tests/py-compile-env.test
@@ -0,0 +1,60 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Make sure `py-compile' honours the PYTHON environment variable.
+
+. ./defs || Exit 1
+
+set -e
+
+cp "$testsrcdir/../lib/py-compile" .
+
+cat > my-py <<'END'
+#!/bin/sh
+: > my-py.run
+END
+chmod a+x my-py
+
+mkdir sub1
+cd sub1
+
+PYTHON=: ../py-compile foo.py
+ls | grep . && Exit 1
+
+PYTHON=false ../py-compile foo.py && Exit 1
+ls | grep . && Exit 1
+
+PYTHON='echo GrEpMe AndMeToo' ../py-compile foo.py
+PYTHON='echo GrEpMe AndMeToo' ../py-compile foo.py | grep 'GrEpMe AndMeToo'
+ls | grep . && Exit 1
+
+cd ..
+mkdir sub2
+cd sub2
+
+PYTHON=../my-py ../py-compile foo.py
+test -f my-py.run
+ls | grep -v '^my-py\.run$' | grep . && Exit 1
+
+cd ..
+mkdir sub3
+cd sub3
+PATH=..$PATH_SEPARATOR$PATH; export PATH
+PYTHON=my-py py-compile foo.py
+test -f my-py.run
+ls | grep -v '^my-py\.run$' | grep . && Exit 1
+
+:
diff --git a/tests/aclocal-print-acdir.test 
b/tests/py-compile-option-terminate.test
similarity index 60%
copy from tests/aclocal-print-acdir.test
copy to tests/py-compile-option-terminate.test
index add1f64..69f9bb5 100755
--- a/tests/aclocal-print-acdir.test
+++ b/tests/py-compile-option-terminate.test
@@ -14,22 +14,31 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Test on aclocal's `--print-ac-dir' option.
+# Check that a non-option argument and the `--' special argument
+# explicitly terminate the option list for `py-compile'.
 
+required=python
 . ./defs || Exit 1
 
 set -e
 
-$ACLOCAL --print-ac-dir
-test "`$ACLOCAL --print-ac-dir`" = "$top_testsrcdir/m4"
-
-$ACLOCAL -Wno-obsolete --acdir foo --print-ac-dir
-test "`$ACLOCAL -Wno-obsolete --acdir foo --print-ac-dir`" = foo
-
-$ACLOCAL --system-acdir /bar --print-ac-dir
-test "`$ACLOCAL --system-acdir /bar --print-ac-dir`" = /bar
-
-$ACLOCAL --automake-acdir /bar --print-ac-dir
-test "`$ACLOCAL --automake-acdir /bar --print-ac-dir`" = "$top_testsrcdir/m4"
+cp "$testsrcdir/../lib/py-compile" .
+
+: > ./-o.py
+: > ./--foo.py
+./py-compile -- -o.py --foo.py
+test -f ./-o.pyc
+test -f ./-o.pyo
+test -f ./--foo.pyc
+test -f ./--foo.pyo
+rm -f ./-*.py[co]
+: > x.py
+./py-compile x.py -o.py --foo.py
+test -f ./x.pyc
+test -f ./x.pyo
+test -f ./-o.pyc
+test -f ./-o.pyo
+test -f ./--foo.pyc
+test -f ./--foo.pyo
 
 :
diff --git a/tests/py-compile-usage.test b/tests/py-compile-usage.test
new file mode 100755
index 0000000..7e8c786
--- /dev/null
+++ b/tests/py-compile-usage.test
@@ -0,0 +1,75 @@
+#! /bin/sh
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test `py-compile --help', `py-compile --version', and that `py-compile'
+# correctly complains on wrong usage.
+
+. ./defs || Exit 1
+
+set -e
+
+cp "$testsrcdir/../lib/py-compile" .
+
+# --help
+
+./py-compile --help >stdout 2>stderr \
+  || { cat stdout; cat stderr >&2; Exit 1; }
+cat stdout
+test -s stderr && { cat stderr >&2; Exit 1; }
+grep '^Usage: py-compile .' stdout
+$FGREP ' [--basedir DIR]' stdout
+$FGREP ' [--destdir DIR]' stdout
+
+# --version
+
+./py-compile --version >stdout 2>stderr \
+  || { cat stdout; cat stderr >&2; Exit 1; }
+cat stdout
+test -s stderr && { cat stderr >&2; Exit 1; }
+year='20[0-9][0-9]' # Hopefully automake will be obsolete in 80 years ;-)
+month='(0[0-9]|1[012])'
+day='([012][0-9]|3[01])'
+hour='([01][0-9]|2[0123])'
+LC_ALL=C $EGREP "^py-compile $year-$month-$day\.$hour" stdout
+test `wc -l <stdout` -eq 1
+
+# Unknown option.
+for opt in -b -d --foo; do
+  ./py-compile $opt 2>stderr && { cat stderr >&2; Exit 1; }
+  cat stderr >&2
+  grep "^py-compile: unrecognized option ['\`]$opt'" stderr
+  grep "^Try [\`']py-compile --help' for more information" stderr
+done
+
+# Missing option argument.
+
+for opt in --basedir --destdir; do
+  ./py-compile $opt 2>stderr && { cat stderr >&2; Exit 1; }
+  cat stderr >&2
+  grep "^py-compile: option ['\`]$opt' requires an argument" stderr
+  grep "^Try [\`']py-compile --help' for more information" stderr
+done
+
+# Missing files.
+
+for args in '' '--basedir dir' '--destdir dir'; do
+  ./py-compile $args 2>stderr && { cat stderr >&2; Exit 1; }
+  cat stderr >&2
+  grep '^py-compile: no files given' stderr
+  grep "^Try [\`']py-compile --help' for more information" stderr
+done
+
+:


hooks/post-receive
-- 
GNU Automake



reply via email to

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