diff --git a/meta/poky/bitbake/lib/bblayers/common.py b/meta/poky/bitbake/lib/bblayers/common.py
new file mode 100644
index 0000000..98515ce
--- /dev/null
+++ b/meta/poky/bitbake/lib/bblayers/common.py
@@ -0,0 +1,33 @@
+import argparse
+import logging
+import os
+
+logger = logging.getLogger('bitbake-layers')
+
+
+class LayerPlugin():
+    def __init__(self):
+        self.tinfoil = None
+        self.bblayers = []
+
+    def tinfoil_init(self, tinfoil):
+        self.tinfoil = tinfoil
+        self.bblayers = (self.tinfoil.config_data.getVar('BBLAYERS') or "").split()
+        layerconfs = self.tinfoil.config_data.varhistory.get_variable_items_files('BBFILE_COLLECTIONS', self.tinfoil.config_data)
+        self.bbfile_collections = {layer: os.path.dirname(os.path.dirname(path)) for layer, path in layerconfs.items()}
+
+    @staticmethod
+    def add_command(subparsers, cmdname, function, parserecipes=True, *args, **kwargs):
+        """Convert docstring for function to help."""
+        docsplit = function.__doc__.splitlines()
+        help = docsplit[0]
+        if len(docsplit) > 1:
+            desc = '\n'.join(docsplit[1:])
+        else:
+            desc = help
+        subparser = subparsers.add_parser(cmdname, *args, help=help, description=desc, formatter_class=argparse.RawTextHelpFormatter, **kwargs)
+        subparser.set_defaults(func=function, parserecipes=parserecipes)
+        return subparser
+
+    def get_layer_name(self, layerdir):
+        return os.path.basename(layerdir.rstrip(os.sep))
