shell - 如何在 OpenEmbedded BitBake 配方中递归安装目录结构?

标签 shell recipe bitbake openembedded

我想简化 BitBake 配方,通过使用某种递归安装例程而不是多次调用安装来安装大型目录结构。源目录布局在开发过程中经常发生变化,这导致了比我想要处理的更多的配方修订。

举个例子,下面的 do_install() 如何由此简化:

do_install() {
    install -d ${D}/foo
    install -m 0644 ${S}/foo/*.* ${D}/foo

    install -d ${D}/foo/a
    install -m 0644 ${S}/foo/a/*.* ${D}/foo/a

    install -d ${D}/foo/b
    install -m 0644 ${S}/foo/b/*.* ${D}/foo/b

    install -d ${D}/foo/c
    install -m 0644 ${S}/foo/c/*.* ${D}/foo/c

    install -d ${D}/bar
    install -m 0644 ${S}/bar/*.* ${D}/bar

    install -d ${D}/bar/a
    install -m 0644 ${S}/bar/a/*.* ${D}/bar/a

    install -d ${D}/bar/a/bananas
    install -m 0644 ${S}/bar/a/bananas/*.* ${D}/bar/a/bananas
}

更像是这样的伪代码:

do_install() {
    for each subdir in ${S}/foo/
        install subdir recursively to ${D}/foo/subdir
    end

    for each subdir in ${S}/bar/
        install subdir recursively to ${D}/bar/subdir
    end
}

源文件中的顶级目录(上例中的 foo 和 bar)很少改变,因此在配方中调用它们就可以了。这是经常更改的较低级别目录。

可能 cp -r 最终会成为可行的方法,但我相信我已经读到它在 BitBake 食谱中不受欢迎,所以我想知道 BitBake 是否提供了一些替代机制,或者是否有 其他一些合理的标准化方法来做到这一点。

最佳答案

我们曾经这样做过:

do_install() {
find ${WORKDIR}/ -type f -exec 'install -m 0755 "{}" ${D}/var/www/' \;
}

关于shell - 如何在 OpenEmbedded BitBake 配方中递归安装目录结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31817222/

相关文章:

grpc - 如何在 Yocto bitbake Recipe 中调用 python 模块?

yocto - native 包拒绝将库放在 sysroot 文件夹中

opencv - Yocto:cmake 缺少 header - 如何依赖开发包?

linux - 从linux中的文件中提取字符串下的字符串

linux - Unix/Linux 管道是由生产者还是消费者驱动的?

c++ - 如何将参数从c++传递到linux shell

linux - shell 脚本无法进入包含空格的目录

drupal-7 - 在chef(ubuntu)中安装recipe时在哪里指定属性?

linux - 如何将 linux 系统文件覆盖到 yocto 文件系统中?

linux - 使用 Yocto 配方构建内核时如何启用 tc 命令