[OE-core] [patch]for different default python version

NiQingliang niqingliang at insigma.com.cn
Wed Jul 20 05:56:04 UTC 2011


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."
+      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


-- 
倪庆亮
TEL:    13588371863
E-MAIL: niqingliang at insigma.com.cn
BLOG:   http://niqingliang2003.wordpress.com






More information about the Openembedded-core mailing list