xref: /OK3568_Linux_fs/yocto/poky/bitbake/lib/bblayers/common.py (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#
2*4882a593Smuzhiyun# Copyright BitBake Contributors
3*4882a593Smuzhiyun#
4*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
5*4882a593Smuzhiyun#
6*4882a593Smuzhiyun
7*4882a593Smuzhiyunimport argparse
8*4882a593Smuzhiyunimport logging
9*4882a593Smuzhiyunimport os
10*4882a593Smuzhiyun
11*4882a593Smuzhiyunlogger = logging.getLogger('bitbake-layers')
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun
14*4882a593Smuzhiyunclass LayerPlugin():
15*4882a593Smuzhiyun    def __init__(self):
16*4882a593Smuzhiyun        self.tinfoil = None
17*4882a593Smuzhiyun        self.bblayers = []
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun    def tinfoil_init(self, tinfoil):
20*4882a593Smuzhiyun        self.tinfoil = tinfoil
21*4882a593Smuzhiyun        self.bblayers = (self.tinfoil.config_data.getVar('BBLAYERS') or "").split()
22*4882a593Smuzhiyun        layerconfs = self.tinfoil.config_data.varhistory.get_variable_items_files('BBFILE_COLLECTIONS')
23*4882a593Smuzhiyun        self.bbfile_collections = {layer: os.path.dirname(os.path.dirname(path)) for layer, path in layerconfs.items()}
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun    @staticmethod
26*4882a593Smuzhiyun    def add_command(subparsers, cmdname, function, parserecipes=True, *args, **kwargs):
27*4882a593Smuzhiyun        """Convert docstring for function to help."""
28*4882a593Smuzhiyun        docsplit = function.__doc__.splitlines()
29*4882a593Smuzhiyun        help = docsplit[0]
30*4882a593Smuzhiyun        if len(docsplit) > 1:
31*4882a593Smuzhiyun            desc = '\n'.join(docsplit[1:])
32*4882a593Smuzhiyun        else:
33*4882a593Smuzhiyun            desc = help
34*4882a593Smuzhiyun        subparser = subparsers.add_parser(cmdname, *args, help=help, description=desc, formatter_class=argparse.RawTextHelpFormatter, **kwargs)
35*4882a593Smuzhiyun        subparser.set_defaults(func=function, parserecipes=parserecipes)
36*4882a593Smuzhiyun        return subparser
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun    def get_layer_name(self, layerdir):
39*4882a593Smuzhiyun        return os.path.basename(layerdir.rstrip(os.sep))
40