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]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to