You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yocto构建PySide6时Git路径错误及bbappend失效问题求助

问题描述

在使用Yocto构建PySide6时遇到异常:克隆meta-qt6 6.8版本层后尝试安装PySide6,出现大量do_fetch错误,原因是Git路径多了额外的/pyside/或/qt/层级。例如错误路径为code.qt.io/pyside/pyside/pyside-setup.git,正确路径应为code.qt.io/pyside/pyside-setup.git。

为修正路径,在自定义层中编写了多个独立.bbappend文件修改SRC_URI:

  • python3-shiboken6_%.bbappend
SRC_URI:remove = "git://code.qt.io/pyside/pyside/pyside-setup.git;name=pyside-setup;branch=6.8;nobranch=1;protocol=git"
SRC_URI:append = " git://code.qt.io/pyside/pyside-setup.git;name=pyside-setup;branch=6.8;nobranch=1;protocol=https"
SRCREV_FORMAT = "pyside_setup"
  • qtquick3d_%.bbappend
SRC_URI:remove = "git://code.qt.io/qt/qt/qtquick3d.git;name=qtquick3d;branch=6.8;nobranch=1;protocol=git"
SRC_URI:append = " git://code.qt.io/qt/qtquick3d.git;name=qtquick3d;branch=6.8;nobranch=1;protocol=git"

修改仅对部分依赖生效,python3-shiboken6-native和qtquick3d-native依赖未生效,还出现互斥构建现象:

  • 移除python3-shiboken6_git.bbappend时,python3-shiboken6构建成功,但qtquick3d-native失败;
  • 保留qtquick3d_git.bbappend时,shiboken6包出现获取错误;
  • 同时保留或都移除时,两者均失败。

现请教:

  1. Git路径错误的原因是什么?
  2. 如何解决该问题?我的.bbappend命名或写法有明显错误吗?

问题解答

1. Git路径错误的原因

这是meta-qt6 6.8版本层的配方编写失误——在定义SRC_URI时重复添加了项目所属的顶层路径前缀(比如pyside/或qt/),导致Git仓库路径出现冗余层级,无法正确定位到真实的仓库地址。

2. 问题解决与.bbappend的问题修正

你的.bbappend存在两个核心问题:

  • 命名不匹配native配方:当前的python3-shiboken6_%.bbappend和qtquick3d_%.bbappend只会匹配目标架构的配方,但*-native类配方需要对应的*-native_%.bbappend文件来覆盖配置。
  • SRC_URI:remove的匹配精度问题:原配方中可能存在多个Git源,或者SRC_URI的参数顺序/格式和你写的不完全一致,导致SRC_URI:remove没有精准匹配到错误的路径,进而出现互斥构建的冲突。

修正方案:

(1)针对native配方创建对应bbappend

分别创建:

  • python3-shiboken6-native_%.bbappend
SRC_URI:remove = "git://code.qt.io/pyside/pyside/pyside-setup.git;name=pyside-setup;branch=6.8;nobranch=1;protocol=git"
SRC_URI:append = " git://code.qt.io/pyside/pyside-setup.git;name=pyside-setup;branch=6.8;nobranch=1;protocol=https"
SRCREV_FORMAT = "pyside_setup"
  • qtquick3d-native_%.bbappend
SRC_URI:remove = "git://code.qt.io/qt/qt/qtquick3d.git;name=qtquick3d;branch=6.8;nobranch=1;protocol=git"
SRC_URI:append = " git://code.qt.io/qt/qtquick3d.git;name=qtquick3d;branch=6.8;nobranch=1;protocol=git"

(2)优化SRC_URI的修改方式

如果SRC_URI:remove匹配不稳定,可以改用更精准的替换方式,直接覆盖SRC_URI中对应name的源:
以python3-shiboken6为例:

SRC_URI[pyside-setup] = "git://code.qt.io/pyside/pyside-setup.git;branch=6.8;nobranch=1;protocol=https"

这种方式直接针对name=pyside-setup的源修改地址,避免了remove和append的顺序冲突问题。

(3)统一处理所有相关配方

检查meta-qt6 6.8层中所有存在路径冗余的配方(比如其他qt组件、pyside相关包),为每个包(包括native版本)创建对应的bbappend,确保所有SRC_URI中的Git路径都被修正。


内容的提问来源于stack exchange,提问作者Camstillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 02:23:18