标签:unset bpa was tps arm64 源码解析 you 第一章 pwd
1 首先,脚本先对运行方式进行了检测:
if ! $(return >/dev/null 2>&1) ; then echo ‘oe-buildenv-internal: error: this script must be sourced‘ echo ‘‘ echo ‘Usage: . $OEROOT/scripts/oe-buildenv-internal &&‘ echo ‘‘ echo ‘OpenEmbedded oe-buildenv-internal - an internal script that is‘ echo ‘used in oe-init-build-env to initialize oe build environment‘ echo ‘‘ exit 2 fi
这个目的,就是强制OEROOT/scripts/oe-buildenv-internal以“. $OEROOT/scripts/oe-buildenv-internal”的方式运行,避免以直接执行$OEROOT/scripts/oe-buildenv-internal的方式运行,也就是希望脚本执行过程中对于环境的一些改变能够在当前shell保存下来。
2 接下来需要检测OEROOT环境变量,从本系列分享的第一章,可以得知,OEROOT即为poky-sumo-19.0.0目录:
if [ -z "$OEROOT" ]; then echo >&2 "Error: OEROOT is not defined!" return 1 fi
3 检测当前shell是否已经包含OE SDK/ADT环境变量:
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
在缺省情况下,OE_SKIP_SDK_CHECK为空,OECORE_SDK_VERSION为空,在这里条件是不满足的,脚本将继续后面的动作。
4 检测python2版本是否为2.7以上,但不能是3.x:
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
5 继续检测python2版本,必须是2.7.3以上,这次是在语言级别上检测:
y_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
6 继续检测python3版本,bitbake需要python3.4以上版本:
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
7 设置BUILDDIR以及BITBAKEDIR,参数1为空时BUILDDIR为“build”,否则BUILDDIR为参数1,参数2不为空时,BITBAKEDIR设置为参数2,参数2为空时BITBAKE指向"$OEROOT/bitbake$BBEXTRA"或者"$OEROOT/../bitbake$BBEXTRA":
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"
test -d "$BITBAKEDIR" || BITBAKEDIR="$OEROOT/../bitbake$BBEXTRA"
fi
BITBAKEDIR=$(readlink -f "$BITBAKEDIR")
BUILDDIR=$(readlink -f "$BUILDDIR")
BBPATH=$BUILDDIR
export BBPATH
if [ ! -d "$BITBAKEDIR" ]; then
echo >&2 "Error: The bitbake directory ($BITBAKEDIR) does not exist! Please ensure a copy of bitbake exists at this location or specify an alternative path on the command line"
return 1
fi
8 设置PATH,BB_ENV_EXTRAWHITE环境变量:
# 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_SETSCENE_ENFORCE"
BB_ENV_EXTRAWHITE="$(echo $BB_ENV_EXTRAWHITE $BB_ENV_EXTRAWHITE_OE | tr ‘ ‘ ‘\n‘ | LC_ALL=C sort --unique | tr ‘\n‘ ‘ ‘)"
export BB_ENV_EXTRAWHITE
那么参照本系列分享第一章中对该脚本的调用:
export OEROOT . $OEROOT/scripts/oe-buildenv-internal && TEMPLATECONF="$TEMPLATECONF" $OEROOT/scripts/oe-setup-builddir || { unset OEROOT return 1 }
脚本最后的几个重要环境变量变更为:
BUILDDIR: poky-sumo-19.0.0/build-arm64
BITBAKEDIR:
PATH:poky-sumo-19.0.0/scripts:poky-sumo-19.0.0/bitbake/bin:/home/totem/bin:/home/totem/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
其中$1为build-arm64,为第一章中". oe-init-build-env build-arm64"中的$1,因为$2为空,另外两个目录亦不存在,故BITBAKEDIR为空。
yocto-sumo源码解析(二): oe-buildenv-internal
标签:unset bpa was tps arm64 源码解析 you 第一章 pwd
原文地址:https://www.cnblogs.com/shortnil/p/9508698.html