填补openbmc编译过程中的一个坑

编译老版本同方代码:

1.注意要替换为meta-haiguang2的环境变量

export TEMPLATECONF=meta-haiguang/meta-haiguang2/conf/

2.报错

pflash的库就是skiboot库 是skiboot中的一部分
WARNING: pflash-v6.1-r0 do_fetch: Failed to fetch URL git://github.com/open-power/skiboot.git;nobranch=1, attempting MIRRORS if available
ERROR: pflash-v6.1-r0 do_fetch: Fetcher failure: Unable to find revision bb7ae1ade9e06a854771b8ed1e26f7d58b508e84 in branch master even from upstream
ERROR: pflash-v6.1-r0 do_fetch: Fetcher failure for URL: ‘git://github.com/open-power/skiboot.git;nobranch=1’. Unable to fetch URL from any source.
ERROR: pflash-v6.1-r0 do_fetch: Function failed: base_do_fetch
ERROR: Logfile of failure stored in: /home/kunlun/rxsunSource/openbmc-origin/build/tmp/work/armv6-openbmc-linux-gnueabi/pflash/v6.1-r0/temp/log.do_fetch.65823
ERROR: Task (/home/kunlun/rxsunSource/openbmc-origin/meta-openpower/recipes-bsp/skiboot/pflash.bb:do_fetch) failed with exit code ‘1’
一直报错 核实各文件内容的一致性没有问题

3.删掉build下的tmp cache sstate-cache三个临时目录

重编译 报错改为
fatal: Refusing to fetch into current branch refs/heads/master of non-bare repository
ERROR: pflash-v6.1-r0 do_fetch: Fetcher failure for URL: ‘git://github.com/open-power/skiboot.git;nobranch=1’. Unable to fetch URL from any source.
ERROR: pflash-v6.1-r0 do_fetch: Function failed: base_do_fetch
ERROR: Logfile of failure stored in: /home/kunlun/rxsunSource/openbmc-origin/build/tmp/work/armv6-openbmc-linux-gnueabi/pflash/v6.1-r0/temp/log.do_fetch.10559
ERROR: Task (/home/kunlun/rxsunSource/openbmc-origin/meta-openpower/recipes-bsp/skiboot/pflash.bb:do_fetch) failed with exit code ‘1’

4.发现问题所在

分析上面的fatal提示
发现download里除了我克隆下来github.com.open-power.skiboot,还多出来一个 github.com.open-power.skiboot.git,但是这里没有refs/heads/master文件,结合报错提示,想到可能是编译程序试图构建一个带.git后缀的目录失败.
也就是git库的目录名称错了,干脆把目录重命名.不知道为什么以前不报这个错?
目前为止,已知的bmcweb.git webui.git skiboot.git 一共有三个库是带.git后缀的,其它不用.

5.还发现一个问题

当报错的时候 试图通过gitSource 里的源代码pull origin 再push到local的做法是行不通的 ,除非用shell脚本先检查该库是否还存在, 因为刚刚的出错行为会删掉这个库 .
这种情况还需要用. openbmc-env重新生成conf目录

6.事后分析

查找文件bitbake/lib/bb/tests/fetch.py中有一行代码:
self.git(‘update-ref refs/heads/master refs/heads/master~1’, cwd=ud.clonedir)
应该就是这个操作导致的,大概bitbake认为不带.git后缀的库不是bare 仓库.可是其它不带.git后缀的库为什么能编译过去呢,还是skiboot这个库的配置文件有什么特别的?以及webui库的配置文件?
这些代码需要仔细研究.

=====================================================================================================

ruixia,sun wechat
生活相关,请扫描wechat帐号获取更多精彩内容。。。。。。
0%