47 lines
1.3 KiB
Diff
47 lines
1.3 KiB
Diff
diff --git remake.c remake.c
|
|
index c0bf709..b1ddd23 100644
|
|
--- remake.c
|
|
+++ remake.c
|
|
@@ -612,6 +612,10 @@ update_file_1 (struct file *file, unsigned int depth)
|
|
d->file->dontcare = file->dontcare;
|
|
}
|
|
|
|
+ /* We may have already considered this file, when we didn't know
|
|
+ we'd need to update it. Force update_file() to consider it and
|
|
+ not prune it. */
|
|
+ d->file->considered = !considered;
|
|
|
|
dep_status |= update_file (d->file, depth);
|
|
|
|
diff --git tests/scripts/features/parallelism tests/scripts/features/parallelism
|
|
index d4250f0..76d24a7 100644
|
|
--- tests/scripts/features/parallelism
|
|
+++ tests/scripts/features/parallelism
|
|
@@ -214,6 +214,23 @@ rm main.x");
|
|
rmfiles(qw(foo.y foo.y.in main.bar));
|
|
}
|
|
|
|
+# Ensure intermediate/secondary files are not pruned incorrectly.
|
|
+# See Savannah bug #30653
|
|
+
|
|
+utouch(-15, 'file2');
|
|
+utouch(-10, 'file4');
|
|
+utouch(-5, 'file1');
|
|
+
|
|
+run_make_test(q!
|
|
+.INTERMEDIATE: file3
|
|
+file4: file3 ; @mv -f $< $@
|
|
+file3: file2 ; touch $@
|
|
+file2: file1 ; @touch $@
|
|
+!,
|
|
+ '--no-print-directory -j2', "touch file3");
|
|
+
|
|
+#rmfiles('file1', 'file2', 'file3', 'file4');
|
|
+
|
|
if ($all_tests) {
|
|
# Jobserver FD handling is messed up in some way.
|
|
# Savannah bug #28189
|
|
--
|
|
1.7.12
|
|
|