diff options
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | NEWS | 11 | ||||
-rw-r--r-- | bin/automake.in | 34 | ||||
-rw-r--r-- | doc/automake-ng.texi | 2 | ||||
-rwxr-xr-x | gen-testsuite-part | 8 | ||||
-rw-r--r-- | lib/am/texi-vers.am | 14 | ||||
-rw-r--r-- | m4/lispdir.m4 | 2 | ||||
-rw-r--r-- | t/Makefile.inc | 4 |
8 files changed, 42 insertions, 35 deletions
diff --git a/Makefile.am b/Makefile.am index ecd3a1a10..0b21450d9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -66,7 +66,7 @@ generated_file_finalize = $(AM_V_at) \ # For some tests or targets, we need to have the just-build automake and # aclocal scripts avaiable on PATH. extend_PATH = \ - { PATH='$(abs_builddir)/t/wrap'$(PATH_SEPARATOR)$$PATH && export PATH; } + { PATH='$(abs_builddir)/t/wrap$(PATH_SEPARATOR)'$$PATH && export PATH; } # The master location for INSTALL is lib/INSTALL. # This is where "make fetch" will install new versions. @@ -169,6 +169,15 @@ New in 1.15: - We no longer risk to use '$ac_aux_dir' before it's defined (see automake bug#15981). Bug introduced in Automake 1.14. + - The code used to detect whether the currently used make is GNU make + or not (relying on the private macro 'am__is_gnu_make') no longer + risks causing "Arg list too long" for projects using automatic + dependency tracking and having a ton of source files (bug#18744). + + - Automake tries to offer a more deterministic output for generated + Makefiles, in the face of the newly-introduced randomization for + hash keys order in Perl 5.18. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ New in 1.14.1: @@ -184,7 +193,7 @@ New in 1.14.1: was only relevant when the number of python files was high (which is unusual in practice). - - Automake try to offer a more reproducible output for warning messages, + - Automake try to offer a more deterministic output for warning messages, in the face of the newly-introduced randomization for hash keys order in Perl 5.18. diff --git a/bin/automake.in b/bin/automake.in index 13b27d155..d699ec6ee 100644 --- a/bin/automake.in +++ b/bin/automake.in @@ -335,9 +335,6 @@ my %extension_map = (); # configure.ac. my @configure_dist_common = (); -# List of the "auto-discovered" distributed files. -my @dist_common = (); - # This maps languages names onto objects. my %languages = (); # Maps each linker variable onto a language object. @@ -462,6 +459,9 @@ my %language_scratch; # handling on a per-language basis. my %lang_specific_files; +# List of the "auto-discovered" distributed files. +my @dist_common = (); + # This is set when 'handle_dist' has finished. Once this happens, # we should no longer push on dist_common. my $handle_dist_run; @@ -510,8 +510,6 @@ sub initialize_per_input () $output_rules = ''; $output_trailer = ''; - @dist_common = (); - Automake::Options::reset; Automake::Variable::reset; Automake::Rule::reset; @@ -536,9 +534,12 @@ sub initialize_per_input () @dist_targets = (); + @dist_common = (); + $handle_dist_run = 0; + %known_programs = (); - %known_libraries= (); - %known_ltlibraries= (); + %known_libraries = (); + %known_ltlibraries = (); %extension_seen = (); @@ -546,8 +547,6 @@ sub initialize_per_input () %lang_specific_files = (); - $handle_dist_run = 0; - $need_link = 0; $must_handle_compiled_objects = 0; @@ -3107,7 +3106,7 @@ sub handle_dist () } # We might copy elements from @configure_dist_common to - # %dist_common if we think we need to. If the file appears in our + # @dist_common if we think we need to. If the file appears in our # directory, we would have discovered it already, so we don't # check that. But if the file is in a subdir without a Makefile, # we want to distribute it here if we are doing '.'. Ugly! @@ -3125,7 +3124,7 @@ sub handle_dist () push_dist_common ($file) if ($dir eq '.' || ! is_make_dir ($dir)); } - @configure_dist_common = (); + @configure_dist_common = (); } # We don't expected further attempts to modify @dist_common @@ -6246,10 +6245,10 @@ sub required_file_check_or_copy return if $found_it && (! $add_missing || ! $force_missing); - # If we've already looked for it, we're done. You might wonder why - # we don't do this before searching for the file. If we do that, - # then something like AC_OUTPUT(subdir/foo foo) will fail to put - # 'foo.in' into the list of distributed files @dist_common. + # If we've already looked for it, we're done. You might wonder why we + # don't do this before searching for the file. If we do that, then + # something like AC_OUTPUT([subdir/foo foo]) will fail to put 'foo.in' + # into $(DIST_COMMON). if (! $found_it) { return if defined $required_file_not_found{$fullfile}; @@ -6646,10 +6645,7 @@ sub generate_makefile # Helper function for usage(). sub print_autodist_files { - # NOTE: we need to call our 'uniq' function with the leading '&' - # here, because otherwise perl complains that "Unquoted string - # 'uniq' may clash with future reserved word". - my @lcomm = sort (&uniq (@_)); + my @lcomm = uniq (sort @_); my @four; format USAGE_FORMAT = diff --git a/doc/automake-ng.texi b/doc/automake-ng.texi index 2c4b4479b..b2f166fc7 100644 --- a/doc/automake-ng.texi +++ b/doc/automake-ng.texi @@ -12732,7 +12732,7 @@ instance, here is how @code{AM_PATH_LISPDIR} (@pxref{Emacs Lisp}) computes @samp{$(lispdir)}: @example -$EMACS -batch -q -eval '(while load-path +$EMACS -batch -Q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' >conftest.out lispdir=`sed -n diff --git a/gen-testsuite-part b/gen-testsuite-part index 3fac81f0b..087817aea 100755 --- a/gen-testsuite-part +++ b/gen-testsuite-part @@ -285,8 +285,9 @@ foreach my $test (@all_tests) $wrapper_setups{$test} = \@setups if @setups; } # And now create all the wrapper tests. -while (my ($wrapped_test, $setup_list) = each %wrapper_setups) +for my $wrapped_test (sort keys %wrapper_setups) { + my $setup_list = $wrapper_setups{$wrapped_test}; (my $base = $wrapped_test) =~ s/\.([^.]*)$//; my $suf = $1 or die "$me: test '$wrapped_test' lacks a suffix\n"; my $count = 0; @@ -345,7 +346,7 @@ my %depmodes = foreach my $lt (TRUE, FALSE) { - foreach my $m (keys %depmodes) + foreach my $m (sort keys %depmodes) { my $planned = ($lt && $m eq "auto") ? 84 : 28; my @required = @@ -393,8 +394,9 @@ print <<EOF; EOF -while (my ($k, $x) = each %deps_extractor) +for my $k (sort keys %deps_extractor) { + my $x = $deps_extractor{$k}; my $dist_prereqs = $x->{dist_prereqs} || ""; my $nodist_prereqs = $x->{nodist_prereqs} || ""; my @tests = grep { line_match $x->{line_matcher}, $_ } @all_tests; diff --git a/lib/am/texi-vers.am b/lib/am/texi-vers.am index 5e8010b31..cda2c262f 100644 --- a/lib/am/texi-vers.am +++ b/lib/am/texi-vers.am @@ -28,16 +28,16 @@ am.dist.common-files += %VTEXI% %STAMPVTI% ## in this file.) %STAMPVTI%: %TEXI% $(top_srcdir)/configure @$(am.cmd.ensure-target-dir-exists) - @(set `$(SHELL) $(am.conf.aux-dir)/mdate-sh $<`; \ - echo "@set UPDATED $$1 $$2 $$3"; \ - echo "@set UPDATED-MONTH $$2 $$3"; \ - echo "@set EDITION $(VERSION)"; \ - echo "@set VERSION $(VERSION)") > %VTI%.$$$$.tmp - @if cmp -s %VTI%.$$$$.tmp %VTEXI%; then \ + @(set `$(SHELL) $(am.conf.aux-dir)/mdate-sh $<` \ + && echo "@set UPDATED $$1 $$2 $$3" \ + && echo "@set UPDATED-MONTH $$2 $$3" \ + && echo "@set EDITION $(VERSION)" \ + && echo "@set VERSION $(VERSION)") > %VTI%.$$$$.tmp || exit; \ + if cmp -s %VTI%.$$$$.tmp %VTEXI%; then \ rm -f %VTI%.$$$$.tmp; \ else \ echo "Updating %VTEXI%" && mv -f %VTI%.$$$$.tmp %VTEXI%; \ - fi; + fi @cp %VTEXI% $@ am.clean.mostly.f += %VTI%.[0-9]*.tmp diff --git a/m4/lispdir.m4 b/m4/lispdir.m4 index 95a88da30..f1f2212f1 100644 --- a/m4/lispdir.m4 +++ b/m4/lispdir.m4 @@ -34,7 +34,7 @@ AC_DEFUN([AM_PATH_LISPDIR], # which is non-obvious for non-emacs users. # Redirecting /dev/null should help a bit; pity we can't detect "broken" # emacsen earlier and avoid running this altogether. - AC_RUN_LOG([$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' </dev/null >conftest.out]) + AC_RUN_LOG([$EMACS -batch -Q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' </dev/null >conftest.out]) am_cv_lispdir=`sed -n \ -e 's,/$,,' \ -e '/.*\/lib\/x*emacs\/site-lisp$/{s,.*/lib/\(x*emacs/site-lisp\)$,${libdir}/\1,;p;q;}' \ diff --git a/t/Makefile.inc b/t/Makefile.inc index a7b371439..8091be479 100644 --- a/t/Makefile.inc +++ b/t/Makefile.inc @@ -125,9 +125,9 @@ AM_TESTS_ENVIRONMENT += stderr_fileno_=9; export stderr_fileno_; # in case it is given with a relative name containing no slashes. AM_TESTS_ENVIRONMENT += \ if test $(srcdir) != .; then \ - PATH='$(abs_srcdir)/%D%/ax'$(PATH_SEPARATOR)$$PATH; \ + PATH='$(abs_srcdir)/%D%/ax$(PATH_SEPARATOR)'$$PATH; \ fi; \ - PATH='$(abs_builddir)/%D%/ax'$(PATH_SEPARATOR)$$PATH; \ + PATH='$(abs_builddir)/%D%/ax$(PATH_SEPARATOR)'$$PATH; \ export PATH; # Automatically-computed dependencies for tests. |