| https://savannah.gnu.org/bugs/?30653 |
| https://bugs.gentoo.org/431250 |
| |
| From d1ba0ee36b2bdd91434b5df90f0f4cceda7d6979 Mon Sep 17 00:00:00 2001 |
| From: psmith <psmith> |
| Date: Mon, 10 Sep 2012 02:36:05 +0000 |
| Subject: [PATCH] Force intermediate targets to be considered if their |
| non-intermediate parent needs to be remade. Fixes Savannah |
| bug #30653. |
| |
| --- |
| ChangeLog | 4 ++++ |
| remake.c | 4 ++++ |
| tests/scripts/features/parallelism | 17 +++++++++++++++++ |
| 3 files changed, 25 insertions(+) |
| |
| diff --git a/remake.c b/remake.c |
| index c0bf709..b1ddd23 100644 |
| --- a/remake.c |
| +++ b/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 a/tests/scripts/features/parallelism b/tests/scripts/features/parallelism |
| index d4250f0..76d24a7 100644 |
| --- a/tests/scripts/features/parallelism |
| +++ b/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 |
| |