bitbake中SRC_URI和FILESEXTRAPATHS_prepend之间的区别

时间:2017-09-21 11:30:27

标签: yocto bitbake

为什么我们需要在SRC_URI中提供文件路径,即使我们在FILESEXTRAPATHS_prepend变量中包含文件路径。像:

SUMMARY = "Simple Hello application"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

SRC_URI = "file://Hello_1.c \
           file://Hello_2.c \
              "

do_compile() {
         oe_runmake
}

do_install() {
         install -d ${D}${bindir}
         install -m 0755 Hello ${D}${bindir}
}

在files文件夹中,我有两个文件hello1.chello2.c。当我删除SRC_URI时,它会输出以下错误,

ERROR: Hello-1.0-r0 do_compile: oe_runmake failed

但如果我删除 FILESEXTRAPATHS_prepend它工作正常。

变量FILESEXTRAPATHS_prepend的目的是什么?

为什么我删除SRC_URI时出现错误,即使我在FILESEXTRAPATHS_prepend中包含我的文件路径?

2 个答案:

答案 0 :(得分:4)

简单的方法让我们假设meta-layer/recipes-core/example
1.在上面的路径中创建hellohello.bb
2. hello is a directory having your source and other datahello.bb is recipe

现在

SRC_URI SRC_URI变量始终仅检查hello dir中的数据。 FILESEXTRAPATHS_prepend:=" $ {THISDIR}:" :如果您在食谱中添加此行,则SRC_URI变量会检查present directory中的数据存在hello.bb文件的位置。

在你的情况下

  

FILESEXTRAPATHS_prepend:=" $ {THISDIR} / files:"

SRC_URI变量检查files目录中hello.bb所在的数据。

Note:大多数时候人们会在.BBappend文件中使用这个FILESEXTRAPATHS变量来将补丁和其他文件应用到配方中。

  

对于每个.bb文件,SRC_URI变量用于指定从哪个文件获取源 - 来自   在线存储库或本地存储库,FILESEXTRAPATHS指定查找这些文件的位置,具体取决于您的来源   路径。

答案 1 :(得分:0)

  

BitBake使用SRC_URI变量指向源文件   不管他们的位置如何。每个食谱必须都有SRC_URI   指向源的变量。

     

SRC_URI = file://获取文件,这些文件通常是附带的文件   使用元数据,来自本地计算机。路径是相对于   FILESPATH变量。因此,构建系统按顺序搜索   以下目录,假定为子目录   配方文件(.bb)或追加文件的目录   (.bbappend)驻留:

     

FILESPATH:OpenEmbedded构建的默认目录集   系统在搜索补丁和文件时使用。在构建期间   进程,BitBake搜索指定的FILESPATH中的每个目录   查找每个文件指定的文件和补丁时的顺序:// URI   在食谱中。

     

FILESPATH变量的默认值在。中定义   在源目录中的元/类中找到的base.bbclass类:

 FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${BP}", \
    "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files"], d)}"
     

不要手动编辑FILESPATH变量;该   BitBake在处理配方时使用的默认目录   最初由FILESPATH变量定义。您可以扩展FILESPATH   使用FILESEXTRAPATHS变量。

     

<强>&GT;最佳实践要求您通过使用来实现此目的   来自.bbappend文件中的FILESEXTRAPATHS

     

FILESEXTRAPATHS扩展 OpenEmbedded构建系统的搜索路径   在处理食谱时查找文件和补丁时使用   附加文件。 BitBake处理时使用的默认目录   配方最初由FILESPATH变量定义。

     

如果您希望构建系统选择通过a指定的文件   来自附加文件的SRC_URI语句,您需要确保扩展   FILESPATH变量也可以使用FILESEXTRAPATHS变量   在你的追加文件中。

http://www.yoctoproject.org/docs/2.1/ref-manual/ref-manual.html#var-FILESPATH

回到你的错误,因为每个食谱必须有一个SRC_URI;如果删除它将无法正常工作;

由于您的食谱不是.bbappend,因此添加FILESEXTRAPATHS是不恰当的,也不是必需的。