Patchwork Could we build tar-replacement firstly and not parallel if tar-replacement is needed to build

login
register
mail settings
Submitter rongqing.li@windriver.com
Date Aug. 6, 2012, 12:50 p.m.
Message ID <501FBD86.3090705@windriver.com>
Download mbox | patch
Permalink /patch/33973/
State New
Headers show

Comments

rongqing.li@windriver.com - Aug. 6, 2012, 12:50 p.m.
Hi:

Building failed several times when building tar-replacement-native is 
needed,
The error log shows 
"bitbake_build/tmp/sysroots/x86_64-linux/usr/bin/tar: Text
file busy". this log proves "an attempt was made to execute a 
pure-procedure
program that is currently open for writing."


Before this error, tar-replacement do_populate_sysroot just starts,
(tar-replacement-native-1.26-r2: task do_populate_sysroot: Started)
After this error, we see tar-replacement do_populate_sysroot just
finish.

So I think the root cause is that do_populate_sysroot sqlite is using
a tar command which being opened to written. in fact, all packages
need tar to do_popolate_sysroot()

I see building tar-replacement-native is started in bitbake file,
could we build tar-replacement firstly, not parallel if needed.



      if [ "$ret" != "0" ]; then
          exit 1


since building tar-replacement or not depends on host tar version, it is
hard to add a tar dependence to any package, and I did not have a good way
to fix this bug except the upper.

Any advice and suggestion are welcome

Patch

diff --git a/scripts/bitbake b/scripts/bitbake
index 3772d82..1bb8fed 100755
--- a/scripts/bitbake
+++ b/scripts/bitbake
@@ -134,7 +134,10 @@  if [ $buildpseudo -gt 0 ]; then
              fi
          done
      done
-    bitbake pseudo-native $TARTARGET $additionalopts -c populate_sysroot
+
+    if [ $needptar = "1" ]; then
+       sed -i 's/BB_NUMBER_THREADS =/#BB_NUMBER_THREADS =/g' 
conf/local.conf
+       bitbake $TARTARGET
+       sed -i 's/#BB_NUMBER_THREADS =/BB_NUMBER_THREADS =/g' 
conf/local.conf
+    fi
+
+    bitbake pseudo-native $additionalopts -c populate_sysroot
      ret=$?