]> code.ossystems Code Review - openembedded-core.git/commitdiff
kernel-yocto: allow external (aka non-integrated) BSPs to supply patches
authorBruce Ashfield <bruce.ashfield@gmail.com>
Mon, 30 Dec 2019 03:07:21 +0000 (22:07 -0500)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 30 Dec 2019 23:38:12 +0000 (23:38 +0000)
By default, only explicitly specified .scc files or patches are applied
to a BSP as part of the patching phase. This allows the reference BSPs
to be integrated into a kernel tree, and use the same meta data for tree
generation and for runtime building. It also greatly simplies the
processing of kernel meta data.

That being said, if an external (and fully standalone) kmeta repository
is used, it very well may contain both patches and configuration. To
allow the BSP definition to supply patches and config, we introduce a
new kernel meta data definition:

  define KMETA_EXTERNAL_BSP t

This can be set in any .scc file that wants to specify both patches
and configuration.

If specifying this per-BSP is not desired, a secondary variable is
used:

  KMETA_EXTERNAL_BSPS

When that is set in a bbappend, any located BSP definitions will be used
for both patches and configuration.

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/kernel-yocto.bbclass

index ed9bcfa57c1625e5a6c7b41276f60f8bdbea460b..87c681f1c3b5150779c3ea5594f0f1e86f0414fd 100644 (file)
@@ -182,6 +182,14 @@ do_kernel_metadata() {
                if [ $? -ne 0 ]; then
                        bbfatal_log "Could not locate BSP definition for ${KMACHINE}/${LINUX_KERNEL_TYPE} and no defconfig was provided"
                fi
+
+               # if the bsp definition has "define KMETA_EXTERNAL_BSP t",
+               # then we need to set a flag that will instruct the next
+               # steps to use the BSP as both configuration and patches.
+               grep -q KMETA_EXTERNAL_BSP $bsp_definition
+               if [ $? -eq 0 ]; then
+                   KMETA_EXTERNAL_BSPS="t"
+               fi
        fi
        meta_dir=$(kgit --meta)
 
@@ -195,6 +203,13 @@ do_kernel_metadata() {
                fi
        fi
 
+       # if KMETA_EXTERNAL_BSPS has been set, or it has been detected from
+       # the bsp definition, then we inject the bsp_definition into the
+       # patch phase below.  we'll piggy back on the sccs variable.
+       if [ -n "${KMETA_EXTERNAL_BSPS}" ]; then
+               sccs="${bsp_definition} ${sccs}"
+       fi
+
        # run2: only generate patches for elements that have been passed on the SRC_URI
        elements="`echo -n ${sccs} ${patches} ${KERNEL_FEATURES}`"
        if [ -n "${elements}" ]; then