【问题标题】:How to use SSTATE_DUPWHITELIST variable in yocto如何在 yocto 中使用 SSTATE_DUPWHITELIST 变量
【发布时间】:2016-09-19 00:56:28
【问题描述】:

我会尽量简单地解释它。我试图在我的 Yocto 映像中包含并构建包“A”,但包 A 依赖于 libftdiftdi-eeprom。现在,“ftdi-eeprom”依赖于“libftdi”。 在较新版本的“libftdi”中,tarball 还包含 ftdi-eeprom 源代码,当您构建 libftdi 时,它会构建两个包。尽管由于包“A”的配置方式,我需要为每个依赖项提供两个不同的配方。

长话短说,我尽我所能制作了两个 bitbake 食谱并成功构建了“libftdi”。现在,当我运行“ftdi-eeprom”配方时,它希望将一些文件填充到 libftdi 已经安装的 sysroot 中。这是发生错误的地方......重复!

显然我需要设置一个 SSTATE_DUPWHITELIST 变量并声明这些重复文件可以安全地替换图像中的旧文件(必须进行这种覆盖)。有人可以帮我配置 SSTATE_DUPWHITELIST 吗?我不是那种与 Yocto 合作的专业人士。

我在屏幕上看到的错误上传到Dropbox

提前致谢!

【问题讨论】:

    标签: build compiler-errors yocto bitbake openembedded


    【解决方案1】:

    我设法通过将 SSTATE_DUPWHITELIST 添加到包的 bitbake 配方中解决了这个问题,如下所示:

    SSTATE_DUPWHITELIST = "${TMPDIR}/PATH/TO/THE/FILES"

    我将所有有冲突的 6,7 文件的绝对路径添加到列表中。我这样做是因为它们基本上来自同一个来源,而且这样做是安全的。如果有更好的方法,请纠正我。

    希望这对某人有所帮助!

    【讨论】:

      【解决方案2】:

      答案是根本不使用 SSTATE_DUPWHITELIST。相反,在 libftdi 配方的 do_install(或 do_install_append,如果配方本身没有定义自己的 do_install)中,您应该从 ${D} 中删除重复的文件,然后它们将不会被暂存并且不会发生错误.

      【讨论】:

      • 是的,要么删除冲突文件,要么让一个配方构建所有内容,然后将 eeprom 文件放在自己的包中。 (我没有看过有问题的食谱,但这可能是更好的方法)。
      • 谢谢大家的回复,我刚开始使用Yocto,还在学习中。我可以麻烦您提供您建议做的示例语法吗?这真的很有帮助。干杯。
      【解决方案3】:

      我通过以下方式让它工作: SSTATE_DUPWHITELIST = "/"

      不要忘记引号。这是我的bb摘录:

      SSTATE_DUPWHITELIST = "/"
      
      DEPENDS = ""
      
      do_unpack() {
          mkdir -pv ${S}
          tar xvf ${DL_DIR}/${FILENAME}.tar  -C ${S}
      }
      
      do_install() {
          install -d -m 755  ${D}${includedir}
          install -m 644  ${S}/${MYPATH}/inc/myHeader1.h ${D}${includedir}
          install -m 644  ${S}/${MYPATH}/inc/myHeader2.h ${D}${includedir}
          install -m 644  ${S}/${MYPATH}/inc/myHeader3.h ${D}${includedir}
      }
      

      【讨论】:

        猜你喜欢
        • 2021-02-25
        • 1970-01-01
        • 1970-01-01
        • 2017-07-18
        • 1970-01-01
        • 2021-02-28
        • 1970-01-01
        • 1970-01-01
        • 2016-08-14
        相关资源
        最近更新 更多