如何在Yocto的SRC_URI中配置LIC_FILE_CHECKSUM以进行https下载

时间:2019-06-21 09:49:27

标签: yocto bitbake

我有一个Yocto食谱,可以下载一些文件,包括许可证文件。在我的recipe.bb中,我将这些列在SRC_URI变量中:

SRC_URI="https://example.com/a_source_file;md5=12345 \
         https://example.com/LICENSE;md5=987654"

Bitbake需要一个LIC_FILE_CHKSUM,因此我添加了以下行,希望在下载后检查许可证文件:

LIC_FILE_CHKSUM="file://LICENSE;md5=987654"

使用此设置,bitbake失败,并显示以下消息:

ERROR: <recipe> do_populate_lic: QA Issue: <recipe>: LIC_FILES_CHKSUM points to an invalid file: /home/rolf/.yocto/tmp/work/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/<recipe>/<version>/<recipe>-<version>/LICENSE [license-checksum]

我尝试配置LIC_FILE_CHECKSUM,使其指向https://位置,但是许可证获取程序不支持获取远程许可证文件。

我也试图在目录中保存许可证文件的本地副本,但是bitbake仍然抱怨位置不正确,我怀疑wget提取程序将本地工作目录路径弄乱了。我也不希望这样做,因为本地静态副本无法实现许可证文件检查的目的。

我还尝试向.bb配方文件中添加一个空的do_populate_lic函数,但是以某种方式不会覆盖yocto的license.bbclass定义的函数。

总结:我想在SRC_URI中下载几个文件,其中一个是许可证文件,并具有许可证文件检查功能(或已禁用,因为已在SRC_URI中进行了md5检查)。我该怎么做?

编辑: 实施Nayfe的建议:从项目复制/粘贴的校验和行现在为:LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE;md5sum=650b869bd8ff2aed59c62bad2a22a821"

这给出了不同的行为,我现在看到以下错误:

NOTE: recipe <recipe>-0.2.0-RC.3-r0: task do_populate_lic: Started
WARNING: <recipe>-0.2.0-RC.3-r0 do_populate_lic: <recipe>: No generic license file exists for: commercial in any provider
NOTE: recipe <recipe>-0.2.0-RC.3-r0: task do_populate_lic: Failed
ERROR: <recipe>-0.2.0-RC.3-r0 do_populate_lic: QA Issue: <recipe>: LIC_FILES_CHKSUM is not specified for file:///home/teamcity/.yocto/tmp/work/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/<recipe>/0.2.0-RC.3-r0/LICENSE;md5sum=650b869bd8ff2aed59c62bad2a22a821
<recipe>: The md5 checksum is 650b869bd8ff2aed59c62bad2a22a821 [license-checksum]
ERROR: <recipe>-0.2.0-RC.3-r0 do_populate_lic: Fatal QA errors found, failing task.
ERROR: <recipe>-0.2.0-RC.3-r0 do_populate_lic: Function failed: populate_lic_qa_checksum
ERROR: Logfile of failure stored in: /home/teamcity/.yocto/tmp/work/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/<recipe>/0.2.0-RC.3-r0/temp/log.do_populate_lic.15429
ERROR: Task (/opt/TeamCity/work/7b9b2cdef27c03cf/src/layers/meta-pi3-ostree/recipes-electron/<recipe>/<recipe>.bb:do_populate_lic) failed with exit code '1'

1 个答案:

答案 0 :(得分:1)

由于@Nayfe,我当前的构建现在顺利通过了。有一些缓存文件使我失望,而且LIC_FILES_CHKSUM和SRC_URI的工作方式之间有细微的差别,尽管它们看起来非常相似。这是我目前的工作设置:

LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE;md5=d7bfc32a4337317666d20f2c8c6a8ae1"

SRC_URI="https://internal/artifact/repo/some.executable;md5sum=c46c37e358a12280abbee6948e3c5c39 \
         https://internal/artifact/repo/LICENSE;md5sum=d7bfc32a4337317666d20f2c8c6a8ae1"

请注意:

  • LIC_FILES_CHKSUM具有一个 md5 参数,而SRC_URI使用 md5sum 来实现相同的功能
  • LIC_FILES_CHKSUM不具有SRC_URI的提取程序功能,这意味着您无法在https://中指定git://LIC_FILES_CHKSUM