mirror of
https://git.savannah.gnu.org/git/make.git
synced 2025-01-27 01:27:58 +00:00
* implicit.c (pattern_search): [SV 43677] Mark files secondary.
In order to fix SV 12267 we were marking the prerequisites of implicit (pattern) targets that existed elsewhere in the makefile as precious to keep them from being deleted as intermediate files. However this also keeps them from being deleted on error. Instead mark them as secondary. * tests/scripts/targets/DELETE_ON_ERROR: Test DELETE_ON_ERROR.
This commit is contained in:
parent
43181f1f82
commit
42745a900f
2 changed files with 25 additions and 2 deletions
|
@ -864,9 +864,10 @@ pattern_search (struct file *file, int archive,
|
|||
|
||||
/* We don't want to delete an intermediate file that happened
|
||||
to be a prerequisite of some (other) target. Mark it as
|
||||
precious. */
|
||||
secondary. We don't want it to be precious as that disables
|
||||
DELETE_ON_ERROR etc. */
|
||||
if (f != 0)
|
||||
f->precious = 1;
|
||||
f->secondary = 1;
|
||||
else
|
||||
f = enter_file (imf->name);
|
||||
|
||||
|
|
22
tests/scripts/targets/DELETE_ON_ERROR
Normal file
22
tests/scripts/targets/DELETE_ON_ERROR
Normal file
|
@ -0,0 +1,22 @@
|
|||
#! -*-perl-*-
|
||||
|
||||
$description = "Test the behaviour of the .DELETE_ON_ERROR target.";
|
||||
|
||||
$details = "";
|
||||
|
||||
run_make_test('
|
||||
.DELETE_ON_ERROR:
|
||||
all: ; false > $@
|
||||
',
|
||||
'', "false > all\n#MAKEFILE#:3: recipe for target 'all' failed\n#MAKE#: *** [all] Error 1\n#MAKE#: *** Deleting file 'all'", 512);
|
||||
|
||||
run_make_test('
|
||||
.DELETE_ON_ERROR:
|
||||
all: foo.x ;
|
||||
%.x : %.q ; echo > $@
|
||||
%.q : ; false > $@
|
||||
',
|
||||
'', "false > foo.q\n#MAKEFILE#:5: recipe for target 'foo.q' failed\n#MAKE#: *** [foo.q] Error 1\n#MAKE#: *** Deleting file 'foo.q'", 512);
|
||||
|
||||
# This tells the test driver that the perl test script executed properly.
|
||||
1;
|
Loading…
Reference in a new issue