Yocto Sumo版本BB_NO_NETWORK=1构建失败:Qt无分支提交获取问题
解决Yocto Sumo无网络构建时获取无分支关联Git提交的问题
针对你遇到的qtbase-native构建问题——目标提交(v5.12.11标签对应)不属于任何分支,且BB_NO_NETWORK=1禁止联网的情况,可以通过以下几种方法解决:
1. 为qtbase-native添加.bbappend,跳过分支检查
创建qtbase-native_git.bbappend文件,写入以下配置,直接指定目标提交并禁用分支校验:
# 移除原分支参数,添加nobranch=1跳过分支检查 SRC_URI = "git://code.qt.io/qt/qtbase.git;protocol=https;nobranch=1" # 替换为v5.12.11标签对应的完整40位提交哈希 SRCREV = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # 解决本地仓库跨文件系统的分支发现问题 GIT_DISCOVERY_ACROSS_FILESYSTEM = "1"
核心是nobranch=1参数,它会告诉BitBake的Git fetcher不要检查分支是否存在,直接使用指定的SRCREV拉取代码。
2. 预准备本地Git镜像确保提交存在
因为BB_NO_NETWORK=1禁止联网,必须提前把目标提交同步到本地镜像:
- 联网环境下手动克隆仓库并切换到目标标签:
git clone https://code.qt.io/qt/qtbase.git cd qtbase git checkout v5.12.11 - 在Yocto的
local.conf中配置本地镜像路径:SOURCE_MIRROR_URL = "file:///path/to/your/local/git/mirrors/" BB_SRC_URI_POLICY = "cache"
确保本地镜像包含该无分支提交后,配合上面的.bbappend配置即可构建。
3. 批量修改qt5-git.inc通用配置(可选)
如果多个Qt模块都有类似无分支提交的问题,可以统一修改meta-qt5/recipes-qt/qt5/qt5-git.inc:
# 全局禁用分支检查 SRC_URI_append = ";nobranch=1" # 解决本地仓库分支发现问题 GIT_DISCOVERY_ACROSS_FILESYSTEM = "1"
之后每个Qt模块只需在各自的recipe或.bbappend中指定正确的SRCREV即可。
关键注意事项
- 必须使用完整的40位提交哈希作为
SRCREV,避免哈希冲突或歧义 - 本地镜像中必须提前同步好目标提交,
BB_NO_NETWORK=1时不会触发联网拉取 GIT_DISCOVERY_ACROSS_FILESYSTEM用于解决构建器在访问本地镜像仓库时的分支检查报错问题
内容的提问来源于stack exchange,提问作者paulo-lddx
相关产品推荐
相关产品推荐

