package/dash: fix parallel build issue
PATCH 1/1 package/dash: fix parallel build issue
Fixes:
http://autobuild.buildroot.org/results/793/7934c815a3009af688c2f1183e67dfe542c9a009/ http://autobuild.buildroot.org/results/fc4/fc4e4ab47455ac47dd4a3a60083cec2848e74dbb/ http://autobuild.buildroot.org/results/6bf/6bfdd44ea5d55a6ca3ef92254eab18c7c0416b7b/ [...]
--- package/dash/0003-BUILD-fix-parallel-build.patch | 60 ++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 package/dash/0003-BUILD-fix-parallel-build.patch
package/dash/0003-BUILD-fix-parallel-build.patch new file +60 -0
@@ -0,0 +1,60 @@ +From 26d549e46161fd2280066dd538b957920a9cb765 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" <[email protected]> +Date: Mon, 28 May 2018 22:56:37 +0200 +Subject: [PATCH] [BUILD] fix parallel build + +When neither token.h nor token_var.h exist, and we are building in +parallel, it is possible that make will spawn two mktokens at roughly +the same time, because of two different rules, one that needs token.h ad +another that need token_vars.h. + +For example, make can have a dependency chain toward just token.h, from +syntax.c, and another dependency chain toweard token_vars.h from the +generic BUILT_SOURCES. + +So, make will "quickly" decide that it needs token.h, then spawn +mktoken. A bit later, while that mktoken still runs but hasn't yet +created token_vars.h, make will need it, and thus spawn a second +mktoken. + +While the second one runs, the first terminates. However, the token.h it +had generated has been in the meantime overwritten by the second mktoken +that is still generating it, and token.h is still empty. + +But make proceeds to the rule that required token.h in the first place, +and the still-empty token.h gets icluded from a C file, and the build +fails because of missing defines. + +For example: + http://autobuild.buildroot.org/results/fc4/fc4e4ab47455ac47dd4a3a60083cec2848e74dbb/build-end.log + +Fix that by serialising both headers. + +Reported-by: Baruch Siach <[email protected]> +Signed-off-by: "Yann E. MORIN" <[email protected]> +Cc: Baruch Siach <[email protected]> +--- +Upstream status: sent, should show soon up on: + https://www.mail-archive.com/dash at vger.kernel.org/ + +--- + src/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/Makefile.am b/src/Makefile.am +index 46399c7..5bf5a52 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -44,7 +44,8 @@ EXTRA_DIST = \ + mktokens mkbuiltins builtins.def.in mkinit.c \ + mknodes.c nodetypes nodes.c.pat mksyntax.c mksignames.c + +-token.h token_vars.h: mktokens ++token_vars.h: token.h ++token.h: mktokens + $(SHELL) $^ + + builtins.def: builtins.def.in $(top_builddir)/config.h +-- +2.14.1 +
Signature · 1 line
2.14.1
PATCH 1/1 package/dash: fix parallel build issue
Hi Yann,
Quoted 48 lines · Yann E. MORIN
Fixes:
http://autobuild.buildroot.org/results/793/7934c815a3009af688c2f1183e67dfe542c9a009/ http://autobuild.buildroot.org/results/fc4/fc4e4ab47455ac47dd4a3a60083cec2848e74dbb/ http://autobuild.buildroot.org/results/6bf/6bfdd44ea5d55a6ca3ef92254eab18c7c0416b7b/ [...]Reported-by Baruch Siach <[email protected]>Signed-off-by "Yann E. MORIN" <[email protected]>Cc Baruch Siach <[email protected]>--- package/dash/0003-BUILD-fix-parallel-build.patch | 60 ++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 package/dash/0003-BUILD-fix-parallel-build.patchpackage/dash/0003-BUILD-fix-parallel-build.patch new file +28
-0@@ -0,0 +1,60 @@ +From 26d549e46161fd2280066dd538b957920a9cb765 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" <[email protected]> +Date: Mon, 28 May 2018 22:56:37 +0200 +Subject: [PATCH] [BUILD] fix parallel build + +When neither token.h nor token_var.h exist, and we are building in +parallel, it is possible that make will spawn two mktokens at roughly +the same time, because of two different rules, one that needs token.h ad +another that need token_vars.h. + +For example, make can have a dependency chain toward just token.h, from +syntax.c, and another dependency chain toweard token_vars.h from the +generic BUILT_SOURCES. + +So, make will "quickly" decide that it needs token.h, then spawn +mktoken. A bit later, while that mktoken still runs but hasn't yet +created token_vars.h, make will need it, and thus spawn a second +mktoken. + +While the second one runs, the first terminates. However, the token.h it +had generated has been in the meantime overwritten by the second mktoken +that is still generating it, and token.h is still empty. + +But make proceeds to the rule that required token.h in the first place, +and the still-empty token.h gets icluded from a C file, and the build +fails because of missing defines. + +For example:
package/dash/0003-BUILD-fix-parallel-build.patch line 38
Quoted 10 lines
package/dash/0003-BUILD-fix-parallel-build.patch new file +10
-0+ http://autobuild.buildroot.org/results/fc4/fc4e4ab47455ac47dd4a3a60083cec2848e74dbb/build-end.log + +Fix that by serialising both headers. + +Reported-by: Baruch Siach <[email protected]> +Signed-off-by: "Yann E. MORIN" <[email protected]> +Cc: Baruch Siach <[email protected]> +--- +Upstream status: sent, should show soon up on: + https://www.mail-archive.com/dash at vger.kernel.org/
I could not find it there at the moment, but it's on spinics now:
package/dash/0003-BUILD-fix-parallel-build.patch line 41
Quoted 3 lines
package/dash/0003-BUILD-fix-parallel-build.patch new file +3
-0+ +--- + src/Makefile.am | 3 ++-
This requires AUTORECONF, right? We have a patch from Peter that touches the Makefile.in version of the same file. If you add AUTORECONF you would also have to to convert Peter's patch to Makefile.am, otherwise your patch overwrites his changes. See my upstream submission from last week at
Quoted 6 lines
package/dash/0003-BUILD-fix-parallel-build.patch new file +6
-0+ 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/Makefile.am b/src/Makefile.am +index 46399c7..5bf5a52 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am
package/dash/0003-BUILD-fix-parallel-build.patch line 57
Quoted 10 lines
package/dash/0003-BUILD-fix-parallel-build.patch new file +10
-0+@@ -44,7 +44,8 @@ EXTRA_DIST = \ + mktokens mkbuiltins builtins.def.in mkinit.c \ + mknodes.c nodetypes nodes.c.pat mksyntax.c mksignames.c + +-token.h token_vars.h: mktokens ++token_vars.h: token.h ++token.h: mktokens + $(SHELL) $^ + + builtins.def: builtins.def.in $(top_builddir)/config.h
baruch
Signature · 3 lines
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch at tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -PATCH 1/1 package/dash: fix parallel build issue
Baruch, All,
On 2018-05-29 05:53 +0300, Baruch Siach spake thusly:
Quoted 11 lines · Yann E. MORIN
Quoted 10 lines
Fixes:
http://autobuild.buildroot.org/results/793/7934c815a3009af688c2f1183e67dfe542c9a009/ http://autobuild.buildroot.org/results/fc4/fc4e4ab47455ac47dd4a3a60083cec2848e74dbb/ http://autobuild.buildroot.org/results/6bf/6bfdd44ea5d55a6ca3ef92254eab18c7c0416b7b/ [...]Reported-by Baruch Siach <[email protected]>Signed-off-by "Yann E. MORIN" <[email protected]>Cc Baruch Siach <[email protected]>---
[--SNIP--]
Quoted 3 lines
Quoted 1 line
+ src/Makefile.am | 3 ++-
This requires AUTORECONF, right?
Oh dang, another case where I git commit --amend but forgot to git add first...
Quoted 6 lines
We have a patch from Peter that touches the
Makefile.in version of the same file. If you add AUTORECONF you would also have to to convert Peter's patch to Makefile.am, otherwise your patch overwrites his changes. See my upstream submission from last week at
Yeah, but I am withdrawing entirely this patch of mione, because upstream does not like it and said that we should not build dash in parallel;
https://www.mail-archive.com/dash at vger.kernel.org/msg01675.html
So I'll just spin another patch disabling parallel build for dash.
Regards,
Yann E. MORIN.
Quoted 23 lines
Quoted 6 lines
+ 1 file changed, 2 insertions(+), 1 deletion(-)
package/dash/0003-BUILD-fix-parallel-build.patch new file +5
-0+ +diff --git a/src/Makefile.am b/src/Makefile.am +index 46399c7..5bf5a52 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.ampackage/dash/0003-BUILD-fix-parallel-build.patch line 57
Quoted 10 lines
package/dash/0003-BUILD-fix-parallel-build.patch new file +10
-0+@@ -44,7 +44,8 @@ EXTRA_DIST = \ + mktokens mkbuiltins builtins.def.in mkinit.c \ + mknodes.c nodetypes nodes.c.pat mksyntax.c mksignames.c + +-token.h token_vars.h: mktokens ++token_vars.h: token.h ++token.h: mktokens + $(SHELL) $^ + + builtins.def: builtins.def.in $(top_builddir)/config.hbaruch
Signature · 3 lines
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems =}------------------------------------------------ooO--U--Ooo------------{= - baruch at tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'