[yocto] Layer Priority with Wildcard .bbappend Files

Stevens, Nick Nick.Stevens at etherios.com
Mon Nov 24 12:22:31 PST 2014


I think I've encountered a bug with how multiple bbappend files are processed when one of the bbappends contains a filename wildcard, but I want to make sure there's not something I'm missing before filing a bug report.

I have a BSP layer and a customization layer that are based on the OE/poky Daisy release. The output of `bitbake-layers show-layers` looks like:
    layer                 path                 priority
    =====================================================
    meta                  poky/meta            5
    meta-yocto            poky/meta-yocto      5
    meta-yocto-bsp        poky/meta-yocto-bsp  5
    ...ellided...
    meta-bsp              meta-bsp             6
    meta-custom           meta-custom          8

In meta-bsp there is a bbappend for base-files named base-files_3.0.14.bbappend. The meta-bsp bbappend adds a sysctl.conf to /etc - pretty straightforward:
    FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
    SRC_URI += "file://sysctl.conf"
    do_install_append() {
        install -m 0644 ${WORKDIR}/sysctl.conf ${D}${sysconfdir}/
    }

Now what I want to do is add a file called base-files_%.bbappend to meta-custom. It has its own version of sysctl.conf, and the recipe looks like this:
    FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

Here's where things get weird. If I run `bitbake -e base-files` and pull out the section for FILESEXTRAPATHS, this is what I get (note that I've stripped out the huge absolute paths to make this easier to read):
    # $FILESEXTRAPATHS [5 operations]
    #   set poky/meta/conf/documentation.conf:172
    #     [doc] "Extends the search path the OpenEmbedded build system uses when looking for files and patches as it processes recipes and append files."
    #   _prepend meta-custom/recipes-core/base-files/base-files_%.bbappend:6
    #     "meta-custom/recipes-core/base-files/base-files:"
    #   _prepend meta-bsp/recipes-core/base-files/base-files_3.0.14.bbappend:3
    #     "meta-bsp/recipes-core/base-files/base-files:"
    #   set data_smart.py:432 [finalize]
    #     "meta-custom/recipes-core/base-files/base-files:"
    #   set data_smart.py:432 [finalize]
    #     "meta-bsp/recipes-core/base-files/base-files:meta-custom/recipes-core/base-files/base-files:"
    # computed:
    #   "meta-bsp/recipes-core/base-files/base-files:meta-custom/recipes-core/base-files/base-files:"
    FILESEXTRAPATHS="meta-bsp/recipes-core/base-files/base-files:meta-custom/recipes-core/base-files/base-files:"

For some reason meta-bsp is coming before meta-custom in FILESEXTRAPATHS, even though meta-custom has a higher priority! I verified this by building an image - the sysctl.conf that ends up in the final image is the one from meta-bsp, not the one from meta-custom. But if I switch the name of base-files_%.bbappend in meta-custom to base-files_3.0.14.bbappend, this is what I get:
    # $FILESEXTRAPATHS [5 operations]
    #   set poky/meta/conf/documentation.conf:172
    #     [doc] "Extends the search path the OpenEmbedded build system uses when looking for files and patches as it processes recipes and append files."
    #   _prepend meta-bsp/recipes-core/base-files/base-files_3.0.14.bbappend:3
    #     "meta-bsp/recipes-core/base-files/base-files:"
    #   _prepend meta-custom/recipes-core/base-files/base-files_3.0.14.bbappend:6
    #     "meta-custom/recipes-core/base-files/base-files:"
    #   set data_smart.py:432 [finalize]
    #     "meta-bsp/recipes-core/base-files/base-files:"
    #   set data_smart.py:432 [finalize]
    #     "meta-custom/recipes-core/base-files/base-files:meta-bsp/recipes-core/base-files/base-files:"
    # computed:
    #   "meta-custom/recipes-core/base-files/base-files:meta-bsp/recipes-core/base-files/base-files:"
    FILESEXTRAPATHS="meta-custom/recipes-core/base-files/base-files:meta-bsp/recipes-core/base-files/base-files:"

And now the sysctl.conf file is being pulled from meta-custom.

Is there something I'm missing, like some sort of decreased priorty for bbappend files with a wildcard? Or is this a bug?

Thanks for any help!

Nick Stevens



More information about the yocto mailing list