【问题标题】:How to install directory structure recursively in OpenEmbedded BitBake recipe?如何在 OpenEmbedded BitBake 配方中递归安装目录结构?
【发布时间】:2015-10-27 07:50:40
【问题描述】:

我想通过使用某种递归安装例程而不是多次调用 install 来简化安装大型目录结构的 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 是否提供了一些替代机制,或者是否有 一些其他合理标准化的方法来做到这一点。

【问题讨论】:

    标签: shell recipe bitbake openembedded


    【解决方案1】:

    我们以前是这样做的:

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

    【讨论】:

      【解决方案2】:

      OE中的规范形式是

      cp -R --no-dereference --preserve=mode,links -v SOURCE DESTINATION
      

      查看答案here(虽然它们的代码看起来有点不同,但问题在语义上是等效的)

      【讨论】:

        猜你喜欢
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-07
        • 1970-01-01
        • 2013-07-05
        相关资源
        最近更新 更多