1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
#!/usr/bin/env python3
#
# Move the repositories into the correct layout and generate bblayers.conf
#
import json
import os
import sys
import subprocess
import errno
import utils
parser = utils.ArgParser(description='Moves the repositories into the correct layout and generates bblayers.conf.')
parser.add_argument('abworkdir',
help="The autobuilder working directory")
parser.add_argument('target',
help="The target to filter the repos to")
args = parser.parse_args()
ourconfig = utils.loadconfig()
def bitbakecmd(targetdir, cmd):
ret = subprocess.call(". ./oe-init-build-env; %s" % cmd, shell=True, cwd=targetdir)
if ret:
utils.printheader("ERROR: Command %s failed with exit code %d, see errors above." % (cmd, ret))
needrepos = utils.getconfigvar("NEEDREPOS", ourconfig, args.target, None)
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"]:
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 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"]:
continue
bitbakecmd(args.abworkdir, "bitbake-layers add-layer %s" % (args.abworkdir + "/" + repo))
|