yocto-sumo源码解析(一): oe-init-build-env
oe-init-build-env是yocto构建环境运行的第一个脚本,通过运行下面的命令:
. oe-init-build-env build-arm64
即可对yocto项目进行构建,顾名思义,该脚本主要目的还在于给yocto项目构建进行环境准备,在运行前后,可以观察到本地的一些变化,先看环境变量上的一些变化:
对于原有环境变量,yocto修改了下面几个环境变量:
oldpwd:记录脚本运行前的工作目录;
path:修改执行程序搜索路径,这样就可以在后续操作中运行bitbake等命令;
pwd:记录脚本运行后的工作目录;
bbpath:记录bbpath,具体含义,在后面的分析当中进行阐述;
builddir:记录yocto构建目录;
bb_env_extrawhite: 记录bb_env_extrawhite,具体含义,在后面的分析当中进行阐述。
除了对环境变量进行修改,同时也在本地建立了build-arm64这个构建目录。
下面是oe-init-build-env源码:
if [ -n "$bash_source" ]; then
this_script=$bash_source
elif [ -n "$zsh_name" ]; then
this_script=$0
else
this_script="$(pwd)/oe-init-build-env"
fi
if [ -n "$bbserver" ]; then
unset bbserver
fi
if [ -z "$zsh_name" ] && [ "$0" = "$this_script" ]; then
echo "error: this script needs to be sourced. please run as '. $this_script'"
exit 1
fi
if [ -z "$oeroot" ]; then
oeroot=$(dirname "$this_script")
oeroot=$(readlink -f "$oeroot")
fi
unset this_script
export oeroot
. $oeroot/scripts/oe-buildenv-internal &&
templateconf="$templateconf" $oeroot/scripts/oe-setup-builddir || {
unset oeroot
return 1
}
unset oeroot
[ -z "$builddir" ] || cd "$builddir"
脚本逻辑也不复杂,主要步骤:
1、设置this_script变量,若bash_source不为空,this_script指向bash_source,若zsh_name不为空,this_script指向脚本文件本身,缺省情况下,this_script指向oe-init-build-env脚本文件绝对路径;
2、重置bbserver变量;
3、检查oe-init-build-env运行方式,确认一定是以“. oe-init-build-env <builddir>”的方式运行;
4、运行scripts/oe-buildenv-internal以及scripts/oe-setup-builddir脚本;
5、进入构建目录;
从上面5个步骤来看,关于环境变量的变化,并没有在该脚本进行修改,因此只有可能在oe-buildenv-internal以及oe-setup-builddir中进行,具体情况,将在下回分解。
上一篇: 晨跑和晚跑哪个好 晚上跑步应该注意什么
下一篇: 如何预防颈椎病 保护颈椎4大招数
推荐阅读
-
Laravel5 源码解析 (一)
-
微信跳一跳python辅助软件思路及图像识别源码解析
-
基于Spring注解的上下文初始化过程源码解析(一)
-
netty源码解析(4.0)-28 ByteBuf内存池:PooledByteBufAllocator-把一切组装起来
-
Mybaits 源码解析 (十二)----- Mybatis的事务如何被Spring管理?Mybatis和Spring事务中用的Connection是同一个吗?
-
Tomcat源码分析三:Tomcat启动加载过程(一)的源码解析
-
Mybaits 源码解析 (十)----- 全网最详细,没有之一:Spring-Mybatis框架使用与源码解析
-
Mybaits 源码解析 (八)----- 全网最详细,没有之一:结果集 ResultSet 自动映射成实体类对象(上篇)
-
Mybaits 源码解析 (九)----- 全网最详细,没有之一:一级缓存和二级缓存源码分析
-
JDK8源码解析 -- HashMap(一)