Subject: bug#11543: 3 test failures with automake-1.12.0 and perl-5.16.0

From: Stefano Lattarini <[email-masked]>
Date: Mon, 28 May 2012 13:47:22 +0200

severity 11543 serious
tags 11543 patch
thanks

On 05/22/2012 10:34 PM, Matt Burgess wrote:
> Hi,
Hi Matt, sorry for the delay.

> aclocal8, acsilent and unused test cases all fail if I have the newly
> released perl-5.16.0 installed.
> 
> The error appears to be because of a change in Perl, which now ends up
> outputting the following to stderr:
> 
> main::scan_file() called too early to check prototype
> at /sources/automake-1.12/aclocal line 642.
> 
> I've attached the logs.  If you require any further information, just
> let me know.
> 
> Thanks,
> 
> Matt.
>
Does the attached patch fixes your issue?

Thanks,
  Stefano
>From 72ed7e00f847ce1ab3c8d460a5a4dcc06a3c560a Mon Sep 17 00:00:00 2001
Message-Id: <72ed7e00f[email-masked]>
From: Stefano Lattarini <[email-masked]>
Date: Mon, 28 May 2012 13:32:03 +0200
Subject: [PATCH] aclocal: declare function prototypes, do not use '&' in
 function calls

This change will also fix automake bug#11543 (from a report by Matt
Burgess).

* aclocal.in: Declare prototypes for almost all functions early, before
any actual function definition (but omit the prototype for the dynamically
generated '&search' function).  Add prototypes to any function definition.
Remove '&' from function invocations (i.e., simply use "func(ARGS..)"
instead of "&func(ARGS...)").
* THANKS: Update.

Signed-off-by: Stefano Lattarini <[email-masked]>
---
 THANKS     |    1 +
 aclocal.in |   42 ++++++++++++++++++++++++++++++++++--------
 2 files changed, 35 insertions(+), 8 deletions(-)

diff --git a/THANKS b/THANKS
index 0824c4f..01b78c1 100644
--- a/THANKS
+++ b/THANKS
@@ -239,6 +239,7 @@ Martin Waitz                    [email-masked]
 Mathias Doreille                [email-masked]
 Mathias Froehlich               [email-masked]
 Mathias Hasselmann              [email-masked]
+Matt Burgess                    [email-masked]
 Matt Leach                      [email-masked]
 Matthew D. Langston             [email-masked]
 Matthias Andree                 [email-masked]
diff --git a/aclocal.in b/aclocal.in
index dfb851b..e8855d5 100644
--- a/aclocal.in
+++ b/aclocal.in
@@ -152,8 +152,34 @@ my $erase_me;
 
 ################################################################
 
+# Prototypes for all subroutines.
+
+sub unlink_tmp (;$);
+sub xmkdir_p ($);
+sub check_acinclude ();
+sub reset_maps ();
+sub install_file ($$);
+sub list_compare (\@\@);
+sub scan_m4_dirs ($@);
+sub scan_m4_files ();
+sub add_macro ($);
+sub scan_configure_dep ($);
+sub add_file ($);
+sub scan_file ($$$);
+sub strip_redundant_includes (%);
+sub trace_used_macros ();
+sub scan_configure ();
+sub write_aclocal ($@);
+sub usage ($);
+sub version ();
+sub handle_acdir_option ($$);
+sub parse_arguments ();
+sub parse_ACLOCAL_PATH ();
+
+################################################################
+
 # Erase temporary file ERASE_ME.  Handle signals.
-sub unlink_tmp
+sub unlink_tmp (;$)
 {
   my ($sig) = @_;
 
@@ -350,7 +376,7 @@ sub scan_m4_dirs ($@)
 	  next if $file eq 'aclocal.m4';
 
 	  my $fullfile = File::Spec->canonpath ("$m4dir/$file");
-	    &scan_file ($type, $fullfile, 'aclocal');
+	  scan_file ($type, $fullfile, 'aclocal');
 	}
       closedir (DIR);
     }
@@ -361,12 +387,12 @@ sub scan_m4_files ()
 {
   # First, scan configure.ac.  It may contain macro definitions,
   # or may include other files that define macros.
-  &scan_file (FT_USER, $configure_ac, 'aclocal');
+  scan_file (FT_USER, $configure_ac, 'aclocal');
 
   # Then, scan acinclude.m4 if it exists.
   if (-f 'acinclude.m4')
     {
-      &scan_file (FT_USER, 'acinclude.m4', 'aclocal');
+      scan_file (FT_USER, 'acinclude.m4', 'aclocal');
     }
 
   # Finally, scan all files in our search paths.
@@ -380,7 +406,7 @@ sub scan_m4_files ()
   my $search = "sub search {\nmy \$found = 0;\n";
   foreach my $key (reverse sort keys %map)
     {
-      $search .= ('if (/\b\Q' . $key . '\E(?!\w)/) { & add_macro ("' . $key
+      $search .= ('if (/\b\Q' . $key . '\E(?!\w)/) { add_macro ("' . $key
 		  . '"); $found = 1; }' . "\n");
     }
   $search .= "return \$found;\n};\n";
@@ -403,7 +429,7 @@ sub add_macro ($)
 
   verb "saw macro $macro";
   $macro_seen{$macro} = 1;
-  &add_file ($map{$macro});
+  add_file ($map{$macro});
 }
 
 # scan_configure_dep ($file)
@@ -465,7 +491,7 @@ sub scan_configure_dep ($)
     }
 
   add_macro ($_) foreach (@rlist);
-  &scan_configure_dep ($_) foreach @ilist;
+  scan_configure_dep ($_) foreach @ilist;
 }
 
 # add_file ($FILE)
@@ -931,7 +957,7 @@ EOF
 }
 
 # Print version and exit.
-sub version()
+sub version ()
 {
   print <<EOF;
 aclocal (GNU $PACKAGE) $VERSION
-- 
1.7.9.5