yocto-autobuilder-helper/scripts/shared-repo-unpack
Paul Eggleton d7d1a2b345 scripts: use argparse for command line parsing
[RP: Minor tweaks made to adpat to buildbot and option naming

Fixed shared-repo-unpack for publishing when no cache-dir supplied]

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-08-30 14:36:07 +01:00

1.9 KiB
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)

subprocess.check_call([scriptsdir + "/layer-config", args.abworkdir, args.target])