Comment #1 on issue 802 by [email protected]: Ganeti doesn't build on Debian Jessie
http://code.google.com/p/ganeti/issues/detail?id=802

This is a side-effect of automake 1.13 changing the default test harness from serial-tests to parallel-tests. From the changelog of 1.12 that introduced the
parallel test harness (although not as default):

  - The default testsuite driver offered by the 'parallel-tests' option is
    now implemented (partly at least) with the help of automake-provided
    auxiliary scripts (e.g., 'test-driver'), instead of relying entirely
    on code in the generated Makefile.in.
    This has two noteworthy implications.  The first one is that projects
    using the 'parallel-tests' option should now either run automake with
    the '--add-missing' option, or manually copy the 'test-driver' script
    into their tree.  The second, and more important, implication is that
    now, when the 'parallel-tests' option is in use, TESTS_ENVIRONMENT can
    no longer be used to define a test runner, and the command specified
    in LOG_COMPILER (and <ext>_LOG_COMPILER) must be a *real* executable
    program or script.  For example, this is still a valid usage (albeit
    a little contorted):

      TESTS_ENVIRONMENT = \
        if test -n '$(STRICT_TESTS)'; then \
          maybe_errexit='-e'; \
        else \
          maybe_errexit=''; \
        fi;
      LOG_COMPILER = $(SHELL) $$maybe_errexit

    OTOH, this is no longer a valid usage:

      TESTS_ENVIRONMENT = \
        $(SHELL) `test -n '$(STRICT_TESTS_CHECKING)' && echo ' -e'`

    neither is this:

      TESTS_ENVIRONMENT = \
        run_with_perl_or_shell () \
        { \
          if grep -q '^#!.*perl' $$1; then
            $(PERL) $$1; \
          else \
            $(SHELL) $$1; \
          fi; \
        }
      LOG_COMPILER = run_with_perl_or_shell

A workaround for the moment being is to revert to pre-1.13 defaults, by setting
the serial-tests automake option in Makefile.am. In the long term, we should
move all binaries to LOG_COMPILER, which will be future-proof and make sure
that the tests can run in parallel.

Regarding LOG_COMPILER, the following extract from automake's texinfo might be helpful:

   It's important to note that, differently from what we've seen for the
   serial test harness (*note Parallel Test Harness::), the
   'AM_TESTS_ENVIRONMENT' and 'TESTS_ENVIRONMENT' variables _cannot_ be use
   to define a custom test runner; the 'LOG_COMPILER' and 'LOG_FLAGS' (or
   their extension-specific counterparts) should be used instead:

     ## This is WRONG!
     AM_TESTS_ENVIRONMENT = PERL5LIB='$(srcdir)/lib' $(PERL) -Mstrict -w

     ## Do this instead.
     AM_TESTS_ENVIRONMENT = PERL5LIB='$(srcdir)/lib'; export PERL5LIB;
     LOG_COMPILER = $(PERL)
     AM_LOG_FLAGS = -Mstrict -w




--
You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings

Reply via email to