我如何处理尚未成为版本分支一部分的错误修复?

How do I handle fixes for bugs, that have not been made part of a version branch?

目前,我正在使用 morty b运行ch 为 beaglebone black 创建 yocto 图像。我遵循了教程 here,大部分都成功了。在某些时候我遇到了以下错误:

Fetcher failure for URL: 'http://www.lartmaker.nl/lartware/port/devmem2.c'. Checksum mismatch! File: '/home/user/bbb/downloads/devmem2.c' has md5 checksum e23f236e94be4c429aa1ceac0f01544b when be12c0132a1ae118cbf5e79d98427c1d was expected [...]

我做了一些研究,发现这个问题是已知的,并通过 this commit 修复到 meta-openembedded 存储库 - 它是由于 devmem2 代码的更改而发生的。 由于对主 b运行ch 进行了修复提交,我决定覆盖 devmem2.bb 的本地 morty 副本。 这样做效果很好,我可以使用 bitbake qt5-image.

从命令行下载和编译我的图像

这样做之后,我决定 Toaster 试一试。我将所需的层添加到新的 Toaster 项目和 运行 qt5-image 的构建(它是 meta-bbb 层的一部分)。但是,我 运行 遇到了和以前一样的错误,因为 Toaster 下载了它自己的存储库副本。我尝试和以前一样,覆盖 devmem2.bb - 但没有成功,因为 Toaster 从 VCS 检查当前版本并因此恢复我的更改。

现在,我想知道什么是正确的行动方式,或者我有哪些选择?

Openembedded advises 在校验和错误的情况下写入邮件列表。但我对此犹豫不决,因为它不再是一个真正的开放问题,而且我也不完全知道我在做什么。但是手动覆盖食谱是危险的,而且感觉完全错误;即使在工作时。

显然,我对 yocto 还是个新手,对 Toaster 更陌生,所以这个问题可能是初学者的错误(实际上很确定)。

分支 Krogoth 中的配方 devmem2.bb 已损坏,因为镜像 http://www.lartmaker.nl/lartware/port/devmem2.c 不可用。

解决此问题的最简单方法是创建另一个图层。 将 meta-openembedded/meta-oe/recipes-support/devmem2 复制到 meta-newlayer/recipes-support/devmem2。 在 devmem2.bbapend 中重命名 meta-newlayer/recipes-support/devmem2/devmem2.bb 并将其中的所有内容替换为 :

SUMMARY = "Simple program to read/write from/to any location in memory"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://devmem2.c;endline=28;md5=dd68f2b0a5184b3db3dc25c99e0bd0cd"
PR = "r7"

SRC_URI = "https://raw.githubusercontent.com/radii/devmem2/master/devmem2.c \
           file://devmem2-fixups-2.patch;apply=yes;striplevel=0"
S = "${WORKDIR}"

CFLAGS += "-DFORCE_STRICT_ALIGNMENT"

do_compile() {
    ${CC} -o devmem2 devmem2.c ${CFLAGS} ${LDFLAGS}
}

do_install() {
    install -d ${D}${bindir}
    install devmem2 ${D}${bindir}
}

SRC_URI[md5sum] = "be12c0132a1ae118cbf5e79d98427c1d"
SRC_URI[sha256sum] = "ec382c90af3ef2f49695ff14a4d6521e58ac482c4e29d6c9ebca8768f699c191"

这解决了我的问题。