Patchwork for different default python version

login
register
mail settings
Submitter NiQingliang
Date July 20, 2011, 5:56 a.m.
Message ID <1311141365.6973.7.camel@localhost.localdomain>
Download mbox | patch
Permalink /patch/7943/
State New, archived
Headers show

Comments

NiQingliang - July 20, 2011, 5:56 a.m.
most Linux distribution use python 2.x as the default as bitbake
expected, but some use python 3.x as the default (like archlinux), so
this patch come.

if the default python is 2.x, it will do nothing.
or it will search the python 2.x in /usr/bin and /bin.
if find it out, then make a soft link in the build dir, and add the
build dir into the env var PATH.

+
    [ -n "$BUILDDIR" ] && cd $BUILDDIR
 fi
Saul Wold - July 20, 2011, 9:28 p.m.
NiQingliang,

A minor nit regarding the subject of this patch, there are some basic 
formatting that is used in oe-core, this information can be found at
http://wiki.openembedded.org/index.php/Commit_Patch_Message_Guidelines

Key thing is to include the name of the file (or functionality group) 
you are patching along with a good summary in the subject such as:

oe-init-build-env: Find and use python2 as default python

You also need to include a Signed-off-by: in your commit message.

I still need to test this further with a machine with and with out 
python2 / python3.

Also this did not apply cleanly, please rebase.

Thanks for your efforts on this patch.

Sau!


On 07/19/2011 10:56 PM, NiQingliang wrote:
> most Linux distribution use python 2.x as the default as bitbake
> expected, but some use python 3.x as the default (like archlinux), so
> this patch come.
>
> if the default python is 2.x, it will do nothing.
> or it will search the python 2.x in /usr/bin and /bin.
> if find it out, then make a soft link in the build dir, and add the
> build dir into the env var PATH.
>
> diff --git a/oe-init-build-env b/oe-init-build-env
> index 77332a7..acf4e96 100755
> --- a/oe-init-build-env
> +++ b/oe-init-build-env
> @@ -39,6 +39,34 @@ else
>      $OEROOT/scripts/oe-setup-builddir
>      unset OEROOT
>      unset BBPATH
> +
> +   # find the python 2.x, if the default python is not.
> +   # NOTE:
> +   #    the 'python -V' need redirect to stdout
> +   #    once we can ensure every distribution has 'python2' (currently,
> except
> +   #    ubuntu), we should change bitbake's shebang to '/usr/bin/env
> python2',
> +   #    and remove this patch.
> +   # precondition:
> +   #    $BUILDDIR is not NULL, but I doubt when it will be NULL.
> +   #    user have not made the file $BUILDDIR/python by himself.
> +   if [ -z "`/usr/bin/env python -V 2>&1|grep '^Python 2\.'`" ]; then
> +      PYTHON2_BIN=""
> +      for PY_BIN in `find /{usr/,}bin -regex '.*/python\(\|2\|2\.[0-9]*
> \)'`; do
> +         if [ -n "`$PY_BIN -V 2>&1|grep '^Python 2\.'`" ]; then
> +            PYTHON2_BIN=$PY_BIN
> +            break
> +         fi
> +      done
> +      if [ -n "$PYTHON2_BIN" ]; then
> +         ln -sf $PY_BIN $BUILDDIR/python
> +         export PATH="$BUILDDIR:$PATH"
> +         echo "NOTE: poky will use '$PY_BIN' to execute python code."
Probably should not mention poky here, should be bitbake or ...

> +      else
> +         echo "ERROR: unable to find Python 2.x, BitBake requires
> Python 2.6 or 2.7."
> +      fi
> +      unset PYTHON2_BIN
> +   fi
> +
>      [ -n "$BUILDDIR" ]&&  cd $BUILDDIR
>   fi
>
>

Patch

diff --git a/oe-init-build-env b/oe-init-build-env
index 77332a7..acf4e96 100755
--- a/oe-init-build-env
+++ b/oe-init-build-env
@@ -39,6 +39,34 @@  else
    $OEROOT/scripts/oe-setup-builddir
    unset OEROOT
    unset BBPATH
+
+   # find the python 2.x, if the default python is not.
+   # NOTE:
+   #    the 'python -V' need redirect to stdout
+   #    once we can ensure every distribution has 'python2' (currently,
except
+   #    ubuntu), we should change bitbake's shebang to '/usr/bin/env
python2',
+   #    and remove this patch.
+   # precondition:
+   #    $BUILDDIR is not NULL, but I doubt when it will be NULL.
+   #    user have not made the file $BUILDDIR/python by himself.
+   if [ -z "`/usr/bin/env python -V 2>&1|grep '^Python 2\.'`" ]; then
+      PYTHON2_BIN=""
+      for PY_BIN in `find /{usr/,}bin -regex '.*/python\(\|2\|2\.[0-9]*
\)'`; do
+         if [ -n "`$PY_BIN -V 2>&1|grep '^Python 2\.'`" ]; then
+            PYTHON2_BIN=$PY_BIN
+            break
+         fi
+      done
+      if [ -n "$PYTHON2_BIN" ]; then
+         ln -sf $PY_BIN $BUILDDIR/python
+         export PATH="$BUILDDIR:$PATH"
+         echo "NOTE: poky will use '$PY_BIN' to execute python code."
+      else
+         echo "ERROR: unable to find Python 2.x, BitBake requires
Python 2.6 or 2.7."
+      fi
+      unset PYTHON2_BIN
+   fi