automake
[Top][All Lists]
Advanced

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

Re: autotest, automake & non-recursive makes


From: Paolo Bonzini
Subject: Re: autotest, automake & non-recursive makes
Date: Sun, 27 Oct 2013 08:29:14 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130923 Thunderbird/17.0.9

Il 26/09/2013 18:16, Diab Jerius ha scritto:
> # The `:;' works around a Bash 3.2 bug when the output is not writable.
> %D%/package.m4: $(top_srcdir)/configure.ac
>     :;{ \
>       echo '# Signature of the current package.' && \
>       echo 'm4_define([AT_PACKAGE_NAME],' && \
>       echo '  [$(PACKAGE_NAME)])' && \
>       echo 'm4_define([AT_PACKAGE_TARNAME],' && \
>       echo '  [$(PACKAGE_TARNAME)])' && \
>       echo 'm4_define([AT_PACKAGE_VERSION],' && \
>       echo '  [$(PACKAGE_VERSION)])' && \
>       echo 'm4_define([AT_PACKAGE_STRING],' && \
>       echo '  [$(PACKAGE_STRING)])' && \
>       echo 'm4_define([AT_PACKAGE_BUGREPORT],' && \
>       echo '  [$(PACKAGE_BUGREPORT)])'; \
>       echo 'm4_define([AT_PACKAGE_URL],' && \
>       echo '  [$(PACKAGE_URL)])'; \
>     } > $@
> 
> EXTRA_DIST += %D%/testsuite.at %D%/package.m4 %D%/$(TESTSUITE)
> DISTCLEANFILES  += %D%/atconfig %D%/testsuite.log
> 
> TESTSUITE = testsuite
> 
> check-local: %D%/atconfig %D%/$(TESTSUITE)
>     cd %D%; \
>     if test -f '$(TESTSUITE)' ; then d=; else d='$(abs_top_srcdir)/%D%/' ; fi 
> ;\
>     $(SHELL) $$d'$(TESTSUITE)' AUTOTEST_PATH='$(abs_builddir)/%D%'
> $(TESTSUITEFLAGS)
> 
> installcheck-local: %D%/atconfig  %D%/$(TESTSUITE)
>     cd %D%; \
>     if test -f '$(TESTSUITE)' ; then d=; else d='$(abs_top_srcdir)/%D%/' ; fi 
> ;\
>     $(SHELL) $$d'$(TESTSUITE)' AUTOTEST_PATH='$(abs_builddir)/%D%'
> $(TESTSUITEFLAGS)
> 
> clean-local:
>     test ! -f '%D%/$(TESTSUITE)' || $(SHELL) '%D%/$(TESTSUITE)' --clean
> 
> AUTOM4TE = $(SHELL) $(top_srcdir)/build-aux/missing --run autom4te
> AUTOTEST = $(AUTOM4TE) --language=autotest
> 
> %D%/$(TESTSUITE): %D%/testsuite.at %D%/package.m4
>     $(AUTOTEST) -I '$(srcdir)' -I '%D%' -o address@hidden address@hidden
>     mv address@hidden $@

We were doing something similar in msitools (https://wiki.gnome.org/msitools).

The main differences are:

(1) Generating package.m4 from configure, like

AC_CONFIG_FILES([tests/package.m4.tmp:tests/package.m4.in],
                [$srcdir/build-aux/move-if-change tests/package.m4.tmp 
$srcdir/tests/package.m4
                 cp $srcdir/tests/package.m4 tests/package.m4.tmp])

$ cat tests/package.m4.in 
# Signature of the current package.
m4_define([AT_PACKAGE_NAME], address@hidden@])
m4_define([AT_PACKAGE_TARNAME], address@hidden@])
m4_define([AT_PACKAGE_VERSION], address@hidden@])
m4_define([AT_PACKAGE_STRING], address@hidden@])
m4_define([AT_PACKAGE_BUGREPORT], address@hidden@])
m4_define([AT_PACKAGE_URL], address@hidden@])


(2) check-local and installcheck-local are simpler:

check-local: $(srcdir)/tests/testsuite atconfig atlocal
        $(SHELL) $(srcdir)/tests/testsuite AUTOTEST_PATH=. $(TESTSUITEFLAGS)

installcheck-local: $(srcdir)/tests/testsuite atconfig atlocal
        $(SHELL) $(srcdir)/tests/testsuite AUTOTEST_PATH=$(bindir) 
$(TESTSUITEFLAGS)

(Your check-local seems ok, installcheck-local seems the same as check-local
so it doesn't look right to me).


(3) clean-local is simply using "-":

clean-local:
        -$(SHELL) $(srcdir)/tests/testsuite --clean


Paolo



reply via email to

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