From d1d75c37c446dfbe9cbae503300e17f2973dbf44 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 17 Sep 2012 00:03:15 +0000 Subject: Mon Sep 17 00:03:15 UTC 2012 --- core/make/make-3.82-dont-prune-intermediate.patch | 57 +++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 core/make/make-3.82-dont-prune-intermediate.patch (limited to 'core/make/make-3.82-dont-prune-intermediate.patch') diff --git a/core/make/make-3.82-dont-prune-intermediate.patch b/core/make/make-3.82-dont-prune-intermediate.patch new file mode 100644 index 000000000..f4f47dd27 --- /dev/null +++ b/core/make/make-3.82-dont-prune-intermediate.patch @@ -0,0 +1,57 @@ +2012-09-09 Paul Smith + + * remake.c (update_file_1): Force intermediate files to be + considered, not pruned, if their non-intermediate parent needs to + be remade. Fixes Savannah bug #30653. + +Index: remake.c +=================================================================== +RCS file: /sources/make/make/remake.c,v +retrieving revision 1.153 +retrieving revision 1.154 +diff -u -r1.153 -r1.154 +--- remake.c 5 Mar 2012 14:10:45 -0000 1.153 ++++ remake.c 10 Sep 2012 02:36:05 -0000 1.154 +@@ -612,6 +612,10 @@ + 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); + +Index: tests/scripts/features/parallelism +=================================================================== +RCS file: /sources/make/make/tests/scripts/features/parallelism,v +retrieving revision 1.19 +retrieving revision 1.20 +diff -u -r1.19 -r1.20 +--- tests/scripts/features/parallelism 4 Mar 2012 00:24:32 -0000 1.19 ++++ tests/scripts/features/parallelism 10 Sep 2012 02:36:05 -0000 1.20 +@@ -214,6 +214,23 @@ + 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 -- cgit v1.2.3-54-g00ecf