From: Jermain Horsman <[email protected]> This allows for modifications of an existing configuration file using current revisions.
Signed-off-by: Jermain Horsman <[email protected]> --- meta/lib/bblayers/updatesetup.py | 78 ++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 meta/lib/bblayers/updatesetup.py diff --git a/meta/lib/bblayers/updatesetup.py b/meta/lib/bblayers/updatesetup.py new file mode 100644 index 0000000000..1f8760f2d3 --- /dev/null +++ b/meta/lib/bblayers/updatesetup.py @@ -0,0 +1,78 @@ +# +# Copyright OpenEmbedded Contributors +# +# SPDX-License-Identifier: GPL-2.0-only +# + +import json +import logging +import os +import sys + +from bblayers.common import LayerPlugin + +logger = logging.getLogger('bitbake-layers') + +sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) + +import oe.buildcfg + +def plugin_init(plugins): + return UpdateSetupPlugin() + +class UpdateSetupPlugin(LayerPlugin): + + def get_repo_path(self, args): + layers = (self.tinfoil.config_data.getVar("BBLAYERS") or "").split() + for layer in layers: + if os.path.basename(layer) == 'workspace': + continue + + repo_path = oe.buildcfg.get_metadata_git_toplevel(layer) + if os.path.basename(repo_path) != args.repo: + continue + + return repo_path + + def do_update_setup(self, args): + """ Modify an existing configuration file using current revisions. """ + with open(args.json, "r+") as json_file: + setup_layers_json = json.load(json_file) + if not 'sources' in setup_layers_json.keys(): + logger.error("File does not contain valid setup-layers config") + return + + sources = setup_layers_json['sources'] + if not args.repo in sources.keys(): + logger.error("Repository {} does not exist in setup-layers config".format(args.repo)) + return + + repo = self.get_repo_path(args) + + branch = oe.buildcfg.get_metadata_git_branch(repo) + + if args.branch: + rev = '' + describe = '' + else: + rev = oe.buildcfg.get_metadata_git_revision(repo) + describe = oe.buildcfg.get_metadata_git_describe(repo) + + layer_remote = setup_layers_json['sources'][args.repo]['git-remote'] + layer_remote['branch'] = branch + layer_remote['rev'] = rev + layer_remote['describe'] = describe + + json_file.seek(0) + json_file.truncate() + json.dump(setup_layers_json, json_file, sort_keys=True, indent=4) + + def register_commands(self, sp): + parser_update_layers = self.add_command(sp, 'update-layers-setup', self.do_update_setup, parserecipes=False) + parser_update_layers.add_argument('json', + help='File location of the setup-layers json config.') + parser_update_layers.add_argument('repo', + help='Name of the repository to be updated.') + parser_update_layers.add_argument('--branch', '-b', + help='store branch', + action='store_true') -- 2.42.0.windows.2
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#190293): https://lists.openembedded.org/g/openembedded-core/message/190293 Mute This Topic: https://lists.openembedded.org/mt/102444605/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
