automake-commit
[Top][All Lists]
Advanced

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

[automake-commit] branch master updated: rm: convert more cases to am__r


From: Mike Frysinger
Subject: [automake-commit] branch master updated: rm: convert more cases to am__rm_f
Date: Mon, 09 Jan 2023 00:17:35 -0500

This is an automated email from the git hooks/post-receive script.

vapier pushed a commit to branch master
in repository automake.

View the commit online:
https://git.savannah.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=f15852df5f71631cfc4f03c0b8897b0a20fc79d3

The following commit(s) were added to refs/heads/master by this push:
     new f15852df5 rm: convert more cases to am__rm_f
f15852df5 is described below

commit f15852df5f71631cfc4f03c0b8897b0a20fc79d3
Author: Mike Frysinger <vapier@gentoo.org>
AuthorDate: Tue Jan 3 21:46:38 2023 -0500

    rm: convert more cases to am__rm_f
    
    Fixes automake bug https://bugs.gnu.org/10828.
    
    Clean up a few more cases where we were doing `test ... || rm ...` to
    avoid calling `rm -f` without arguments by leveraging am__rm_f.  These
    were harder to find in the source due to their constructed nature.
    
    The clean programs rules in particular were much more complicated than
    they needed to be.  This logic boiled down to two things: delete the
    list of programs, and then delete the list without the exeext suffix,
    but only if the list of programs is non-empty.
    
    The check-TESTS rule was converted to am__rm_f, but a simplification
    was missed where the $list variable is inlined.
    
    * bin/automake.in: Delete test -z logic and always call am__rm_f.
    * contrib/check-html.am: Use $(am__rm_f) helper.
    * doc/automake.texi: Update examples to match current behavior.
    * lib/am/check.am: Inline $list variable.
    * lib/am/progs.am: Rewrite rule to use $(am__rm_f).
---
 bin/automake.in       | 7 +------
 contrib/check-html.am | 3 +--
 doc/automake.texi     | 6 +++---
 lib/am/check.am       | 4 ++--
 lib/am/progs.am       | 9 ++-------
 5 files changed, 9 insertions(+), 20 deletions(-)

diff --git a/bin/automake.in b/bin/automake.in
index b847a0993..306913279 100644
--- a/bin/automake.in
+++ b/bin/automake.in
@@ -4733,12 +4733,7 @@ sub handle_clean
       prog_error 'invalid entry in %clean_files'
        unless exists $rms{$when};
 
-      my $rm = "rm -f $file";
-      # If file is a variable, make sure when don't call 'rm -f' without args.
-      $rm ="test -z \"$file\" || $rm"
-       if ($file =~ /^\s*\$(\(.*\)|\{.*\})\s*$/);
-
-      push @{$rms{$when}}, "\t-$rm\n";
+      push @{$rms{$when}}, "\t-\$(am__rm_f) $file\n";
     }
 
   $output_rules .= file_contents
diff --git a/contrib/check-html.am b/contrib/check-html.am
index 1588acf2e..27bb62e8e 100644
--- a/contrib/check-html.am
+++ b/contrib/check-html.am
@@ -24,8 +24,7 @@ TEST_SUITE_HTML = $(TEST_SUITE_LOG:.log=.html)
 mostlyclean-local: mostlyclean-check-html
 .PHONY: mostlyclean-check-html
 mostlyclean-check-html:
-## Expand $(TEST_LOGS) only once, to avoid exceeding line length limits.
-       list='$(TEST_LOGS:.log=.html)'; test -z "$$list" || rm -f $$list
+       $(am__rm_f) $(TEST_LOGS:.log=.html)
        rm -f $(TEST_SUITE_HTML)
 
 .log.html:
diff --git a/doc/automake.texi b/doc/automake.texi
index 58156d9bf..ec14c5c4c 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -7527,8 +7527,8 @@ if you try to run @samp{make foo} explicitly:
 
 @example
 % make clean
-test -z "bindir.h" || rm -f bindir.h
-test -z "foo" || rm -f foo
+rm -f bindir.h
+rm -f foo
 rm -f *.o
 % : > .deps/foo.Po # Suppress previously recorded dependencies
 % make foo
@@ -11324,7 +11324,7 @@ gcc -Wall -o foo main.o func.o
 
 @i{Clean up, so that we can rebuild everything from scratch.}
 % @kbd{make clean}
-test -z "foo" || rm -f foo
+rm -f foo
 rm -f *.o
 
 @i{Silent rules enabled: the output is minimal but informative.  In
diff --git a/lib/am/check.am b/lib/am/check.am
index f0c9ddfbe..eca793582 100644
--- a/lib/am/check.am
+++ b/lib/am/check.am
@@ -405,8 +405,8 @@ RECHECK_LOGS = $(TEST_LOGS)
 ## ------------------------------------------ ##
 
 check-TESTS: %CHECK_DEPS%
-       @list='$(RECHECK_LOGS)';           $(am__rm_f) $$list
-       @list='$(RECHECK_LOGS:.log=.trs)'; $(am__rm_f) $$list
+       @$(am__rm_f) $(RECHECK_LOGS)
+       @$(am__rm_f) $(RECHECK_LOGS:.log=.trs)
 ## We always have to remove $(TEST_SUITE_LOG), to ensure its rule is run
 ## in any case even in lazy mode: otherwise, if no test needs rerunning,
 ## or a prior run plus reruns all happen within the same timestamp (can
diff --git a/lib/am/progs.am b/lib/am/progs.am
index 0b74cca2e..e665a1f51 100644
--- a/lib/am/progs.am
+++ b/lib/am/progs.am
@@ -114,13 +114,8 @@ clean-%DIR%PROGRAMS:
 ## Cleaning the '_libs/' or '.libs/' directory is done from clean-libtool.
 ## FIXME: In the future (i.e., when it works) it would be nice to delegate
 ## this task to "libtool --mode=clean".
-?LIBTOOL?      @list='$(%DIR%_PROGRAMS)'; test -n "$$list" || exit 0; \
-?LIBTOOL?      echo " rm -f" $$list; \
-?LIBTOOL?      rm -f $$list || exit $$?; \
-?LIBTOOL?      test -n "$(EXEEXT)" || exit 0; \
-?LIBTOOL?      list=`for p in $$list; do echo "$$p"; done | sed 
's/$(EXEEXT)$$//'`; \
-?LIBTOOL?      echo " rm -f" $$list; \
-?LIBTOOL?      rm -f $$list
+?LIBTOOL?      $(am__rm_f) $(%DIR%_PROGRAMS)
+?LIBTOOL?      test -z "$(EXEEXT)" || $(am__rm_f) $(%DIR%_PROGRAMS:$(EXEEXT)=)
 
 
 ## ---------- ##



reply via email to

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