yocto-autobuilder-helper/scripts/shared-repo-unpack
Thomas Goodwin 2aeb77f3f2 shared-repo-unpack: suppressing exception, returning exit code
The preceeding errors that would be shown should be enough to
identify the problem since it would have been a problem
running bitbake-layers add-layer, indicating a misconfiguration
of config.json.

Signed-off-by: Thomas Goodwin <btgoodwin@geontech.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-08-02 17:34:48 +01:00

65 lines
2.0 KiB
Python
Executable File

#!/usr/bin/env python3
#
# Unpack a shared directory of repos to the autobuilder working directory
#
import json
import os
import sys
import subprocess
import errno
import time
import random
import utils
parser = utils.ArgParser(description='Unpacks a shared directory of repos to the autobuilder working directory.')
parser.add_argument('repojson',
help="The json file containing the repositories to use")
parser.add_argument('abworkdir',
help="The autobuilder working directory")
parser.add_argument('target',
help="The target we want to unpack repos for")
parser.add_argument('-c', '--cache-dir',
action='store',
help="The shared cache directory where the repos may be transferred from")
parser.add_argument('-p', '--publish-dir',
action='store',
help="Where to publish artefacts to (optional)")
args = parser.parse_args()
scriptsdir = os.path.dirname(os.path.realpath(__file__))
ourconfig = utils.loadconfig()
stashdir = utils.getconfig("REPO_STASH_DIR", ourconfig)
needrepos = utils.getconfigvar("NEEDREPOS", ourconfig, args.target, None)
with open(args.repojson) as f:
repos = json.load(f)
targetsubdir = args.abworkdir + "/repos"
for repo in sorted(repos.keys()):
if repo not in needrepos:
continue
targetrepodir = "%s/%s" % (targetsubdir, repo)
if args.cache_dir:
utils.printheader("Copying in repo %s" % repo)
utils.mkdir(targetrepodir)
subprocess.check_call(["rsync", "-a", "%s/%s" % (args.cache_dir, repo), targetsubdir])
else:
utils.printheader("Fetching repo %s" % repo)
utils.fetchgitrepo(targetsubdir, repo, repos[repo], stashdir)
if args.publish_dir:
utils.publishrepo(targetsubdir, repo, args.publish_dir)
try:
subprocess.check_call([scriptsdir + "/layer-config", args.abworkdir, args.target])
except subprocess.CalledProcessError as e:
sys.exit(e.returncode)