2017-06-01 95 views
0

目前,我致力于使用诡异的分支为beaglebone黑色创建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到元OpenEmbedded的回购 - 它的发生是因为在devmem2代码的变化。 随着修改提交给主分支,我决定覆盖我的本地morty副本devmem2.bb。 这样做效果很好,我可以使用bitbake qt5-image从命令行下载并编译我的映像。

这样做后,我决定给Toaster一个去。我将所需的图层添加到一个新的Toaster项目中,并运行了qt5-image(它是meta-bbb图层的一部分)的内部版本。然而,我遇到了和以前一样的错误,因为Toaster下载了它自己的版本库。我试着像以前一样重写devmem2.bb,但没有成功,因为Toaster从VCS检出当前版本,因此恢复了我的更改。

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

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

很明显,我对yocto还是比较新的,甚至对于Toaster来说更新,所以这个问题可能是初学者错误(实际上很确定)。

+1

您是否使用.bbappend文件进行了更改?如果没有,您的更改只是被覆盖。在读取之后,bbappend内所做的更改会被考虑在内,并且不会导致校验和错误。或者不是一个bitbake错误? –

+0

谢谢@ guenni_90你让我走上正轨。 –

回答

1

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

解决此问题最简单的方法是创建另一个图层。 复制meta-openembedded/meta-oe/recipes-support/devmem2meta-newlayer/recipes-support/devmem2。 重命名devmem2.bbapendmeta-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" 

这解决了该问题对我来说。

+0

谢谢杰罗姆,这与我最终做的类似,除了我没有复制整个meta-oe层,而是用bbappend创建了一个新的(在你的答案中也是一个小错字)。复制整个图层是否有优势?似乎没有必要。 –

+0

复制meta-openembedded/meta-oe/recipes-support/devmem2到meta-newlayer/recipes-support/devmem2并不意味着复制整个meta-oe,只复制devmem2路径。实际上不需要复制整个图层。 –

+0

我误解了这一点。你的回答是正确的。对于有类似问题的其他人有点暗示,我找到了[yocto-layer](http://www.yoctoproject.org/docs/1.8/dev-manual/dev-manual.html#creating-a-general- layer -using-the-yocto-layer-script)对创建图层非常有用。让事情变得更容易,让我放心。我将使用这个新图层来处理所有图像添加和更改。 –