diff options
author | Lars Wendler <polynomial-c@gentoo.org> | 2016-05-23 11:07:24 +0200 |
---|---|---|
committer | Lars Wendler <polynomial-c@gentoo.org> | 2016-05-23 11:07:38 +0200 |
commit | aca8dbccd491139f8d0f8a6fcb690f7780933cf2 (patch) | |
tree | 06fb3f8e08a6a3e8c813ff3f0740fae9cea6a254 /sys-devel/make/files | |
parent | ros-meta/navigation: Bump to 1.14.0. (diff) | |
download | gentoo-aca8dbccd491139f8d0f8a6fcb690f7780933cf2.tar.gz gentoo-aca8dbccd491139f8d0f8a6fcb690f7780933cf2.tar.bz2 gentoo-aca8dbccd491139f8d0f8a6fcb690f7780933cf2.zip |
sys-devel/make: Revbump to revert upstream commit for bug #583812
until a real fix is available.
Package-Manager: portage-2.2.28
Signed-off-by: Lars Wendler <polynomial-c@gentoo.org>
Diffstat (limited to 'sys-devel/make/files')
-rw-r--r-- | sys-devel/make/files/make-4.1-fix_double_colon_rules_plus_parallel_builds.patch | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/sys-devel/make/files/make-4.1-fix_double_colon_rules_plus_parallel_builds.patch b/sys-devel/make/files/make-4.1-fix_double_colon_rules_plus_parallel_builds.patch new file mode 100644 index 000000000000..af7a9f2f6bb4 --- /dev/null +++ b/sys-devel/make/files/make-4.1-fix_double_colon_rules_plus_parallel_builds.patch @@ -0,0 +1,139 @@ +From 9bb994e8319c2b153cd3d6d61e2c2882895e7c3a Mon Sep 17 00:00:00 2001 +From: Joe Crayne <oh.hello.joe@gmail.com> +Date: Sat, 21 May 2016 21:26:00 +0000 +Subject: [SV 44742] Fix double-colon rules plus parallel builds. + +* remake.c (update_file): Don't update double-colon target status +if we're still building targets. +(ftime_t): Don't propagate timestamps for double-colon targets that +we've not examined yet. +* tests/scripts/features/double_colon: Add parallel build tests. + +Copyright-paperwork-exempt: yes +--- +diff --git a/remake.c b/remake.c +index 63ee648..df1a9e0 100644 +--- a/remake.c ++++ b/remake.c +@@ -320,7 +320,7 @@ update_file (struct file *file, unsigned int depth) + && !f->dontcare && f->no_diag)) + { + DBF (DB_VERBOSE, _("Pruning file '%s'.\n")); +- return f->command_state == cs_finished ? f->update_status : 0; ++ return f->command_state == cs_finished ? f->update_status : us_success; + } + } + +@@ -344,12 +344,9 @@ update_file (struct file *file, unsigned int depth) + + if (f->command_state == cs_running + || f->command_state == cs_deps_running) +- { +- /* Don't run the other :: rules for this +- file until this rule is finished. */ +- status = us_success; +- break; +- } ++ /* Don't run other :: rules for this target until ++ this rule is finished. */ ++ return us_success; + + if (new > status) + status = new; +@@ -1274,6 +1271,7 @@ FILE_TIMESTAMP + f_mtime (struct file *file, int search) + { + FILE_TIMESTAMP mtime; ++ int propagate_timestamp; + + /* File's mtime is not known; must get it from the system. */ + +@@ -1450,10 +1448,13 @@ f_mtime (struct file *file, int search) + } + } + +- /* Store the mtime into all the entries for this file. */ ++ /* Store the mtime into all the entries for this file for which it is safe ++ to do so: avoid propagating timestamps to double-colon rules that haven't ++ been examined so they're run or not based on the pre-update timestamp. */ + if (file->double_colon) + file = file->double_colon; + ++ propagate_timestamp = file->updated; + do + { + /* If this file is not implicit but it is intermediate then it was +@@ -1465,7 +1466,8 @@ f_mtime (struct file *file, int search) + && !file->tried_implicit && file->intermediate) + file->intermediate = 0; + +- file->last_mtime = mtime; ++ if (file->updated == propagate_timestamp) ++ file->last_mtime = mtime; + file = file->prev; + } + while (file != 0); +diff --git a/tests/scripts/features/double_colon b/tests/scripts/features/double_colon +index 1097775..80ddb31 100644 +--- a/tests/scripts/features/double_colon ++++ b/tests/scripts/features/double_colon +@@ -151,8 +151,7 @@ two'); + + unlink('result','one','two'); + +-# TEST 10: check for proper backslash handling +-# Savannah bug #33399 ++# TEST 10: SV 33399 : check for proper backslash handling + + run_make_test(' + a\ xb :: ; @echo one +@@ -160,5 +159,47 @@ a\ xb :: ; @echo two + ', + '', "one\ntwo\n"); + ++# Test 11: SV 44742 : All double-colon rules should be run in parallel build. ++ ++run_make_test('result :: 01 ++ @echo update ++ @touch $@ ++result :: 02 ++ @echo update ++ @touch $@ ++result :: 03 ++ @echo update ++ @touch $@ ++result :: 04 ++ @echo update ++ @touch $@ ++result :: 05 ++ @echo update ++ @touch $@ ++01 02 03 04 05: ++ @touch 01 02 03 04 05 ++', ++ '-j10 result', "update\nupdate\nupdate\nupdate\nupdate\n"); ++ ++unlink('result', '01', '02', '03', '04', '05'); ++ ++# Test 12: SV 44742 : Double-colon rules with parallelism ++ ++run_make_test(' ++root: all ++ echo root ++all:: ++ echo all_one ++all:: 3 ++ echo all_two ++%: ++ sleep $* ++', ++ '-rs -j2 1 2 root', "all_one\nall_two\nroot\n"); ++ + # This tells the test driver that the perl test script executed properly. + 1; ++ ++### Local Variables: ++### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) ++### End: +-- +cgit v0.9.0.2 |