
Check that 'python' is a python v2 since that is what we assume everywhere and upstream python devs recommend. We can need both python2 and python3 available since we don't control the software we might download and run. Also check that python 3 is >= 3.4.0, our minimum version for bitbake. (From OE-Core rev: 3dd26cd6b3d731f7698f6fbcd1947969f360cdc4) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
4.3 KiB
Executable File
#!/bin/sh
OE-Core Build Environment Setup Script
Copyright (C) 2006-2011 Linux Foundation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
It is assumed OEROOT is already defined when this is called
if [ -z "$OEROOT" ]; then echo >&2 "Error: OEROOT is not defined!" return 1 fi
if [ -z "$OE_SKIP_SDK_CHECK" ] && [ -n "$OECORE_SDK_VERSION" ]; then echo >&2 "Error: The OE SDK/ADT was detected as already being present in this shell environment. Please use a clean shell when sourcing this environment script." return 1 fi
Make sure we're not using python v3.x as 'python', we don't support it.
py_v2_check=$(/usr/bin/env python --version 2>&1 | grep "Python 3") if [ -n "$py_v2_check" ]; then echo >&2 "OpenEmbedded requires 'python' to be python v2 (>= 2.7.3), not python v3." echo >&2 "Please set up python v2 as your default 'python' interpreter." return 1 fi unset py_v2_check
py_v27_check=$(python -c 'import sys; print sys.version_info >= (2,7,3)') if [ "$py_v27_check" != "True" ]; then echo >&2 "OpenEmbedded requires 'python' to be python v2 (>= 2.7.3), not python v3." echo >&2 "Please upgrade your python v2." fi unset py_v27_check
We potentially 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_v34_check=$(python3 -c 'import sys; print(sys.version_info >= (3,4,0))') if [ "$py_v34_check" != "True" ]; then echo >&2 "BitBake requires Python 3.4.0 or later as 'python3'" return 1 fi unset py_v34_check
if [ -z "$BDIR" ]; then if [ -z "$1" ]; then BDIR="build" else BDIR="$1" if [ "$BDIR" = "/" ]; then echo >&2 "Error: / is not supported as a build directory." return 1 fi
# Remove any possible trailing slashes. This is used to work around
# buggy readlink in Ubuntu 10.04 that doesn't ignore trailing slashes
# and hence "readlink -f new_dir_to_be_created/" returns empty.
BDIR=$(echo $BDIR | sed -re 's|/+$||')
BDIR=$(readlink -f "$BDIR")
if [ -z "$BDIR" ]; then
PARENTDIR=$(dirname "$1")
echo >&2 "Error: the directory $PARENTDIR does not exist?"
return 1
fi
fi
if [ -n "$2" ]; then
BITBAKEDIR="$2"
fi
fi if [ "${BDIR#/}" != "$BDIR" ]; then BUILDDIR="$BDIR" else BUILDDIR="$(pwd)/$BDIR" fi unset BDIR
if [ -z "$BITBAKEDIR" ]; then BITBAKEDIR="$OEROOT/bitbake$BBEXTRA" fi
BITBAKEDIR=$(readlink -f "$BITBAKEDIR") BUILDDIR=$(readlink -f "$BUILDDIR")
if [ ! -d "$BITBAKEDIR" ]; then echo >&2 "Error: The bitbake directory ($BITBAKEDIR) does not exist! Please ensure a copy of bitbake exists at this location" return 1 fi
Make sure our paths are at the beginning of $PATH
for newpath in "$BITBAKEDIR/bin" "$OEROOT/scripts"; do # Remove any existences of $newpath from $PATH PATH=$(echo $PATH | sed -re "s#(^|:)$newpath(:|$)#\2#g;s#^:##")
# Add $newpath to $PATH
PATH="$newpath:$PATH"
done unset BITBAKEDIR newpath
Used by the runqemu script
export BUILDDIR export PATH
BB_ENV_EXTRAWHITE_OE="MACHINE DISTRO TCMODE TCLIBC HTTP_PROXY http_proxy
HTTPS_PROXY https_proxy FTP_PROXY ftp_proxy FTPS_PROXY ftps_proxy ALL_PROXY
all_proxy NO_PROXY no_proxy SSH_AGENT_PID SSH_AUTH_SOCK BB_SRCREV_POLICY
SDKMACHINE BB_NUMBER_THREADS BB_NO_NETWORK PARALLEL_MAKE GIT_PROXY_COMMAND
SOCKS5_PASSWD SOCKS5_USER SCREENDIR STAMPS_DIR BBPATH_EXTRA"
BB_ENV_EXTRAWHITE="$(echo $BB_ENV_EXTRAWHITE $BB_ENV_EXTRAWHITE_OE | tr ' ' '\n' | LC_ALL=C sort --unique | tr '\n' ' ')"
export BB_ENV_EXTRAWHITE