Current script implementation uses revisions recorded in JSON file to
replicate previously recorded setup. While this is useful for complete
layer setup reproducibility, this does not allow the setup "upgrade" where
this script can be used to use remote branch information and latest HEAD,
have the setup restored, and then saved using updated revisions.

Add new '--skip-revs' parameter which can be used to obtain the updated
layer setup.

Following set of operations could be executed to achieve this:
1. Restore initial layer setup using remote branch HEAD instead of recorded
   revisions by specifying --skip-revs.
2. After layer setup is created, JSON file containing updated revisions is
   retrieved via `bitbake-layers create-layers-setup`
3. Updated JSON file can be checked in to bootstrap repository and used
   later without '--skip-revs' to replicated updated setup.

Signed-off-by: Andrey Zhizhikin <[email protected]>
---
 scripts/oe-setup-layers | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/scripts/oe-setup-layers b/scripts/oe-setup-layers
index 6d49688a32..a4941450d3 100755
--- a/scripts/oe-setup-layers
+++ b/scripts/oe-setup-layers
@@ -69,6 +69,13 @@ def _do_checkout(args, json):
         remotes = r_remote['remotes']
 
         print('\nSetting up source {}, revision {}, branch {}'.format(r_name, 
desc, branch))
+        if args['skip_revs']:
+            if branch and (branch != 'HEAD'):
+                print('\nSkip revision option used, remote {} branch {} HEAD 
will be used instead of {}'.format(r_name, branch, rev))
+                rev = branch
+            else:
+                print('\nBranch info is missing in json, --skip-revs option is 
not used')
+
         if not _is_repo_git_repo(repodir):
             cmd = 'git init -q {}'.format(repodir)
             print("Running '{}'".format(cmd))
@@ -108,6 +115,7 @@ except subprocess.CalledProcessError as e:
 
 parser.add_argument('--destdir', default=defaultdest, help='Where to check out 
the layers (default is {defaultdest}).'.format(defaultdest=defaultdest))
 parser.add_argument('--jsondata', default=__file__+".json", help='File 
containing the layer data in json format (default is 
{defaultjson}).'.format(defaultjson=__file__+".json"))
+parser.add_argument('--skip-revs', action='store_true', help='Skip revisions 
recorded in json manifest, and use latest revision on branch to restore setup')
 
 args = parser.parse_args()
 
-- 
2.34.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#191879): 
https://lists.openembedded.org/g/openembedded-core/message/191879
Mute This Topic: https://lists.openembedded.org/mt/103009912/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to