[PATCH][autobuilder-helper][warrior 05/41] layer-config, shared-repo-unpack: Sub-repos in NEEDREPOS


Richard Purdie
 

From: Thomas Goodwin <btgoodwin@...>

The previous fixes requires the user to set "no-layer-add"
for a repo and then use ADDLAYER to insert the sub-repos
(e.g., meta-openmbedded/meta-oe) as a two-part process.
This means that you would also have to specify that flag
if a repo that is a layer with dependencies is in the
list so that it can be inserted in the correct order later
via ADDLAYER to avoid parsing problems. This fix allows
for specifying a NEEDREPOS with the subdirectory of the
target layer (e.g., meta-openembedded/meta-oe) so that
there is no need for the "no-layer-add" followed by
ADDLAYER combination. The entire meta-openembedded
repo would be moved into place, and the sublayer added
to bblayers.conf.

Signed-off-by: Thomas Goodwin <btgoodwin@...>
Signed-off-by: Richard Purdie <richard.purdie@...>
---
scripts/layer-config | 24 +++++++++++++++---------
scripts/shared-repo-unpack | 4 ++--
2 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/scripts/layer-config b/scripts/layer-config
index 286451a..bb1b681 100755
--- a/scripts/layer-config
+++ b/scripts/layer-config
@@ -33,21 +33,27 @@ callinit = False
repos = utils.getconfig("repo-defaults", ourconfig)

for repo in needrepos:
- checkdir = repo
- if repo in repos:
- if "call-init" in repos[repo] and repos[repo]["call-init"]:
+ repo_basename = repo.split('/')[0]
+ checkdir = repo_basename
+ if repo_basename in repos:
+ if "call-init" in repos[repo_basename] and repos[repo_basename]["call-init"]:
callinit = True
- if "checkout-dirname" in repos[repo]:
- checkdir = repos[repo]["checkout-dirname"]
- utils.mkdir(args.abworkdir + "/" + checkdir)
- for f in os.listdir(args.abworkdir + "/repos/" + repo):
- subprocess.check_call(['mv', args.abworkdir + "/repos/" + repo + "/" + f, args.abworkdir + "/" + checkdir + "/"])
+ if "checkout-dirname" in repos[repo_basename]:
+ checkdir = repos[repo_basename]["checkout-dirname"]
+
+ source = args.abworkdir + "/repos/" + repo_basename
+ destination = args.abworkdir + "/" + checkdir
+ if not os.path.isdir(destination) or callinit:
+ utils.mkdir(destination)
+ for f in os.listdir(source):
+ subprocess.check_call(['mv', source + "/" + f, destination + "/"])

if callinit:
subprocess.check_call(". ./oe-init-build-env", shell=True, cwd=args.abworkdir)

for repo in needrepos:
- if repo in repos and "no-layer-add" in repos[repo] and repos[repo]["no-layer-add"]:
+ repo_basename = repo.split('/')[0]
+ if repo_basename in repos and "no-layer-add" in repos[repo_basename] and repos[repo_basename]["no-layer-add"]:
continue
try:
bitbakecmd(args.abworkdir, "bitbake-layers add-layer %s" % (args.abworkdir + "/" + repo))
diff --git a/scripts/shared-repo-unpack b/scripts/shared-repo-unpack
index a281897..92f0ccf 100755
--- a/scripts/shared-repo-unpack
+++ b/scripts/shared-repo-unpack
@@ -46,9 +46,9 @@ with open(args.repojson) as f:
repos = json.load(f)

targetsubdir = args.abworkdir + "/repos"
-
+needrepos_baseddirs = [r.split('/')[0] for r in needrepos]
for repo in sorted(repos.keys()):
- if repo not in needrepos:
+ if repo not in needrepos_baseddirs:
continue
targetrepodir = "%s/%s" % (targetsubdir, repo)
if args.cache_dir:
--
2.25.1

Join yocto@lists.yoctoproject.org to automatically receive all group messages.