【问题标题】:do_patch: Function failed: patch_do_patch -- running bitbakedo_patch:功能失败:patch_do_patch -- 运行 bitbake
【发布时间】:2020-12-05 04:13:09
【问题描述】:

我正在使用 yocto 构建一个集成了某些层的 wlan 和特定 wifi 芯片的 linux 映像,但似乎修补其中一个文件失败(详情如下)

我做的步骤:

  • 创建了工作目录
  • 通过以下方式为内核 4.14.98 初始化了一个 repo:
repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-sumo -m imx-4.14.98-2.3.3.xml
  • 通过repo sync同步repo
  • 在当前工作目录之外创建了一个tmp文件夹,并通过以下方式下载wifi的具体代码
repo init -u git://codeaurora.org/quic/le/le/manifest.git -b release -m CHSS.LNX_FSLS.1.0-01200-QCAAUTOHOSTHZ.xml –repo-url=git://codeaurora.org/tools/repo.git –repo-branch=caf-stable
  • 回购同步
  • meta-qti-connectivitywlan-opensource文件夹复制到工作目录的源文件夹中
  • 下载特定wifi芯片的文件并将meta-qticonnectivity-propwlanproprietary复制到工作目录的源文件夹中

所以现在我们在工作目录的源文件夹中添加了额外的 4 个目录

  • 设置构建环境
  • 运行bitbake core-image-minimal

我看到以下错误:

ERROR: wpa-supplicant-git-r0 do_patch: Command Error: 'quilt --quiltrc <working_directory>/linux_image/build/tmp/work/imx8qxpmek-poky-linux/wpa-supplicant/git-r0/recipe-sysroot-native/etc/quiltrc push' exited with 0  Output:
Applying patch 0009-Sync-with-mac80211-next.git-include-uapi-linux-nl802.patch
patching file src/drivers/nl80211_copy.h
...
15 out of 20 hunks FAILED -- rejects in file src/drivers/nl80211_copy.h
Patch 0009-Sync-with-mac80211-next.git-include-uapi-linux-nl802.patch does not apply (enforce with -f)
ERROR: wpa-supplicant-git-r0 do_patch: Function failed: patch_do_patch
  • 我是 yocto 新手,从外观上看,补丁 0009-Sync-with-mac80211-next.git-include-uapi-linux-nl802.patch 似乎不适用,但这是否意味着问题出在补丁文件或其引用方式上。

这个补丁文件位于wpa-supplicant子目录下的meta-fsl-bsp-release层,我没有手动添加。该子目录有一个.bbappend 文件,它通过SRC_URI 变量引用这些补丁文件,但它不包含任何.bb 文件。

我添加的其中一个元层也有wpa-supplicant 子目录,但它只有.bb 文件,没有.bbappend

我很困惑这两个子目录有何不同,或者它们是否会发生冲突?另外,子目录不应该同时具有.bbappend 和相应的.bb 文件吗?

  • SRC_URI 变量用于定位适用的补丁文件,而 wpa-supplicant 的相应 .bb 文件中不需要 do_patch,对吧?

  • 相应的 bb 文件 wpa-supplicant 具有以下内容:

SRC_URI = "file://wlan-opensource/wpa_supplicant_8/"
SRC_URI += "file://hostapdconf \
            file://supplicantconf \

补丁文件不应该以.patch结尾吗?

另外,我在 yocto 文档中看到 file:// 中定义的路径是相对于 FILESPATH 变量的,在 bb 文件中定义为 "${BSPDIR}/sources:" - 不确定 BSPDIR 本身但我认为它指的是&lt;top_dir&gt;/sources,但这是否意味着hostapdconf 应该位于&lt;top_dir&gt;/sources?我没有看到它,但在其他子目录中

【问题讨论】:

    标签: linux-kernel embedded-linux yocto bitbake


    【解决方案1】:

    在我看来,您在与配方不匹配的版本中为 wpa-supplicant 配方添加了 .bbappend。 .bbappend 可能来自您手动复制到源树中的元层之一(meta-qti-connectivitywlan-opensource)。

    我是 yocto 新手,从外观上看,似乎是补丁 0009-Sync-with-mac80211-next.git-include-uapi-linux-nl802.patch 没有 申请,但这是否意味着问题出在补丁文件或方式上 被引用了?

    很可能补丁是针对不同版本的源文件。

    SRC_URI 变量用于定位适用的补丁文件和 wpa-supplicant 的相应 .bb 文件中不需要 do_patch, 对吧?

    是的,如果您没有在 .bb 中明确看到它。将使用默认的 do_patch 任务。

    相应的 bb 文件 wpa-supplicant 具有以下内容:

    SRC_URI = "file://wlan-opensource/wpa_supplicant_8/" SRC_URI += “文件://hostapdconf
    file://supplicantconf \ 不应该定义补丁文件 以 .patch 结尾?

    如果您在 .bb 文件中看不到 .patch 文件,则它可能在 .bbappend 中被名称引用。

    【讨论】:

    • 感谢您的回复。所以我试图理解。 .bbappend 文件与其对应的配方 .bb 文件具有相同的根名称。所以在您的第一条评论中,您是否暗示.bbappend 的版本号与meta-qti-connectivitywlan-opensource 的相应配方不一致?
    • 另外,根据我阅读后的理解,bblayers.conf 文件应该包含我们需要通过BBLAYERS 变量包含的层。我已经看到了 meta-qti-connectivity-propmeta-qti-connectivity 层,所以看起来还可以
    • 也基于我的第一条评论,这是否意味着 bbappend 文件确实存在,特别是 wpa 请求者的配方?我的理解是 bbappend 文件包含多个配方,不一定只有一个,但我没有看到任何 bbappend 文件与配方文件具有相同的根名称,这对应于错误背后的潜在原因(版本号为不同)
    • 这个 bbappend 仅适用于一个配方。它将应用于具有相应基本名称的配方。可以使用(或不使用版本或在版本中使用通配符)指定 bbappend。没有版本的 bbappend 将适用于相应配方的所有版本,而版本化的 bbappend 将仅适用于具有正确版本的配方。因此,如果您不小心,未版本化的 bbappend 可能会应用于不打算用于的配方。
    • 事情是我在我添加的一个元层中看到了一个wpa-supplicant 子目录,另一个在已经存在的层中,即meta-fsl-bsp-release。在后一层结构中,我只看到.patch 文件以及wpa-supplicant_%.bbappend 文件,我认为该文件适用于相应配方的所有版本,但我没有在同一子目录下看到任何特定配方.bb 文件- 这是否意味着我需要自己创建.bb 文件?
    猜你喜欢
    • 2016-09-16
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多