tests: reimplement wrappers for automake and aclocal in perl
authorStefano Lattarini <stefano.lattarini@gmail.com>
Sat, 4 Aug 2012 16:36:24 +0000 (18:36 +0200)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Sat, 4 Aug 2012 16:36:24 +0000 (18:36 +0200)
This will allow us to avoid one extra shell invocation per automake
and aclocal invocation in our testsuite, and, more importantly, will
allow us not to worry about potential shell portability issues, at
least in those wrappers.  For an example of such a portability issue,
refer to the recent commit v1.12.2-80-g65dadf6 "tests: work around a
ksh bug w.r.t. ${1+"$@"}".

* t/wrap/automake.in, t/wrap/aclocal.in: Rewritten in perl.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
t/wrap/aclocal.in
t/wrap/automake.in

index 18ee13a..a3defa9 100644 (file)
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!@PERL@ -w
 # @configure_input@
 
 # Copyright (C) 2012 Free Software Foundation, Inc.
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-fi
-
-perllibdir="@abs_top_builddir@/lib@PATH_SEPARATOR@@abs_top_srcdir@/lib"
-export perllibdir
-
-exec "@abs_top_builddir@/aclocal" "--automake-acdir=@abs_top_srcdir@/m4" \
-     "--system-acdir=@abs_top_srcdir@/m4/acdir" ${1+"$@"}
+BEGIN
+{
+  use strict;
+  my $libdir;
+  $libdir = '@abs_top_srcdir@/lib';
+  $libdir = '@abs_top_builddir@/lib' . '@PATH_SEPARATOR@' . $libdir
+    if '@srcdir@' ne '.';
+  $ENV{perllibdir} = $libdir;
+  unshift @ARGV,
+    '--automake-acdir=@abs_top_srcdir@/m4',
+    '--system-acdir=@abs_top_srcdir@/m4/acdir';
+}
+require '@abs_top_builddir@/aclocal';
index b77177c..8417360 100644 (file)
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!@PERL@ -w
 # @configure_input@
 
 # Copyright (C) 2012 Free Software Foundation, Inc.
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-fi
-
-perllibdir="@abs_top_builddir@/lib@PATH_SEPARATOR@@abs_top_srcdir@/lib"
-export perllibdir
-# Don't trust ${1+"$@"}: it has subtle bugs in some Korn shells (for very
-# corner case only admittedly, but those have already bitten us -- see
-# automake bug#10898).
-case $# in
-  0) exec "@abs_top_builddir@/automake" "--libdir=@abs_top_srcdir@/lib";;
-  *) exec "@abs_top_builddir@/automake" "--libdir=@abs_top_srcdir@/lib" "$@";;
-esac
+BEGIN
+{
+  use strict;
+  my $libdir;
+  $libdir = '@abs_top_srcdir@/lib';
+  $libdir = '@abs_top_builddir@/lib' . '@PATH_SEPARATOR@' . $libdir
+    if '@srcdir@' ne '.';
+  $ENV{perllibdir} = $libdir;
+  unshift @ARGV, '--libdir=@abs_top_srcdir@/lib';
+}
+require '@abs_top_builddir@/automake';