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中进行,具体情况,将在下回分解。
yocto-sumo源码解析(一): oe-init-build-env的更多相关文章
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- Spring IoC源码解析——Bean的创建和初始化
Spring介绍 Spring(http://spring.io/)是一个轻量级的Java 开发框架,同时也是轻量级的IoC和AOP的容器框架,主要是针对JavaBean的生命周期进行管理的轻量级容器 ...
- jQuery2.x源码解析(设计篇)
jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 这一篇笔者主要以设计的角度探索jQuery的源代 ...
- HashMap 源码解析
HashMap简介: HashMap在日常的开发中应用的非常之广泛,它是基于Hash表,实现了Map接口,以键值对(key-value)形式进行数据存储,HashMap在数据结构上使用的是数组+链表. ...
- Solr DIH JDBC 源码解析
Solr DIH 源码解析 DataImportHandler.handleRequestBody()中的importer.runCmd(requestParams, sw) if (DataImpo ...
- Python2 基本数据结构源码解析
Python2 基本数据结构源码解析 Contents 0x00. Preface 0x01. PyObject 0x01. PyIntObject 0x02. PyFloatObject 0x04. ...
- Theano:LSTM源码解析
最难读的Theano代码 这份LSTM代码的作者,感觉和前面Tutorial代码作者不是同一个人.对于Theano.Python的手法使用得非常娴熟. 尤其是在两重并行设计上: ①LSTM各个门之间并 ...
- jQuery整体架构源码解析(转载)
jQuery整体架构源码解析 最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性, ...
- solr&lucene3.6.0源码解析(四)
本文要描述的是solr的查询插件,该查询插件目的用于生成Lucene的查询Query,类似于查询条件表达式,与solr查询插件相关UML类图如下: 如果我们强行将上面的类图纳入某种设计模式语言的话,本 ...
- solr&lucene3.6.0源码解析(三)
solr索引操作(包括新增 更新 删除 提交 合并等)相关UML图如下 从上面的类图我们可以发现,其中体现了工厂方法模式及责任链模式的运用 UpdateRequestProcessor相当于责任链模式 ...
随机推荐
- Eclipse的PHP插件PHPEclipse安装和使用
PHP有很多相当不错的开发工具,如Zend Studio.NetBeans.phpdesigner等,但对于习惯Java编程的程序猿们来说,最常用的还要属Eclipse.那么Eclipse能用于PHP ...
- POJ 2774 Long Long Message [ 最长公共子串 后缀数组]
题目:http://poj.org/problem?id=2774 Long Long Message Time Limit: 4000MS Memory Limit: 131072K Total ...
- docker 不同版本 添加--insecure-registry
docker 17.0.3 vim /lib/systemd/system/docker.service 然后重启 systemctl daemon-reload , systemctl rest ...
- 【转】JS实现继承的几种方式
既然要实现继承,那么首先我们得有一个父类,代码如下: // 定义一个动物类 function Animal (name) { // 属性 this.name = name || 'Animal'; / ...
- java读入和输出
一: 在python里直接使用input函数就可以,在java里,需要使用Scanner类,用System.in进行初始化,获取用户输入可以用nextLine获取字符串,nextInt获取整形数据. ...
- 如何解析json字符串及返回json数据到前端
前言:最近需要实现的任务是:写若干个接口,并且接口中的请求数据是json格式,然后按照请求参数读取前端提前整理好的json数据,并且将json数据返回到服务器端. 主要的工具:Gson 2.8.2 ...
- 非const引用参数传入不同类型编译不过的理解(拒绝将临时对象绑定为非const的引用的形参是有道理的)
int f (int & I) { cout<<I<<std::endl; } void main() { long L; f(L); // 编译不过 f((int)L ...
- java 工作流项目源码 SSM 框架 Activiti-master springmvc 有手机端功能
即时通讯:支持好友,群组,发图片.文件,消息声音提醒,离线消息,保留聊天记录 (即时聊天功能支持手机端,详情下面有截图) 工作流模块---------------------------------- ...
- 基于Jq的手写插件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- JavaWeb基础—HttpServletRequest
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中, 通过这个对象提供的方法,可以获得客户端请求的所有信息. ...