1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-09 17:39:31 +00:00
Files
poky/scripts/bitbake
T
Richard Purdie cfbd13ff22 scripts/bitbake sanity.bbclass: Migrate tests for git and tar versions
Migrate tests for correct git and tar versions from the wrapper script
to the sanity class.

This sets the scene to allow us to remove the bitbake wrapper script.

(From OE-Core rev: 7b370e23594da5dcb53cd5507ec289c3ef2d9fb5)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-06-14 12:53:51 +01:00

146 lines
4.6 KiB
Bash
Executable File

#!/bin/sh
# This is the bitbake wrapper script that ensures everything is set up
# correctly in the environment, builds pseudo separately if it hasn't
# already been built, and then runs bitbake within pseudo.
export BBFETCH2=True
export BB_ENV_EXTRAWHITE="PSEUDO_BUILD PSEUDO_DISABLED $BB_ENV_EXTRAWHITE"
# For certain operations (i.e. that won't be actually running any tasks)
# we don't need pseudo
NO_BUILD_OPTS="--version -h --help -p --parse-only -s --show-versions -e --environment -g --graphviz"
# Some options are useful to pass through to the initial pseudo build if
# that needs to be run (for debugging)
PASSTHROUGH_OPTS="-D -DD -DDD -DDDD -v"
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 being 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
if [ ! -e conf/bblayers.conf ] ; then
BDPRINT=""
[ -n "$BUILDDIR" ] && BDPRINT=": $BUILDDIR"
echo "Unable to find conf/bblayers.conf"
echo "BitBake must be run from within your build directory$BDPRINT"
exit 1
elif [ -z "$BUILDDIR" ] ; then
BUILDDIR="`pwd`"
fi
buildpseudo="1"
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" ]; then
buildpseudo="0"
fi
# Verify that the pseudo recipes are older then the pseudodone file
PSEUDO_RECIPE="`dirname $0`/../meta/recipes-devtools/pseudo"
if [ $buildpseudo -eq 0 ] && [ ! -d "$PSEUDO_RECIPE" ]; then
echo "Unable to verify if pseudo-native is up to date..." >&2
elif [ $buildpseudo -eq 0 ]; then
PSEUDO_NEWER=`find $PSEUDO_RECIPE -type f -newer $BUILDDIR/pseudodone`
if [ -n "$PSEUDO_NEWER" ]; then
buildpseudo="2"
fi
fi
if [ $buildpseudo = "0" -a ! -e "$BUILDDIR/pseudodone" ] ; then
echo $PSEUDOBINDIR > $BUILDDIR/pseudodone
fi
fi
if [ $needpseudo = "0" ]; then
buildpseudo="0"
fi
# If pseudo-native is an argument, assume the user wants to build pseudo-native!
if [ $needpseudo != "0" -a $buildpseudo -eq 0 ]; then
for opt in $@; do
if [ "$opt" = "pseudo-native" ]; then
buildpseudo="3"
break
fi
done
fi
OLDPATH=$PATH
export PATH=`echo $PATH | sed s#[^:]*/scripts:##g`
if [ $buildpseudo -gt 0 ]; then
[ $buildpseudo -eq 1 ] && echo "Pseudo is not present but is required, building this first before the main build"
[ $buildpseudo -eq 2 ] && echo "Pseudo may be out of date, rebuilding pseudo before the main build"
[ $buildpseudo -eq 3 ] && echo "Building pseudo-native before main build"
export PSEUDO_BUILD=1
# Pass through debug options
additionalopts=""
for opt in $@; do
for key in $PASSTHROUGH_OPTS; do
if [ $opt = $key ]
then
additionalopts="$additionalopts $opt"
break
fi
done
done
bitbake pseudo-native $additionalopts -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
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