Add a script to build and copy the command buffer shared library. This script will be used by the bots to test skia on the command buffer.
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1699273002 NOTREECHECKS=true NOTRY=true BUG=skia:4957 Review URL: https://codereview.chromium.org/1699273002
This commit is contained in:
parent
272af6ecd7
commit
c43f2af60e
138
tools/build_command_buffer.py
Executable file
138
tools/build_command_buffer.py
Executable file
@ -0,0 +1,138 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# Copyright 2016 Google Inc.
|
||||
#
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
|
||||
"""
|
||||
Script to build the command buffer shared library and copy it to Skia tree
|
||||
"""
|
||||
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import shlex
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description=('Builds command_buffer_gles2 '
|
||||
'library and copies it'))
|
||||
parser.add_argument('-c', '--chrome-dir', required=True, help=
|
||||
'path to Chromium checkout (directory containing .gclient)')
|
||||
parser.add_argument('-o', '--output-dir', required=True,
|
||||
help='path to copy the command buffer shared library to')
|
||||
parser.add_argument('--make-output-dir', default=False, action='store_true',
|
||||
help='Makes the output directory if it does not already exist.')
|
||||
parser.add_argument('-f', '--fetch', action='store_true', default=False,
|
||||
help=('Create Chromium src directory and fetch chromium checkout (if '
|
||||
'directory does not already exist)'))
|
||||
parser.add_argument('--chrome-build-type', default='Release',
|
||||
help='Type of build for the command buffer (e.g. Debug or Release)')
|
||||
parser.add_argument('--extra-ninja-args', default='',
|
||||
help=('Extra arguments to pass to ninja when building the command '
|
||||
'buffer shared library'))
|
||||
parser.add_argument('--chrome-revision', default='origin/lkgr',
|
||||
help='Revision (hash, branch, tag) of Chromium to use.')
|
||||
parser.add_argument('--no-sync', action='store_true', default=False,
|
||||
help='Don\'t run git fetch or gclient sync in the Chromium tree')
|
||||
args = parser.parse_args()
|
||||
|
||||
args.chrome_dir = os.path.abspath(args.chrome_dir)
|
||||
args.output_dir = os.path.abspath(args.output_dir)
|
||||
|
||||
if os.path.isfile(args.chrome_dir):
|
||||
sys.exit(args.chrome_dir + ' exists but is a file.')
|
||||
|
||||
if os.path.isfile(args.output_dir):
|
||||
sys.exit(args.output_dir + ' exists but is a file.')
|
||||
|
||||
chrome_src_dir = os.path.join(args.chrome_dir, 'src')
|
||||
|
||||
if os.path.isfile(chrome_src_dir):
|
||||
sys.exit(chrome_src_dir + ' exists but is a file.')
|
||||
elif not os.path.isdir(chrome_src_dir):
|
||||
if args.fetch:
|
||||
if os.path.isdir(args.chrome_dir):
|
||||
# If chrome_dir is a dir but chrome_src_dir does not exist we will only
|
||||
# fetch into chrome_dir if it is empty.
|
||||
if os.listdir(args.chrome_dir):
|
||||
sys.exit(args.chrome_dir + ' is not a chromium checkout and is not '
|
||||
'empty.')
|
||||
else:
|
||||
os.makedirs(args.chrome_dir)
|
||||
if not os.path.isdir(args.chrome_dir):
|
||||
sys.exit('Could not create ' + args.chrome_dir)
|
||||
try:
|
||||
subprocess.check_call(['fetch', 'chromium'], cwd=args.chrome_dir)
|
||||
except subprocess.CalledProcessError as error:
|
||||
sys.exit('Error (ret code: %s) calling "%s" in %s' % error.returncode,
|
||||
error.cmd, args.chrome_dir)
|
||||
|
||||
if not os.path.isdir(chrome_src_dir):
|
||||
sys.exit(chrome_src_dir + ' is not a directory.')
|
||||
|
||||
if os.path.isfile(args.output_dir):
|
||||
sys.exit(args.output_dir + ' exists but is a file.')
|
||||
elif not os.path.isdir(args.output_dir):
|
||||
if args.make_output_dir:
|
||||
os.makedirs(args.output_dir)
|
||||
else:
|
||||
sys.exit(args.output_dir + ' does not exist (specify --make-output-dir '
|
||||
'to create).')
|
||||
|
||||
chrome_target_dir_rel = os.path.join('out', args.chrome_build_type)
|
||||
chrome_target_dir = os.path.join(chrome_src_dir, chrome_target_dir_rel)
|
||||
|
||||
if not args.no_sync:
|
||||
try:
|
||||
subprocess.check_call(['git', 'fetch'], cwd=chrome_src_dir)
|
||||
except subprocess.CalledProcessError as error:
|
||||
sys.exit('Error (ret code: %s) calling "%s" in %s' % error.returncode,
|
||||
error.cmd, chrome_src_dir)
|
||||
|
||||
try:
|
||||
subprocess.check_call(['git', 'checkout', args.chrome_revision],
|
||||
cwd=chrome_src_dir)
|
||||
except subprocess.CalledProcessError as error:
|
||||
sys.exit('Error (ret code: %s) calling "%s" in %s' % error.returncode,
|
||||
error.cmd, chrome_src_dir)
|
||||
|
||||
if not args.no_sync:
|
||||
try:
|
||||
subprocess.check_call(['gclient', 'sync'], cwd=chrome_src_dir)
|
||||
except subprocess.CalledProcessError as error:
|
||||
sys.exit('Error (ret code: %s) calling "%s" in %s' % error.returncode,
|
||||
error.cmd, chrome_src_dir)
|
||||
|
||||
try:
|
||||
subprocess.check_call(['ninja'] + shlex.split(args.extra_ninja_args) +
|
||||
['-C', chrome_target_dir_rel, 'command_buffer_gles2'],
|
||||
cwd=chrome_src_dir)
|
||||
except subprocess.CalledProcessError as error:
|
||||
sys.exit('Error (ret code: %s) calling "%s" in %s' % error.returncode,
|
||||
error.cmd, chrome_src_dir)
|
||||
|
||||
shared_lib_src = os.path.join(chrome_target_dir, 'lib',
|
||||
'libcommand_buffer_gles2.so')
|
||||
shared_lib_dst = os.path.join(args.output_dir, 'libcommand_buffer_gles2.so')
|
||||
|
||||
if not os.path.isfile(shared_lib_src):
|
||||
sys.exit('Command buffer shared library not at expected location: ' +
|
||||
shared_lib_src)
|
||||
|
||||
shutil.copy2(shared_lib_src, shared_lib_dst)
|
||||
|
||||
if not os.path.isfile(shared_lib_dst):
|
||||
sys.exit('Command buffer library not copied to ' + shared_lib_dst)
|
||||
|
||||
print('Command buffer library copied to ' + shared_lib_dst)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
Loading…
Reference in New Issue
Block a user