1*6777b538SAndroid Build Coastguard Worker# -*- bazel-starlark -*- 2*6777b538SAndroid Build Coastguard Worker# Copyright 2023 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"""Config module for checking siso -config flags.""" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Workerload("@builtin//struct.star", "module") 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Worker__KNOWN_CONFIG_OPTIONS = [ 10*6777b538SAndroid Build Coastguard Worker # Indicates that the build runs on a builder. 11*6777b538SAndroid Build Coastguard Worker "builder", 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker # Indicate that it runs on Cog (automatically set on Cog). 14*6777b538SAndroid Build Coastguard Worker "cog", 15*6777b538SAndroid Build Coastguard Worker 16*6777b538SAndroid Build Coastguard Worker # Force disable additional remote on cog. 17*6777b538SAndroid Build Coastguard Worker # TODO: b/333033551 - check performance with/without remote on cog. 18*6777b538SAndroid Build Coastguard Worker "disable-remote-on-cog", 19*6777b538SAndroid Build Coastguard Worker 20*6777b538SAndroid Build Coastguard Worker # TODO: b/308405411 - Enable this config for all builders. 21*6777b538SAndroid Build Coastguard Worker "remote-devtools-frontend-typescript", 22*6777b538SAndroid Build Coastguard Worker 23*6777b538SAndroid Build Coastguard Worker # TODO: b/316267242 - Enable remote links after confirming performance. 24*6777b538SAndroid Build Coastguard Worker "remote-library-link", 25*6777b538SAndroid Build Coastguard Worker "remote-exec-link", 26*6777b538SAndroid Build Coastguard Worker] 27*6777b538SAndroid Build Coastguard Worker 28*6777b538SAndroid Build Coastguard Workerdef __check(ctx): 29*6777b538SAndroid Build Coastguard Worker if "config" in ctx.flags: 30*6777b538SAndroid Build Coastguard Worker for cfg in ctx.flags["config"].split(","): 31*6777b538SAndroid Build Coastguard Worker if cfg not in __KNOWN_CONFIG_OPTIONS: 32*6777b538SAndroid Build Coastguard Worker print("unknown config: %s" % cfg) 33*6777b538SAndroid Build Coastguard Worker 34*6777b538SAndroid Build Coastguard Workerdef __get(ctx, key): 35*6777b538SAndroid Build Coastguard Worker disableRemoteOnCog = False 36*6777b538SAndroid Build Coastguard Worker if "config" in ctx.flags: 37*6777b538SAndroid Build Coastguard Worker for cfg in ctx.flags["config"].split(","): 38*6777b538SAndroid Build Coastguard Worker if cfg == key: 39*6777b538SAndroid Build Coastguard Worker return True 40*6777b538SAndroid Build Coastguard Worker if cfg == "disable-remote-on-cog": 41*6777b538SAndroid Build Coastguard Worker disableRemoteOnCog = True 42*6777b538SAndroid Build Coastguard Worker if ctx.fs.exists("../.citc"): 43*6777b538SAndroid Build Coastguard Worker if disableRemoteOnCog: 44*6777b538SAndroid Build Coastguard Worker return False 45*6777b538SAndroid Build Coastguard Worker 46*6777b538SAndroid Build Coastguard Worker # on cog, .citc directory exist in parent directory of exec root. 47*6777b538SAndroid Build Coastguard Worker # disable race strategy as "builder". 48*6777b538SAndroid Build Coastguard Worker # enable "remote-*" on cog 49*6777b538SAndroid Build Coastguard Worker # TODO: b/308405411 - enable "remote-devtools-frontend-typescript" 50*6777b538SAndroid Build Coastguard Worker if key in ("builder", "cog", "remote-library-link", "remote-exec-link"): 51*6777b538SAndroid Build Coastguard Worker return True 52*6777b538SAndroid Build Coastguard Worker return False 53*6777b538SAndroid Build Coastguard Worker 54*6777b538SAndroid Build Coastguard Workerconfig = module( 55*6777b538SAndroid Build Coastguard Worker "config", 56*6777b538SAndroid Build Coastguard Worker check = __check, 57*6777b538SAndroid Build Coastguard Worker get = __get, 58*6777b538SAndroid Build Coastguard Worker) 59