首页 > 其他 > 详细

source build/envsetup.sh

时间:2014-02-27 16:01:48      阅读:786      评论:0      收藏:0      [点我收藏+]

2014-02-26

这是最先要做的一步,主要是做编译之前的配置。

旅程开始:从哪里开始?

首先要找到该脚本从哪里开始执行,如果你使用的编辑器支持代码折叠和symbles浏览,那么这件事情就比较简单。

代码折叠后,看一下脚本的整体结构,可以发现基本全是函数,期间零星分散着一些变量的设置。函数是要被调用的,

自然不会从函数开始。直到最后才发现函数调用:

bubuko.com,布布扣
for f in `/bin/ls vendor/*/vendorsetup.sh vendor/*/*/vendorsetup.sh device/*/*/vendorsetup.sh 2> /dev/null`
do
    echo "including $f"
    . $f
done
unset f
bubuko.com,布布扣

这段代码做了什么呢:

将 “vendor/*/”、“vendor/*/*/”、“device/*/*/”目录下名为“vendorsetup.sh”的脚本包含进来。

如果你在shell里实际试一下这段代码,就会发现很多脚本都会被包含进来。难道是一个无底洞?不要忘记出发是为了什么,我们分析脚本更多是为了开发自己的产品,因此只要分析和自己开发的产品相关的脚本就行了。何况以上每个脚本所做的应该是类似的事情。所以对作者来说,下面几个才是需要分析的:

bubuko.com,布布扣
device/softwinner/apollo-cubieboard/vendorsetup.sh
device/softwinner/common/vendorsetup.sh
bubuko.com,布布扣

旅程继续

device/softwinner/apollo-cubieboard/vendorsetup.sh

这个脚本中都是函数,其中对于cubieboard来说,较重要的是 extract-bsp 和 pack,后面会提到。

device/softwinner/common/vendorsetup.sh

这个脚本中只有一行:

bubuko.com,布布扣
add_lunch_combo apollo_cubieboard-eng
bubuko.com,布布扣

功能是添加产品配置,会出现在lunch命令的产品列表中。add_lunch_combo函数定义于build/envsetup.sh,代码如下:

bubuko.com,布布扣
function add_lunch_combo()
{
    local new_combo=$1
    local c
    for c in ${LUNCH_MENU_CHOICES[@]} ; do #{LUNCH_MENU_CHOICES[@]}表示取出数组中所有的元素
        if [ "$new_combo" = "$c" ] ; then
            return
        fi
    done
    LUNCH_MENU_CHOICES=(${LUNCH_MENU_CHOICES[@]} $new_combo) #添加新的产品
}
bubuko.com,布布扣

 

旅程结束

bubuko.com,布布扣
addcompletions
bubuko.com,布布扣

通过symbles浏览功能,定位到这个函数,内容如下:

bubuko.com,布布扣
function addcompletions()
{
    local T dir f

    # Keep us from trying to run in something that isnt bash.
    if [ -z "${BASH_VERSION}" ]; then
        return
    fi 

    # Keep us from trying to run in bash thats too old.
    if [ ${BASH_VERSINFO[0]} -lt 3 ]; then
        return
    fi

    dir="sdk/bash_completion"
    if [ -d ${dir} ]; then
        for f in `/bin/ls ${dir}/[a-z]*.bash 2> /dev/null`; do
            echo "including $f"
            . $f
        done
    fi
}
这个函数将“
sdk/bash_completion”目录下的脚本包含进来,为bash提供自定义自动补全。

bubuko.com,布布扣

至此,source build/envsetup.sh  命令执行结束,但该脚本中的内容在后面的命令中还大有用处,后面还会再提到。

source build/envsetup.sh,布布扣,bubuko.com

source build/envsetup.sh

原文:http://www.cnblogs.com/JonnyLulu/p/3569915.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!