From 19b6504f8a92ec9db6330976dba85804e9c18d6e Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Wed, 15 Aug 2007 13:53:53 +0000 Subject: [PATCH] Incorporate Icarus Sparry's fix for 3330 and 15919, and test cases. One of our translations disappeared from the translations site so remove it. The fdl.texi file was changed to not contain any @node entries, so add some around it in make.texi. --- ChangeLog | 13 ++++++++ doc/make.texi | 5 +-- po/ChangeLog | 5 +++ po/LINGUAS | 4 +-- remake.c | 17 +++++++--- tests/ChangeLog | 13 ++++++++ tests/scripts/features/parallelism | 14 +++++++++ tests/scripts/targets/SECONDARY | 64 ++++++++++++++++++++++++++++++++++++++ 8 files changed, 127 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9c9ed3a..fa6847d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2007-08-15 Paul Smith + + * doc/make.texi (GNU Free Documentation License): The fdl.texi + file has had the section info removed, so add some to make.texi + before we include it. + +2007-08-15 Icarus Sparry + + * remake.c (check_dep): Reset the target state for intermediate + files. They might have been considered before but not updated + then (order-only for example) but they will be this time. + Fixes Savannah bug #'s 3330 and 15919. + 2007-07-13 Paul Smith * file.c (expand_deps): Use variable_buffer as the start of the diff --git a/doc/make.texi b/doc/make.texi index d6cfc3c..c30e794 100644 --- a/doc/make.texi +++ b/doc/make.texi @@ -11117,9 +11117,10 @@ tar.zoo: $(SRCS) $(AUX) @end group @end example -@raisesections +@node GNU Free Documentation License, Concept Index, Complex Makefile, Top +@appendixsec GNU Free Documentation License +@cindex FDL, GNU Free Documentation License @include fdl.texi -@lowersections @node Concept Index, Name Index, GNU Free Documentation License, Top @unnumbered Index of Concepts diff --git a/po/ChangeLog b/po/ChangeLog index cf7defe..46a61cf 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -1,3 +1,8 @@ +2007-08-15 Paul Smith + + * LINGUAS: The Kinyarwanda (rw) translation has disappeared from + the translation site, so remove it. + 2006-01-28 Paul D. Smith * LINGUAS: Added new translation for Vietnamese (vi). diff --git a/po/LINGUAS b/po/LINGUAS index 3f0c531..1fff63a 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -1,5 +1,5 @@ -# Set of available languages: 23 languages +# Set of available languages: 22 languages -be da de es fi fr ga gl he hr id ja ko nl pl pt_BR ru rw sv tr uk vi zh_CN +be da de es fi fr ga gl he hr id ja ko nl pl pt_BR ru sv tr uk vi zh_CN # Can't seem to get en@quot and en@boldquot to build properly? diff --git a/remake.c b/remake.c index 6168d29..d1cf702 100644 --- a/remake.c +++ b/remake.c @@ -982,6 +982,12 @@ check_dep (struct file *file, unsigned int depth, necessary, and see whether any of them is more recent than the file on whose behalf we are checking. */ struct dep *lastd; + int deps_running = 0; + + /* Reset this target's state so that we check it fresh. It could be + that it's already been checked as part of an order-only + prerequisite and so wasn't rebuilt then, but should be now. */ + set_command_state (file, cs_not_started); lastd = 0; d = file->deps; @@ -1020,14 +1026,17 @@ check_dep (struct file *file, unsigned int depth, if (d->file->command_state == cs_running || d->file->command_state == cs_deps_running) - /* Record that some of FILE's deps are still being made. - This tells the upper levels to wait on processing it until - the commands are finished. */ - set_command_state (file, cs_deps_running); + deps_running = 1; lastd = d; d = d->next; } + + if (deps_running) + /* Record that some of FILE's deps are still being made. + This tells the upper levels to wait on processing it until the + commands are finished. */ + set_command_state (file, cs_deps_running); } } diff --git a/tests/ChangeLog b/tests/ChangeLog index 6e53dc7..9a515a3 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,16 @@ +2007-08-15 Paul Smith + + These test cases were contributed by + Icarus Sparry and J. David Bryan for + Savannah bugs #3330 and #15919. + + * scripts/targets/SECONDARY: Add tests for Savannah bugs 3330 and + 15919. + + * scripts/features/parallelism: Add tests for wrong answer/hang + combining INTERMEDIATE, order-only prereqs, and parallelism. + See Savannah bugs 3330 and 15919. + 2007-07-13 Paul Smith Install a timeout so tests can never loop infinitely. diff --git a/tests/scripts/features/parallelism b/tests/scripts/features/parallelism index 432c088..11102f2 100644 --- a/tests/scripts/features/parallelism +++ b/tests/scripts/features/parallelism @@ -127,6 +127,20 @@ mod_a.o mod_b.o: ', '-j2', ''); +# TEST #9 -- Savannah bugs 3330 and 15919 +# In earlier versions of make this will either give the wrong answer, or hang. + +utouch(-10, 'target'); +run_make_test('target: intermed ; touch $@ + +.INTERMEDIATE: intermed +intermed: | phony ; touch $@ + +.PHONY: phony +phony: ; : phony', '-rR -j', ': phony'); +unlink('target'); + + # Make sure that all jobserver FDs are closed if we need to re-exec the # master copy. # diff --git a/tests/scripts/targets/SECONDARY b/tests/scripts/targets/SECONDARY index cf580b5..c954ee9 100644 --- a/tests/scripts/targets/SECONDARY +++ b/tests/scripts/targets/SECONDARY @@ -121,5 +121,69 @@ all: version2', unlink('version2'); +# TEST #9 -- Savannah bug #15919 +# The original fix for this bug caused a new bug, shown here. + +touch(qw(1.a 2.a)); + +run_make_test(' +%.c : %.b ; cp $< $@ +%.b : %.a ; cp $< $@ +all : 1.c 2.c', '-rR -j', +'cp 1.a 1.b +cp 2.a 2.b +cp 1.b 1.c +cp 2.b 2.c +rm 1.b 2.b'); + +unlink(qw(1.a 2.a 1.c 2.c)); + +# TEST #10 -- Savannah bug #15919 +touch('test.0'); +run_make_test(' +.SECONDARY : test.1 test.2 test.3 + +test : test.4 + +%.4 : %.int %.3 ; touch $@ + +%.int : %.3 %.2 ; touch $@ + +%.3 : | %.2 ; touch $@ + +%.2 : %.1 ; touch $@ + +%.1 : %.0 ; touch $@', '-rR -j 2', +'touch test.1 +touch test.2 +touch test.3 +touch test.int +touch test.4 +rm test.int'); + +# After a touch of test.0 it should give the same output, except we don't need +# to rebuild test.3 (order-only) +sleep(1); +touch('test.0'); +run_make_test(undef, '-rR -j 2', +'touch test.1 +touch test.2 +touch test.int +touch test.4 +rm test.int'); + +# With both test.0 and test.3 updated it should still build everything except +# test.3 +sleep(1); +touch('test.0', 'test.3'); +run_make_test(undef, '-rR -j 2', +'touch test.1 +touch test.2 +touch test.int +touch test.4 +rm test.int'); + +unlink(qw(test.0 test.1 test.2 test.3 test.4)); + # This tells the test driver that the perl test script executed properly. 1; -- 2.7.4