summaryrefslogtreecommitdiff
path: root/deps/v8/build/linux/sysroot_scripts/build_and_upload.py
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/build/linux/sysroot_scripts/build_and_upload.py')
-rwxr-xr-xdeps/v8/build/linux/sysroot_scripts/build_and_upload.py101
1 files changed, 101 insertions, 0 deletions
diff --git a/deps/v8/build/linux/sysroot_scripts/build_and_upload.py b/deps/v8/build/linux/sysroot_scripts/build_and_upload.py
new file mode 100755
index 0000000000..6a90fdcf2f
--- /dev/null
+++ b/deps/v8/build/linux/sysroot_scripts/build_and_upload.py
@@ -0,0 +1,101 @@
+#!/usr/bin/env python
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Automates running BuildPackageLists, BuildSysroot, and
+UploadSysroot for each supported arch of each sysroot creator.
+"""
+
+import glob
+import hashlib
+import json
+import multiprocessing
+import os
+import re
+import string
+import subprocess
+import sys
+
+
+def run_script(args):
+ fnull = open(os.devnull, 'w')
+ subprocess.check_call(args, stdout=fnull, stderr=fnull)
+
+
+def sha1sumfile(filename):
+ sha1 = hashlib.sha1()
+ with open(filename, 'rb') as f:
+ while True:
+ data = f.read(65536)
+ if not data:
+ break
+ sha1.update(data)
+ return sha1.hexdigest()
+
+
+def get_proc_output(args):
+ return subprocess.check_output(args).strip()
+
+
+def build_and_upload(script_path, distro, release, arch, lock):
+ script_dir = os.path.dirname(os.path.realpath(__file__))
+
+ run_script([script_path, 'BuildSysroot' + arch])
+ run_script([script_path, 'UploadSysroot' + arch])
+
+ tarball = '%s_%s_%s_sysroot.tar.xz' % (distro, release, arch.lower())
+ tarxz_path = os.path.join(script_dir, "..", "..", "..", "out",
+ "sysroot-build", release, tarball)
+ sha1sum = sha1sumfile(tarxz_path)
+ sysroot_dir = '%s_%s_%s-sysroot' % (distro, release, arch.lower())
+
+ sysroot_metadata = {
+ 'Tarball': tarball,
+ 'Sha1Sum': sha1sum,
+ 'SysrootDir': sysroot_dir,
+ }
+ with lock:
+ with open(os.path.join(script_dir, 'sysroots.json'), 'rw+') as f:
+ sysroots = json.load(f)
+ sysroots["%s_%s" % (release, arch.lower())] = sysroot_metadata
+ f.seek(0)
+ f.truncate()
+ f.write(
+ json.dumps(
+ sysroots, sort_keys=True, indent=4, separators=(',', ': ')))
+ f.write('\n')
+
+
+def main():
+ script_dir = os.path.dirname(os.path.realpath(__file__))
+ subprocess.check_call(
+ [os.path.join(script_dir, 'update-archive-timestamp.sh')])
+ procs = []
+ lock = multiprocessing.Lock()
+ for filename in glob.glob(os.path.join(script_dir, 'sysroot-creator-*.sh')):
+ script_path = os.path.join(script_dir, filename)
+ distro = get_proc_output([script_path, 'PrintDistro'])
+ release = get_proc_output([script_path, 'PrintRelease'])
+ architectures = get_proc_output([script_path, 'PrintArchitectures'])
+ for arch in architectures.split('\n'):
+ proc = multiprocessing.Process(
+ target=build_and_upload,
+ args=(script_path, distro, release, arch, lock))
+ procs.append(("%s %s (%s)" % (distro, release, arch), proc))
+ proc.start()
+ for _, proc in procs:
+ proc.join()
+
+ print "SYSROOT CREATION SUMMARY"
+ failures = 0
+ for name, proc in procs:
+ if proc.exitcode:
+ failures += 1
+ status = "FAILURE" if proc.exitcode else "SUCCESS"
+ print "%s sysroot creation\t%s" % (name, status)
+ return failures
+
+
+if __name__ == '__main__':
+ sys.exit(main())