Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] yajl: disable parallel build
@ 2016-03-31 19:01 Jörg Krause
  2016-03-31 19:14 ` Thomas Petazzoni
  0 siblings, 1 reply; 3+ messages in thread
From: Jörg Krause @ 2016-03-31 19:01 UTC (permalink / raw)
  To: buildroot

The yajl build system contains a race condition, which gets triggered by
high BR2_JLEVEL settings - It tries to link the executable gen-extra-close
against libyajl before it is created:

[ 21%] Linking C executable gen-extra-close
[ 26%] Building C object src/CMakeFiles/yajl_s.dir/yajl_buf.c.o
/home/test/autobuild/instance-3/output/host/opt/ext-toolchain/bfin-uclinux/bfin-uclinux/bin/ld.real: cannot find -lyajl

Fix it by disabling parallel build.

Fixes:
http://autobuild.buildroot.net/results/a9b/a9b5209377acb51e69f376e0c008ee71fe00397a/
http://autobuild.buildroot.net/results/55f/55fe22463d49addb42b635d10be5176522f4a561/
http://autobuild.buildroot.net/results/808/808acca0cfed93465845c2aa055a7a4fc56a8a17/
http://autobuild.buildroot.net/results/b92/b92a9c84b71a8a2d022d307245ca6be36a000e6c/
http://autobuild.buildroot.net/results/55d/55df698ab53f7d94235166e8576eb681ed68668e/
.. and more.

Signed-off-by: J?rg Krause <joerg.krause@embedded.rocks>
---
 package/yajl/yajl.mk | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/package/yajl/yajl.mk b/package/yajl/yajl.mk
index 7770e86..4346e42 100644
--- a/package/yajl/yajl.mk
+++ b/package/yajl/yajl.mk
@@ -11,4 +11,7 @@ YAJL_LICENSE = ISC
 YAJL_LICENSE_FILES = COPYING
 YAJL_PATCH = https://github.com/vriera/yajl/commit/6d09f11b8fd358cab0e31b965327e64a599f9ce9.patch
 
+# Parallel build is broken
+YAJL_MAKE = $(MAKE1)
+
 $(eval $(cmake-package))
-- 
2.8.0

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [Buildroot] [PATCH] yajl: disable parallel build
  2016-03-31 19:01 [Buildroot] [PATCH] yajl: disable parallel build Jörg Krause
@ 2016-03-31 19:14 ` Thomas Petazzoni
  2016-04-01 18:38   ` Jörg Krause
  0 siblings, 1 reply; 3+ messages in thread
From: Thomas Petazzoni @ 2016-03-31 19:14 UTC (permalink / raw)
  To: buildroot

Hello,

On Thu, 31 Mar 2016 21:01:01 +0200, J?rg Krause wrote:
> The yajl build system contains a race condition, which gets triggered by
> high BR2_JLEVEL settings - It tries to link the executable gen-extra-close
> against libyajl before it is created:
> 
> [ 21%] Linking C executable gen-extra-close
> [ 26%] Building C object src/CMakeFiles/yajl_s.dir/yajl_buf.c.o
> /home/test/autobuild/instance-3/output/host/opt/ext-toolchain/bfin-uclinux/bfin-uclinux/bin/ld.real: cannot find -lyajl
> 
> Fix it by disabling parallel build.
> 
> Fixes:
> http://autobuild.buildroot.net/results/a9b/a9b5209377acb51e69f376e0c008ee71fe00397a/
> http://autobuild.buildroot.net/results/55f/55fe22463d49addb42b635d10be5176522f4a561/
> http://autobuild.buildroot.net/results/808/808acca0cfed93465845c2aa055a7a4fc56a8a17/
> http://autobuild.buildroot.net/results/b92/b92a9c84b71a8a2d022d307245ca6be36a000e6c/
> http://autobuild.buildroot.net/results/55d/55df698ab53f7d94235166e8576eb681ed68668e/
> .. and more.
> 
> Signed-off-by: J?rg Krause <joerg.krause@embedded.rocks>

yajl is using a reasonable build system, so there should be a
reasonable way of getting parallel build to work.

Can you try the following patch:

diff --git a/test/api/CMakeLists.txt b/test/api/CMakeLists.txt
index cd65a54..f7b6be1 100644
--- a/test/api/CMakeLists.txt
+++ b/test/api/CMakeLists.txt
@@ -22,4 +22,5 @@ FOREACH (test ${TESTS})
   GET_FILENAME_COMPONENT(testProg ${test} NAME_WE)
   ADD_EXECUTABLE(${testProg} ${test})
   TARGET_LINK_LIBRARIES(${testProg} yajl)
+  ADD_DEPENDENCIES(${testProg} yajl)
 ENDFOREACH()

And see if it helps ?

Note: this is only fixing the dependency of the gen-extra-close test
program against the yajl library. Probably other ADD_DEPENDENCIES()
invocations need to be added.

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [Buildroot] [PATCH] yajl: disable parallel build
  2016-03-31 19:14 ` Thomas Petazzoni
