1*8975f5c5SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*8975f5c5SAndroid Build Coastguard Worker# Copyright 2024 The Chromium Authors 3*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker"""Script to decide use_siso default value. 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard WorkerIt is called by siso.gni via exec_script, 8*8975f5c5SAndroid Build Coastguard Workeror used in depot_tools' autoninja or siso wrapper. 9*8975f5c5SAndroid Build Coastguard Worker""" 10*8975f5c5SAndroid Build Coastguard Worker# TODO(crbug.com/379584977): move this to depot_tools once `use_siso` 11*8975f5c5SAndroid Build Coastguard Worker# is not used for build graph. 12*8975f5c5SAndroid Build Coastguard Worker 13*8975f5c5SAndroid Build Coastguard Workerimport os 14*8975f5c5SAndroid Build Coastguard Workerimport shutil 15*8975f5c5SAndroid Build Coastguard Workerimport sys 16*8975f5c5SAndroid Build Coastguard Worker 17*8975f5c5SAndroid Build Coastguard Worker 18*8975f5c5SAndroid Build Coastguard Workerdef _is_google_corp_machine(): 19*8975f5c5SAndroid Build Coastguard Worker """This assumes that corp machine has gcert binary in known location.""" 20*8975f5c5SAndroid Build Coastguard Worker return shutil.which("gcert") is not None 21*8975f5c5SAndroid Build Coastguard Worker 22*8975f5c5SAndroid Build Coastguard Worker 23*8975f5c5SAndroid Build Coastguard Workerdef use_siso_default(output_dir): 24*8975f5c5SAndroid Build Coastguard Worker """Returns use_siso default value.""" 25*8975f5c5SAndroid Build Coastguard Worker # This output directory is already using Siso. 26*8975f5c5SAndroid Build Coastguard Worker if os.path.exists(os.path.join(output_dir, ".siso_deps")): 27*8975f5c5SAndroid Build Coastguard Worker return True 28*8975f5c5SAndroid Build Coastguard Worker 29*8975f5c5SAndroid Build Coastguard Worker # This output directory is already using Ninja. 30*8975f5c5SAndroid Build Coastguard Worker if os.path.exists(os.path.join(output_dir, ".ninja_deps")): 31*8975f5c5SAndroid Build Coastguard Worker return False 32*8975f5c5SAndroid Build Coastguard Worker 33*8975f5c5SAndroid Build Coastguard Worker # If no .sisoenv, use Ninja. 34*8975f5c5SAndroid Build Coastguard Worker if not os.path.exists( 35*8975f5c5SAndroid Build Coastguard Worker os.path.join(os.path.dirname(__file__), "../config/siso/.sisoenv")): 36*8975f5c5SAndroid Build Coastguard Worker return False 37*8975f5c5SAndroid Build Coastguard Worker 38*8975f5c5SAndroid Build Coastguard Worker # Use Siso by default for Googlers working on corp machine. 39*8975f5c5SAndroid Build Coastguard Worker if _is_google_corp_machine(): 40*8975f5c5SAndroid Build Coastguard Worker return True 41*8975f5c5SAndroid Build Coastguard Worker 42*8975f5c5SAndroid Build Coastguard Worker # Otherwise, use Ninja, until we are ready to roll it out 43*8975f5c5SAndroid Build Coastguard Worker # on non-corp machines, too. 44*8975f5c5SAndroid Build Coastguard Worker # TODO(378078715): enable True by default. 45*8975f5c5SAndroid Build Coastguard Worker return False 46*8975f5c5SAndroid Build Coastguard Worker 47*8975f5c5SAndroid Build Coastguard Worker 48*8975f5c5SAndroid Build Coastguard Workerif __name__ == "__main__": 49*8975f5c5SAndroid Build Coastguard Worker # exec_script runs in output directory. 50*8975f5c5SAndroid Build Coastguard Worker print(str(use_siso_default(".")).lower()) 51