summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2007-08-15 13:53:53 +0000
committerPaul Smith <psmith@gnu.org>2007-08-15 13:53:53 +0000
commitaf402c08c7f527320afd5709a704b1bcd72a8c7e (patch)
tree77e2083b69f3e020f68260352c51f5f41832d10d
parentca4447f2a61406bed28a9648ece93e9687560ca1 (diff)
downloadmake-af402c08c7f527320afd5709a704b1bcd72a8c7e.tar.gz
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.
-rw-r--r--ChangeLog13
-rw-r--r--doc/make.texi5
-rw-r--r--po/ChangeLog5
-rw-r--r--po/LINGUAS4
-rw-r--r--remake.c17
-rw-r--r--tests/ChangeLog13
-rw-r--r--tests/scripts/features/parallelism14
-rw-r--r--tests/scripts/targets/SECONDARY64
8 files changed, 127 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 9c9ed3ae..fa6847d2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2007-08-15 Paul Smith <psmith@gnu.org>
+
+ * 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 <savannah@icarus.freeuk.com>
+
+ * 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 <psmith@gnu.org>
* file.c (expand_deps): Use variable_buffer as the start of the
diff --git a/doc/make.texi b/doc/make.texi
index d6cfc3cc..c30e794c 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 cf7defe0..46a61cf2 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,3 +1,8 @@
+2007-08-15 Paul Smith <psmith@gnu.org>
+
+ * LINGUAS: The Kinyarwanda (rw) translation has disappeared from
+ the translation site, so remove it.
+
2006-01-28 Paul D. Smith <psmith@gnu.org>
* LINGUAS: Added new translation for Vietnamese (vi).
diff --git a/po/LINGUAS b/po/LINGUAS
index 3f0c531c..1fff63a0 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 6168d29e..d1cf7023 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 6e53dc77..9a515a3a 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,16 @@
+2007-08-15 Paul Smith <psmith@gnu.org>
+
+ These test cases were contributed by
+ Icarus Sparry <savannah@icarus.freeuk.com> 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 <psmith@gnu.org>
Install a timeout so tests can never loop infinitely.
diff --git a/tests/scripts/features/parallelism b/tests/scripts/features/parallelism
index 432c0889..11102f24 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 cf580b5c..c954ee9a 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;