[1/3] scripts/bitbake: try harder to check if pseudo exists

Submitted by Paul Eggleton on March 27, 2012, 11:50 a.m.

Details

Message ID 4a226262b48b8f0c56019183604b70c0f565d5f2.1332848153.git.paul.eggleton@linux.intel.com
State New
Headers show

Commit Message

Paul Eggleton March 27, 2012, 11:50 a.m.
If pseudodone doesn't exist, we can get STAGING_BINDIR_NATIVE by calling
bitbake -e and use that as the path to check for pseudo before we give
up and try to build it explicitly first.

This is useful for people who share TMPDIR between multiple build
directories.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
 scripts/bitbake |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

Patch hide | download patch | download mbox

diff --git a/scripts/bitbake b/scripts/bitbake
index 45c8697..1ba1839 100755
--- a/scripts/bitbake
+++ b/scripts/bitbake
@@ -53,14 +53,21 @@  if [ "`pwd`" != "$BUILDDIR" ] ; then
 fi
 
 buildpseudo="1"
-if [ $needpseudo = "1" ] && [ -e "$BUILDDIR/pseudodone" ]; then
-    PSEUDOBINDIR=`cat $BUILDDIR/pseudodone`
+if [ $needpseudo = "1" ]; then
+    if [ -e "$BUILDDIR/pseudodone" ]; then
+        PSEUDOBINDIR=`cat $BUILDDIR/pseudodone`
+    else
+        PSEUDOBINDIR=`bitbake -e | grep STAGING_BINDIR_NATIVE=\" | cut -d '=' -f2 | cut -d '"' -f2`
+    fi
     if [ -e "$PSEUDOBINDIR/pseudo" -a -e "$PSEUDOBINDIR/tar" -a "$needtar" = "1" ]; then
         buildpseudo="0"
     fi
     if [ -e "$PSEUDOBINDIR/pseudo" -a $needtar = "0" ]; then
         buildpseudo="0"
     fi
+    if [ $buildpseudo = "0" -a ! -e "$BUILDDIR/pseudodone" ] ; then
+        echo $PSEUDOBINDIR > $BUILDDIR/pseudodone
+    fi
 fi
 if [ $needpseudo = "0" ]; then
     buildpseudo="0"
@@ -104,7 +111,6 @@  BITBAKE=`which bitbake`
 export PATH=$OLDPATH
 if [ $needpseudo = "1" ]; then
     export PSEUDO_BUILD=2
-    PSEUDOBINDIR=`cat $BUILDDIR/pseudodone`
     PSEUDO_BINDIR=$PSEUDOBINDIR PSEUDO_LIBDIR=$PSEUDOBINDIR/../lib/pseudo/lib PSEUDO_PREFIX=$PSEUDOBINDIR/../../ PSEUDO_DISABLED=1 $PSEUDOBINDIR/pseudo $BITBAKE $@
 else
     export PSEUDO_BUILD=0

Comments

Andreas Oberritter March 27, 2012, 1:08 p.m.
On 27.03.2012 13:50, Paul Eggleton wrote:
> If pseudodone doesn't exist, we can get STAGING_BINDIR_NATIVE by calling
> bitbake -e and use that as the path to check for pseudo before we give
> up and try to build it explicitly first.
> 
> This is useful for people who share TMPDIR between multiple build
> directories.
> 
> Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>

This adds a 3s delay over the previous setup on my build system, which I 
deem acceptable. See one minor suggestion inline.

Acked-by: Andreas Oberritter <obi@opendreambox.org>

> ---
>  scripts/bitbake |   12 +++++++++---
>  1 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/scripts/bitbake b/scripts/bitbake
> index 45c8697..1ba1839 100755
> --- a/scripts/bitbake
> +++ b/scripts/bitbake
> @@ -53,14 +53,21 @@ if [ "`pwd`" != "$BUILDDIR" ] ; then
>  fi
>  
>  buildpseudo="1"
> -if [ $needpseudo = "1" ] && [ -e "$BUILDDIR/pseudodone" ]; then
> -    PSEUDOBINDIR=`cat $BUILDDIR/pseudodone`
> +if [ $needpseudo = "1" ]; then
> +    if [ -e "$BUILDDIR/pseudodone" ]; then
> +        PSEUDOBINDIR=`cat $BUILDDIR/pseudodone`
> +    else
> +        PSEUDOBINDIR=`bitbake -e | grep STAGING_BINDIR_NATIVE=\" | cut -d '=' -f2 | cut -d '"' -f2`

I think using sed might improve readability:

bitbake -e | grep ^STAGING_BINDIR_NATIVE= | sed -e 's,^STAGING_BINDIR_NATIVE="\(.*\)"$,\1,'

This may be a subjective impression, though.

> +    fi
>      if [ -e "$PSEUDOBINDIR/pseudo" -a -e "$PSEUDOBINDIR/tar" -a "$needtar" = "1" ]; then
>          buildpseudo="0"
>      fi
>      if [ -e "$PSEUDOBINDIR/pseudo" -a $needtar = "0" ]; then
>          buildpseudo="0"
>      fi
> +    if [ $buildpseudo = "0" -a ! -e "$BUILDDIR/pseudodone" ] ; then
> +        echo $PSEUDOBINDIR > $BUILDDIR/pseudodone
> +    fi
>  fi
>  if [ $needpseudo = "0" ]; then
>      buildpseudo="0"
> @@ -104,7 +111,6 @@ BITBAKE=`which bitbake`
>  export PATH=$OLDPATH
>  if [ $needpseudo = "1" ]; then
>      export PSEUDO_BUILD=2
> -    PSEUDOBINDIR=`cat $BUILDDIR/pseudodone`
>      PSEUDO_BINDIR=$PSEUDOBINDIR PSEUDO_LIBDIR=$PSEUDOBINDIR/../lib/pseudo/lib PSEUDO_PREFIX=$PSEUDOBINDIR/../../ PSEUDO_DISABLED=1 $PSEUDOBINDIR/pseudo $BITBAKE $@
>  else
>      export PSEUDO_BUILD=0
Paul Eggleton March 27, 2012, 1:14 p.m.
On Tuesday 27 March 2012 15:08:28 Andreas Oberritter wrote:
> On 27.03.2012 13:50, Paul Eggleton wrote:
> > +        PSEUDOBINDIR=`bitbake -e | grep STAGING_BINDIR_NATIVE=\" | cut -d
> > '=' -f2 | cut -d '"' -f2`
> I think using sed might improve readability:
> 
> bitbake -e | grep ^STAGING_BINDIR_NATIVE= | sed -e
> 's,^STAGING_BINDIR_NATIVE="\(.*\)"$,\1,'
> 
> This may be a subjective impression, though.

I just copied this from further down in the script. Personally I find the 
original more readable although the sed version spawns less processes.

Cheers,
Paul