Yocto使用Bitbake构建imx-image-core镜像do_fetch拉取源码失败
问题根因
并非仓库本身无法访问,你手动可正常克隆就证明源服务可用,触发错误的原因有三个:
- Bitbake调用git拉取大体积仓库时,默认的http传输缓冲区过小,触发GnuTLS传输中断错误
- 首次拉取失败后留下了损坏的本地缓存文件,Bitbake后续执行会直接读取损坏缓存,不会发起新的拉取请求
- 旧版本Yocto默认的拉取超时阈值较短,大仓库拉取耗时超过阈值就会被强制中断
修复步骤
- 清理损坏的本地缓存
首先删除downloads目录下的无效git缓存:
rm -rf /home/sami/edm_yocto/downloads/git2/github.com.llvm.llvm-project rm -rf /home/sami/edm_yocto/downloads/git2/source.codeaurora.org.external.imx.linux-imx.git
再清理对应构建任务的残留状态:
bitbake -c cleansstate llvm-project-source bitbake -c cleansstate linux-imx-headers
- 调整git全局传输缓冲区配置
git config --global http.postBuffer 524288000 git config --global https.postBuffer 524288000 git config --global http.maxRequestBuffer 1048576000
以上配置将git的http传输缓冲区上调至500M,可解决大仓库拉取时的GnuTLS传输错误。
- 可选:延长拉取超时阈值
如果你的网络环境较差,可打开构建目录下的conf/local.conf文件,添加如下配置将拉取超时时间延长至1小时:
BB_FETCH_TIMEOUT = "3600"
- 重新执行构建命令
bitbake imx-image-core
内容的提问来源于stack exchange,提问作者Sami
相关产品推荐
相关产品推荐