@ 2016-04-01 18:38   ` Jörg Krause
  0 siblings, 0 replies; 3+ messages in thread
From: Jörg Krause @ 2016-04-01 18:38 UTC (permalink / raw)
  To: buildroot

Dear Thomas,

On Do, 2016-03-31 at 21:14 +0200, Thomas Petazzoni wrote:
> Hello,
> 
> On Thu, 31 Mar 2016 21:01:01 +0200, J?rg Krause wrote:
> > 
> > The yajl build system contains a race condition, which gets
> > triggered by
> > high BR2_JLEVEL settings - It tries to link the executable gen-
> > extra-close
> > against libyajl before it is created:
> > 
> > [ 21%] Linking C executable gen-extra-close
> > [ 26%] Building C object src/CMakeFiles/yajl_s.dir/yajl_buf.c.o
> > /home/test/autobuild/instance-3/output/host/opt/ext-toolchain/bfin-
> > uclinux/bfin-uclinux/bin/ld.real: cannot find -lyajl
> > 
> > Fix it by disabling parallel build.
> > 
> > Fixes:
> > http://autobuild.buildroot.net/results/a9b/a9b5209377acb51e69f376e0
> > c008ee71fe00397a/
> > http://autobuild.buildroot.net/results/55f/55fe22463d49addb42b635d1
> > 0be5176522f4a561/
> > http://autobuild.buildroot.net/results/808/808acca0cfed93465845c2aa
> > 055a7a4fc56a8a17/
> > http://autobuild.buildroot.net/results/b92/b92a9c84b71a8a2d022d3072
> > 45ca6be36a000e6c/
> > http://autobuild.buildroot.net/results/55d/55df698ab53f7d94235166e8
> > 576eb681ed68668e/
> > .. and more.
> > 
> > Signed-off-by: J?rg Krause <joerg.krause@embedded.rocks>
> yajl is using a reasonable build system, so there should be a
> reasonable way of getting parallel build to work.
> 
> Can you try the following patch:
> 
> diff --git a/test/api/CMakeLists.txt b/test/api/CMakeLists.txt
> index cd65a54..f7b6be1 100644
> --- a/test/api/CMakeLists.txt
> +++ b/test/api/CMakeLists.txt
> @@ -22,4 +22,5 @@ FOREACH (test ${TESTS})
> ???GET_FILENAME_COMPONENT(testProg ${test} NAME_WE)
> ???ADD_EXECUTABLE(${testProg} ${test})
> ???TARGET_LINK_LIBRARIES(${testProg} yajl)
> +??ADD_DEPENDENCIES(${testProg} yajl)
> ?ENDFOREACH()
> 
> And see if it helps ?
> 
> Note: this is only fixing the dependency of the gen-extra-close test
> program against the yajl library. Probably other ADD_DEPENDENCIES()
> invocations need to be added.

This was my first try and it did not work. However, after having a
closer look the dependency is yajl_s.

I'll sent a v2 for this. Many thanks for looking into this!

J?rg

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-04-01 18:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-31 19:01 [Buildroot] [PATCH] yajl: disable parallel build Jörg Krause
2016-03-31 19:14 ` Thomas Petazzoni
2016-04-01 18:38   ` Jörg Krause

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox