Files
poky/scripts/bitbake
Paul Eggleton de7377a170 scripts/bitbake: add a version >= 2.6 check
Unfortunately we now have code in BitBake which is parsed before the
current version check and is incompatible with Python < 2.6. Rather than
fixing this and being eternally vigilant for >= 2.6 feature usage, just
add a version check to the wrapper script.

(From OE-Core rev: 9b8a48efa3b80fea34efa51de44d10ff2b1e3193)

(From OE-Core rev: c3ba7e8f7aca8b49739b3b92aec723c5f3375bc0)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-01-30 16:43:45 +00:00

3.0 KiB
Executable File

#!/bin/sh

export BBFETCH2=True export BB_ENV_EXTRAWHITE="PSEUDO_BUILD PSEUDO_DISABLED $BB_ENV_EXTRAWHITE"

NO_BUILD_OPTS="--version -h --help -p --parse-only -s --show-versions -e --environment -g --graphviz" needpseudo="1" for opt in $@; do for key in $NO_BUILD_OPTS; do if [ $opt = $key ] then needpseudo="0" break fi done [ $needpseudo = "0" ] && break done

Make sure we're not using python v3.x. This check can't go into

sanity.bbclass because bitbake's source code doesn't even pass

parsing stage when used with python v3, so we catch it here so we

can offer a meaningful error message.

py_v3_check=/usr/bin/env python --version 2>&1 | grep "Python 3" if [ "$py_v3_check" != "" ]; then echo "Bitbake is not compatible with python v3" echo "Please set up python v2 as your default python interpreter" exit 1 fi

Similarly, we now have code that doesn't parse correctly with older

versions of Python, and rather than fixing that and be eternally

vigilant for any other new feature use, just check the version here.

py_v26_check=python -c 'import sys; print sys.version_info >= (2,6,0)' if [ "$py_v26_check" != "True" ]; then echo "BitBake requires Python 2.6 or later" exit 1 fi

needtar="1" TARVERSION=tar --version | head -n 1 | cut -d ' ' -f 4 float_test() { echo | awk 'END { exit ( !( '"$1"')); }' }

Tar version 1.24 and onwards handle symlinks in sstate packages correctly

but earlier versions do not

float_test "$TARVERSION > 1.23" && needtar="0"

buildpseudo="1" if [ $needpseudo = "1" ] && [ -e "$BUILDDIR/pseudodone" ]; then PSEUDOBINDIR=cat $BUILDDIR/pseudodone 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 fi if [ $needpseudo = "0" ]; then buildpseudo="0" fi

OLDPATH=$PATH export PATH=echo $PATH | sed s#[^:]*/scripts:## if [ $buildpseudo = "1" ]; then echo "Pseudo is not present but is required, building this first before the main build" export PSEUDO_BUILD=1 TARTARGET="tar-replacement-native" if [ $needtar = "0" ]; then TARTARGET="" fi bitbake pseudo-native $TARTARGET -c populate_sysroot ret=$? if [ "$ret" != "0" ]; then exit 1 fi PSEUDOBINDIR=bitbake -e | grep STAGING_BINDIR_NATIVE=\" | cut -d '=' -f2 | cut -d '"' -f2 ret=$? if [ "$ret" != "0" ]; then exit 1 fi echo $PSEUDOBINDIR > $BUILDDIR/pseudodone # This needs to exist in case pseudo has to log somewhere mkdir -p $PSEUDOBINDIR/../../var/pseudo fi 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 $BITBAKE $@ fi ret=$? exit $ret