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

时间:2017-06-01 11:24:35

标签: yocto

目前,我正致力于使用morty分支为beaglebone black创建一个yocto图像。我遵循教程here,大部分成功。在某些时候,我遇到了以下错误:

  

网址提取失败:“http://www.lartmaker.nl/lartware/port/devmem2.c”。校验和不匹配!   文件:'/ home /user/bbb/downloads/devmem2.c'当有be12c0132a1ae118cbf5e79d98427c1d时,有md5校验和e23f236e94be4c429aa1ceac0f01544b [...]

我做了一些研究,发现这个问题是已知的,并且用this commit修复到meta-openembedded repo--它是因为devmem2代码的变化而发生的。 随着对主分支的修复提交,我决定覆盖我devmem2.bb的本地morty副本。 这样做很好,我能够使用bitbake qt5-image从命令行下载和编译我的图像。

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

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

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

显然,我仍然是yocto的新手,甚至是Toaster的新手,所以这个问题可能是初学者错误(非常确定,实际上)。

1 个答案:

答案 0 :(得分:1)

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

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

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"

这解决了我的问题。