From: Alexander Kanavin Date: Wed, 18 Jun 2025 09:21:02 +0000 (+0200) Subject: lib/bbconfigbuild/configfragments: add support for listing and enabling built-in... X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=47cb11db810bef36e791af84be1d680fd99301c7;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git lib/bbconfigbuild/configfragments: add support for listing and enabling built-in fragments Sample output: $ bitbake-config-build enable-fragment machine/qemuarm Fragment machine/qemuarm added to /srv/storage/alex/yocto/build-64-alt/conf/auto.conf. $ bitbake-config-build list-fragments Available built-in fragments: machine/... Sets MACHINE = ... distro/... Sets DISTRO = ... Enabled built-in fragments: machine/qemuarm Sets MACHINE = "qemuarm" ... (standard on-disk fragments output follows) Signed-off-by: Alexander Kanavin Signed-off-by: Richard Purdie --- diff --git a/meta/lib/bbconfigbuild/configfragments.py b/meta/lib/bbconfigbuild/configfragments.py index c1dddc3e4cb..61c33ac3161 100644 --- a/meta/lib/bbconfigbuild/configfragments.py +++ b/meta/lib/bbconfigbuild/configfragments.py @@ -62,7 +62,22 @@ class ConfigFragmentsPlugin(LayerPlugin): else: print('Name: {}\nPath: {}\nEnabled: {}\nSummary: {}\nDescription:\n{}\n'.format(f['name'], f['path'], 'yes' if is_enabled else 'no', f['summary'],''.join(f['description']))) + def print_builtin_fragments(builtin, enabled): + print('Available built-in fragments:') + builtin_dict = {i[0]:i[1] for i in [f.split(':') for f in builtin]} + for prefix,var in builtin_dict.items(): + print('{}/...\tSets {} = ...'.format(prefix, var)) + print('') + enabled_builtin_fragments = [f for f in enabled if self.builtin_fragment_exists(f)] + print('Enabled built-in fragments:') + for f in enabled_builtin_fragments: + prefix, value = f.split('/', 1) + print('{}\tSets {} = "{}"'.format(f, builtin_dict[prefix], value)) + print('') + all_enabled_fragments = (self.tinfoil.config_data.getVar('OE_FRAGMENTS') or "").split() + all_builtin_fragments = (self.tinfoil.config_data.getVar('OE_FRAGMENTS_BUILTIN') or "").split() + print_builtin_fragments(all_builtin_fragments, all_enabled_fragments) for layername, layerdata in self.discover_fragments().items(): layerdir = layerdata['layerdir'] @@ -89,6 +104,11 @@ class ConfigFragmentsPlugin(LayerPlugin): return True return False + def builtin_fragment_exists(self, fragmentname): + fragment_prefix = fragmentname.split("/",1)[0] + fragment_prefix_defs = set([f.split(':')[0] for f in self.tinfoil.config_data.getVar('OE_FRAGMENTS_BUILTIN').split()]) + return fragment_prefix in fragment_prefix_defs + def create_conf(self, confpath): if not os.path.exists(confpath): with open(confpath, 'w') as f: @@ -112,7 +132,7 @@ class ConfigFragmentsPlugin(LayerPlugin): return " ".join(enabled_fragments), None, 0, True for f in args.fragmentname: - if not self.fragment_exists(f): + if not self.fragment_exists(f) and not self.builtin_fragment_exists(f): raise Exception("Fragment {} does not exist; use 'list-fragments' to see the full list.".format(f)) self.create_conf(args.confpath)