[gnome-continuous-yocto/gnomeostree-3.28-rocko: 6204/8267] bitbake: cookerdata: Implement LAYERSERIES_COMPAT and LAYERSERIES_CORENAMES



commit 7ac2d8dce259cb8bf57eaae7b45cc81535c599a4
Author: Richard Purdie <richard purdie linuxfoundation org>
Date:   Wed Jun 7 10:18:49 2017 +0100

    bitbake: cookerdata: Implement LAYERSERIES_COMPAT and LAYERSERIES_CORENAMES
    
    Currently, someone trying a master branch of any given layer may
    or may not find it works with the version of OE-Core that they
    have picked.
    
    This patchset introduces LAYERSERIES_CORENAMES and
    LAYERSERIES_COMPAT_<layername> with the intention of allowing layers
    to indicate which versions of the core project they're compatible with.
    
    In general the master branch will use the next release codename as
    the value of LAYERSERIES_CORENAMES, meaning that the waterfall model
    of layer releases is supported with layers updating their
    LAYERSERIES_COMPAT_ values as they branch for release.
    
    Both variables support multiple strings and a given layer is accepted
    if there is overlap of any one value. This means a layer can be compatible
    with multiple core versions.
    
    Setting LAYERSERIES_COMPAT_ will be required by the Yocto Project
    Compatible v2 standard but the system will not error if its not set at this
    point.
    
    This should make it clear when a given layer is unmaintained and untested
    with new releaes of OE-Core, a common user pain point.
    
    (Bitbake rev: 92c49b9b1a16dfd35444db8143bd4cae4cda70cc)
    
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 bitbake/lib/bb/cookerdata.py |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)
---
diff --git a/bitbake/lib/bb/cookerdata.py b/bitbake/lib/bb/cookerdata.py
index 3d3f133..4d32aa0 100644
--- a/bitbake/lib/bb/cookerdata.py
+++ b/bitbake/lib/bb/cookerdata.py
@@ -360,6 +360,13 @@ class CookerDataBuilder(object):
             if invalid:
                 bb.fatal("BBFILES_DYNAMIC entries must be of the form <collection name>:<filename pattern>, 
not:\n    %s" % "\n    ".join(invalid))
 
+            layerseries = set((data.getVar("LAYERSERIES_CORENAMES") or "").split())
+            for c in collections:
+                compat = set((data.getVar("LAYERSERIES_COMPAT_%s" % c) or "").split())
+                if compat and not (compat & layerseries):
+                    bb.fatal("Layer %s is not compatible with the core layer which only supports these 
series: %s (layer is compatible with %s)"
+                              % (c, " ".join(layerseries), " ".join(compat)))
+
         if not data.getVar("BBPATH"):
             msg = "The BBPATH variable is not set"
             if not layerconf:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]