autoconf-patches
[Top][All Lists]
Advanced

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

Fw: [RFA] Validate configure script syntax


From: Paolo Bonzini
Subject: Fw: [RFA] Validate configure script syntax
Date: Thu, 4 Dec 2003 14:30:27 +0100

----- Original Message -----
From: "Akim Demaille" <address@hidden>
To: <address@hidden>; "Paolo Bonzini" <address@hidden>
Cc: <address@hidden>
Sent: Thursday, December 04, 2003 8:23 AM
Subject: Re: [RFA] Validate configure script syntax


>
> [Paolo, it looks like I can't post to gnu.org, I don't know why, but
> this is really annoying.  Could you forward this for me?  Thanks!]
>
>  > This improves the testing even for tests that are skipped or that do
>  > not actually run config.status.  Unfortunately it wildly increases (by
>  > almost 300k) the size of the testsuite script, so I'd understand a
>  > rejection.
>
> Well, it must slow things down too.
>
>  > Paolo
>
>  > 2003-12-03  Paolo Bonzini  <address@hidden>
>
>  > * tests/local.at (AT_CHECK_SHELL_SYNTAX,
>  > AT_DETECT_SH_N, AT_CHECK_PERL_SYNTAX): Extracted
>  > from tools.at.
>  > (AT_CHECK_AUTOCONF): Use AT_CHECK_SHELL_SYNTAX
>  > on the generated configure file.
>  > * tests/tools.at (Syntax of the shell scripts):
>  > Simplify using AT_CHECK_SHELL_SYNTAX.
>  > * tests/tools.at (Syntax of the Perl scripts):
>  > Remove definition of AT_CHECK_PERL_SYNTAX.
>
> Please, respect the width of Autoconf's ChangeLog.
>
>  >  2003-11-26  Paolo Bonzini  <address@hidden>
>
>  >  * lib/m4sugar/m4sh.m4 (_AS_BOURNE_COMPATIBLE):
>
>  > Index: autoconf/tests/local.at
>  > ===================================================================
>  > RCS file: /cvsroot/autoconf/autoconf/tests/local.at,v
>  > retrieving revision 1.3
>  > diff -u -r1.3 local.at
>  > --- autoconf/tests/local.at 27 Aug 2003 15:14:04 -0000 1.3
>  > +++ autoconf/tests/local.at 3 Dec 2003 10:34:09 -0000
>  > @@ -26,6 +26,45 @@
>
>  >  AT_TESTED([autom4te autoconf autoheader autoupdate autoreconf
ifnames])
>
>  > +## ---------------- ##
>  > +## Testing syntax.  ##
>  > +## ---------------- ##
>  > +
>  > +m4_define([AT_CHECK_SHELL_SYNTAX],
>  > +[AS_REQUIRE([AT_DETECT_SH_N])dnl
>
> I have avoided AS_REQUIRE on purpose in the case of Autotest: the
> point is that (when someone has some spare time) we can extract a
> small test script focusing on the exact failure.  This is what pleases
> people having test suites a` la Automake.  We should be able to
> provide this to them.  I don't think AS_REQUIRE fits in the picture.
>
> Maybe we should have this tested in configure.ac and left in atlocal.
>
>
>  > +AS_IF([test $at_have_sh_n = yes], [AT_CHECK([/bin/sh -n $1], 0)],
[$2])])
>  > +
>  > +m4_defun([AT_DETECT_SH_N],
>  > +[# A script that never returns.  We don't care that it never returns,
>  > +# broken /bin/sh loop equally with `false', but it makes it easier to
>  > +# test the robustness in a good environment: just remove the `-n'.
>  > +AT_DATA([endless.sh],
>  > +[[while :
>  > +do
>  > +  :
>  > +done
>  > +]])
>  > +
>  > +# A script in charge of testing `/bin/sh -n'.
>  > +AT_DATA([syntax.sh],
>  > +[(/bin/sh -n endless.sh) &
>  > +sleep 2
>  > +if kill $! >/dev/null 2>&1; then
>  > +  # We managed to kill the child, which means that we probably
>  > +  # can't trust `/bin/sh -n', hence the test failed.
>  > +  AS_EXIT(1)
>  > +fi
>  > +])
>  > +
>  > +AS_IF([/bin/sh ./syntax.sh 2>&1 > /dev/null],
>  > +  at_have_sh_n=yes, at_have_sh_n=no)
>  > +
>  > +rm endless.sh syntax.sh])
>
> The coding style leave the closing ]) at col 0 for long macros.
> Please, respect that too.
>
>  > +
>  > +m4_define([AT_CHECK_PERL_SYNTAX],
>  > +[AT_CHECK([autom4te_perllibdir=$abs_top_srcdir/lib $PERL -c
$abs_top_builddir/bin/$1],
>  > +          0, [], [ignore])])
>  > +
>  >  ## ------------------ ##
>  >  ## Testing autom4te.  ##
>  >  ## ------------------ ##
>  > @@ -219,7 +258,10 @@
>  >  # ----------------------------------------------------------
>  >  m4_define([AT_CHECK_AUTOCONF],
>  >  [AT_CHECK([autoconf $1],
>  > -   [$2], [$3], [$4])])
>  > +   [$2], [$3], [$4])
>  > +if test -s configure; then
>  > +  AT_CHECK_SHELL_SYNTAX(configure)
>  > +fi])
>
> What is the impact on the duration of the test suite?
>
>
>  >  # AT_CHECK_AUTOHEADER(ARGS, [EXIT-STATUS = 0], STDOUT, STDERR)
>  > @@ -239,7 +281,10 @@
>  >  [AT_CHECK([top_srcdir=$abs_top_srcdir ./configure $1],
>  >    [$2],
>  >    m4_default([$3], [ignore]), [$4],
>  > -   [{ echo "$srcdir/AT_LINE: config.log"; sed 's/^/> /' config.log; }
>>$at_group_log ])])
>  > +   [{ echo "$srcdir/AT_LINE: config.log"; sed 's/^/> /' config.log; }
>>$at_group_log ])
>  > +if test -s config.status; then
>  > +  AT_CHECK_SHELL_SYNTAX(config.status)
>  > +fi])])
>
>
>  >  # AT_CHECK_ENV
>  > Index: autoconf/tests/tools.at
>  > ===================================================================
>  > RCS file: /cvsroot/autoconf/autoconf/tests/tools.at,v
>  > retrieving revision 1.73
>  > diff -u -r1.73 tools.at
>  > --- autoconf/tests/tools.at 27 Nov 2003 10:04:14 -0000 1.73
>  > +++ autoconf/tests/tools.at 3 Dec 2003 10:34:09 -0000
>  > @@ -46,41 +46,17 @@
>
>  >  AT_SETUP([Syntax of the shell scripts])
>
>  > -# A script that never returns.  We don't care that it never returns,
>  > -# broken /bin/sh loop equally with `false', but it makes it easier to
>  > -# test the robustness in a good environment: just remove the `-n'.
>  > -AT_DATA([endless.sh],
>  > -[[while :
>  > -do
>  > -  :
>  > -done
>  > -]])
>  > -
>  > -# A script in charge of testing `/bin/sh -n'.
>  > -AT_DATA([syntax.sh],
>  > -[[(/bin/sh -n endless.sh) &
>  > -sleep 2
>  > -if kill $! >/dev/null 2>&1; then
>  > -  # We managed to kill the child, which means that we probably
>  > -  # can't trust `/bin/sh -n', hence the test failed.
>  > -  exit 77
>  > -fi
>  > -]])
>  > -
>  > -# If we can't trust sh, just skip.
>  > -AT_CHECK([/bin/sh ./syntax.sh])
>  > -
>  >  # Specify the path to the tool, some shells don't honor PATH when
>  >  # running `sh PROG'.
>
>  > -AT_CHECK([/bin/sh -n $abs_top_builddir/bin/autoconf],   0)
>  > -AT_CHECK([/bin/sh -n $abs_top_builddir/tests/autoconf],   0)
>  > -AT_CHECK([/bin/sh -n $abs_top_builddir/tests/testsuite],   0)
>  > +AT_CHECK_SHELL_SYNTAX([$abs_top_builddir/bin/autoconf], exit 77)
>  > +AT_CHECK_SHELL_SYNTAX([$abs_top_builddir/tests/autoconf], exit 77)
>  > +AT_CHECK_SHELL_SYNTAX([$abs_top_builddir/tests/testsuite], exit 77)
>
>  >  # These are not built, they are in the src tree.
>  > -AT_CHECK([/bin/sh -n $abs_top_srcdir/config/install-sh], 0)
>  > -AT_CHECK([/bin/sh -n $abs_top_srcdir/config/mkinstalldirs], 0)
>  > -AT_CHECK([/bin/sh -n $abs_top_srcdir/config/missing], 0)
>  > +AT_CHECK_SHELL_SYNTAX([$abs_top_srcdir/config/install-sh], exit 77)
>  > +AT_CHECK_SHELL_SYNTAX([$abs_top_srcdir/config/mkinstalldirs], exit 77)
>  > +AT_CHECK_SHELL_SYNTAX([$abs_top_srcdir/config/missing], exit 77)
>
>  >  AT_CLEANUP
>
>  > @@ -92,14 +68,6 @@
>  >  ## ---------------------------- ##
>
>  >  AT_SETUP([Syntax of the Perl scripts])
>  > -
>  > -# Perl says things like:
>  > -# | % perl -c ./autom4te
>  > -# | ./autom4te syntax OK
>  > -# Ignore it, it might change between releases.
>  > -m4_define([AT_CHECK_PERL_SYNTAX],
>  > -[AT_CHECK([autom4te_perllibdir=$abs_top_srcdir/lib $PERL -c
$abs_top_builddir/bin/$1],
>  > -   0, [], [ignore])])
>
>  >  AT_CHECK_PERL_SYNTAX([autoheader])
>  >  AT_CHECK_PERL_SYNTAX([autom4te])
>






reply via email to

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