【问题标题】:How do I write a yocto/bitbake recipe to copy a directory to the target root file system如何编写 yocto/bitbake 配方以将目录复制到目标根文件系统
【发布时间】:2017-04-04 23:50:57
【问题描述】:

我有一个“二进制”(即不被编译)文件目录,只是希望将它们安装到我的目标根文件系统中。

我看了几篇文章,似乎没有一篇适合我。

此配方所需的功能是:

myRecipe/myFiles/ --> myRootFs/dir/to/install

我目前的尝试是:

SRC_URI += "file://myDir"

do_install() {
         install -d ${D}/path/to/dir/on/fs
         install -m ${WORKDIR}/myDir ${D}/path/to/dir/on/fs
}

我不能抱怨 Yocto 文档的整体性,它真的很棒!就是找不到这样的例子!

【问题讨论】:

标签: directory copy yocto bitbake recipe


【解决方案1】:

请注意,使用简单的递归复制,您最终会收到主机污染警告,因此您需要使用以下参数进行复制:

do_install() {
     [...]
     cp --preserve=mode,timestamps -R ${S}${anydir}/Data/* ${D}${anyotherdir}/Data
     [...]
}

和 poky 中的其他食谱一样,或者直接关注官方 recommendations 以避免所有权和权限问题。

【讨论】:

  • 按照其他用户的建议使用cpinstall -m有什么区别?
  • 我刚刚添加了指向文档的直接链接。我的建议是始终使用安装,除非您需要一些递归复制。
  • 这几乎是唯一正确的答案,线程本身就是this的欺骗
【解决方案2】:

我认为它对您不起作用,因为您忘记在“install -m”之后添加模式值,

查看安装命令的手册页: https://linux.die.net/man/1/install

install -m [mode] src destination

【讨论】:

    【解决方案3】:

    对于这样的食谱文件夹:

    .
    ├── files
    │   ├── a.txt
    │   ├── b.c
    │   └── Makefile
    └── myrecipe.bb
    

    您可以使用以下配方将其安装到您的 rootfs 的特定文件夹中:

    SRC_URI = " file://*"
    do_install() {
        install -d ${WORKDIR}/my/dir/on/rootfs
        install -m 0755 ${S}/* ${WORKDIR}/my/dir/on/rootfs/*
    }
    FILES_${PN} = "/my/dir/on/rootfs/* "
    

    【讨论】:

      【解决方案4】:

      您只需将这些文件复制到您的目标 rootfs 中。如果它们没有安装在标准位置,请不要忘记打包它们。

      SRC_URI += "file://myDir"
      
      do_install() {
          install -d ${D}/path/to/dir/on/fs
          cp -r ${WORKDIR}/myDir ${D}/path/to/dir/on/fs
      }
      FILES_${PN} += "/path/to/dir/on/fs"
      

      【讨论】:

      • 这似乎复制了目录,但没有复制其中的文件或其他目录。我假设我必须明确说明所有这些。有没有一种明智、快速的方法来做到这一点?
      • 当然可以。这就是我使用cp -r 进行递归复制的原因。
      • 我使用了 cp -r,它将“myDir”目录复制到 FS,但没有任何内容...
      • 好的。试试cp -r ${WORKDIR}/myDir/* ${D}/path/to/dir/on/fs。它很奇怪。我去看看。你确定myDir 不为空吗?
      猜你喜欢
      • 2016-02-28
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      • 2018-05-05
      • 1970-01-01
      • 2021-12-08
      相关资源
      最近更新 更多