1*6777b538SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*6777b538SAndroid Build Coastguard Worker# Copyright 2015 The Chromium Authors 3*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 4*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file. 5*6777b538SAndroid Build Coastguard Worker 6*6777b538SAndroid Build Coastguard Worker"""Launches //tools/checkbins/checkbins.py for trybots. 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard WorkerTo run locally on `out/release`, create /tmp/config.json 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker{ 11*6777b538SAndroid Build Coastguard Worker "checkout": "." 12*6777b538SAndroid Build Coastguard Worker} 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Workerpython3 testing/scripts/checkbins.py \ 15*6777b538SAndroid Build Coastguard Worker --paths /tmp/config.json \ 16*6777b538SAndroid Build Coastguard Worker --build-config-fs release run \ 17*6777b538SAndroid Build Coastguard Worker --output - 18*6777b538SAndroid Build Coastguard Worker""" 19*6777b538SAndroid Build Coastguard Worker 20*6777b538SAndroid Build Coastguard Workerimport json 21*6777b538SAndroid Build Coastguard Workerimport os 22*6777b538SAndroid Build Coastguard Workerimport sys 23*6777b538SAndroid Build Coastguard Worker 24*6777b538SAndroid Build Coastguard Worker# Add src/testing/ into sys.path for importing common without pylint errors. 25*6777b538SAndroid Build Coastguard Workersys.path.append( 26*6777b538SAndroid Build Coastguard Worker os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))) 27*6777b538SAndroid Build Coastguard Workerfrom scripts import common 28*6777b538SAndroid Build Coastguard Worker 29*6777b538SAndroid Build Coastguard WorkerWIN_PY3_TARGETS = ['python3.exe', 'python3.bat'] 30*6777b538SAndroid Build Coastguard Worker 31*6777b538SAndroid Build Coastguard Worker 32*6777b538SAndroid Build Coastguard Workerdef with_python3(): 33*6777b538SAndroid Build Coastguard Worker if sys.version_info.major >= 3: 34*6777b538SAndroid Build Coastguard Worker return sys.executable 35*6777b538SAndroid Build Coastguard Worker # `env` should have worked on other platforms. 36*6777b538SAndroid Build Coastguard Worker if sys.platform == 'win32': 37*6777b538SAndroid Build Coastguard Worker # non-exhaustive, we expect depot_tools somewhere. 38*6777b538SAndroid Build Coastguard Worker for d in os.environ['PATH'].split(';'): 39*6777b538SAndroid Build Coastguard Worker for maybe_py3 in WIN_PY3_TARGETS: 40*6777b538SAndroid Build Coastguard Worker if os.path.exists(os.path.join(d, maybe_py3)): 41*6777b538SAndroid Build Coastguard Worker return os.path.join(d, maybe_py3) 42*6777b538SAndroid Build Coastguard Worker raise Exception("Cannot find python3 to launch checkbins.py") 43*6777b538SAndroid Build Coastguard Worker 44*6777b538SAndroid Build Coastguard Workerdef main_run(args): 45*6777b538SAndroid Build Coastguard Worker print(sys.executable) 46*6777b538SAndroid Build Coastguard Worker with common.temporary_file() as tempfile_path: 47*6777b538SAndroid Build Coastguard Worker rc = common.run_command([ 48*6777b538SAndroid Build Coastguard Worker with_python3(), 49*6777b538SAndroid Build Coastguard Worker os.path.join(common.SRC_DIR, 'tools', 'checkbins', 'checkbins.py'), 50*6777b538SAndroid Build Coastguard Worker '--verbose', 51*6777b538SAndroid Build Coastguard Worker '--json', tempfile_path, 52*6777b538SAndroid Build Coastguard Worker os.path.join(args.paths['checkout'], 'out', args.build_config_fs), 53*6777b538SAndroid Build Coastguard Worker ]) 54*6777b538SAndroid Build Coastguard Worker 55*6777b538SAndroid Build Coastguard Worker with open(tempfile_path) as f: 56*6777b538SAndroid Build Coastguard Worker checkbins_results = json.load(f) 57*6777b538SAndroid Build Coastguard Worker 58*6777b538SAndroid Build Coastguard Worker common.record_local_script_results( 59*6777b538SAndroid Build Coastguard Worker 'checkbins', args.output, checkbins_results, True) 60*6777b538SAndroid Build Coastguard Worker 61*6777b538SAndroid Build Coastguard Worker return rc 62*6777b538SAndroid Build Coastguard Worker 63*6777b538SAndroid Build Coastguard Worker 64*6777b538SAndroid Build Coastguard Workerdef main_compile_targets(args): 65*6777b538SAndroid Build Coastguard Worker json.dump([], args.output) 66*6777b538SAndroid Build Coastguard Worker 67*6777b538SAndroid Build Coastguard Worker 68*6777b538SAndroid Build Coastguard Workerif __name__ == '__main__': 69*6777b538SAndroid Build Coastguard Worker funcs = { 70*6777b538SAndroid Build Coastguard Worker 'run': main_run, 71*6777b538SAndroid Build Coastguard Worker 'compile_targets': main_compile_targets, 72*6777b538SAndroid Build Coastguard Worker } 73*6777b538SAndroid Build Coastguard Worker sys.exit(common.run_script(sys.argv[1:], funcs)) 74