aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/prepare-shared-repos
blob: 1b756520b701f6f8dcbd8725198d80db5f15d187 (plain)
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
#!/usr/bin/env python3
#
# Copyright Linux Foundation, Richard Purdie
#
# SPDX-License-Identifier: GPL-2.0-only
#
# Iterate over a set of repositories in a json file and setup a shared directory containing them
#

import json
import os
import sys
import subprocess
import errno
import tempfile

import utils


parser = utils.ArgParser(description='Iterates over a set of repositories in a json file and sets up a shared directory containing them.')

parser.add_argument('repojson',
                    help="The json file containing the repositories to use")
parser.add_argument('sharedsrcdir',
                    help="The shared directory where the repos are to be transferred")
parser.add_argument('-p', '--publish-dir',
                    action='store',
                    help="Where to publish artefacts to (optional)")

args = parser.parse_args()

ourconfig = utils.loadconfig()

with open(args.repojson) as f:
    repos = json.load(f)

stashdir = utils.getconfig("REPO_STASH_DIR", ourconfig)

with tempfile.TemporaryDirectory(prefix="shared-repo-temp-", dir="/home/pokybuild/tmp") as tempdir:
    for repo in sorted(repos.keys()):
        # gplv2 is no longer built/tested in master
        if repo == "meta-gplv2":
            continue
        utils.printheader("Initially fetching repo %s" % repo)
        # shallow clones disabled as it doesn't work correctly with revision numbers in the result repo leading to release build failures.
        if True or args.publish_dir:
            utils.fetchgitrepo(tempdir, repo, repos[repo], stashdir)
        else:
            utils.fetchgitrepo(tempdir, repo, repos[repo], stashdir, depth=1)
        if args.publish_dir:
            utils.publishrepo(tempdir, repo, args.publish_dir)

    utils.printheader("Creating shared src tarball")
    subprocess.check_call("tar -I zstd -cf " + args.sharedsrcdir.rstrip("/") + ".tar.zst ./*", shell=True, cwd=tempdir)