1*8975f5c5SAndroid Build Coastguard Worker# -*- bazel-starlark -*- 2*8975f5c5SAndroid Build Coastguard Worker# Copyright 2023 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"""Siso configuration for simple steps.""" 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Workerload("@builtin//struct.star", "module") 8*8975f5c5SAndroid Build Coastguard Worker 9*8975f5c5SAndroid Build Coastguard Workerdef __filegroups(ctx): 10*8975f5c5SAndroid Build Coastguard Worker return {} 11*8975f5c5SAndroid Build Coastguard Worker 12*8975f5c5SAndroid Build Coastguard Workerdef __copy(ctx, cmd): 13*8975f5c5SAndroid Build Coastguard Worker input = cmd.inputs[0] 14*8975f5c5SAndroid Build Coastguard Worker out = cmd.outputs[0] 15*8975f5c5SAndroid Build Coastguard Worker ctx.actions.copy(input, out, recursive = ctx.fs.is_dir(input)) 16*8975f5c5SAndroid Build Coastguard Worker ctx.actions.exit(exit_status = 0) 17*8975f5c5SAndroid Build Coastguard Worker 18*8975f5c5SAndroid Build Coastguard Worker# to reduce unnecessary local process and 19*8975f5c5SAndroid Build Coastguard Worker# unnecessary digest calculation of output file. 20*8975f5c5SAndroid Build Coastguard Workerdef __copy_bundle_data(ctx, cmd): 21*8975f5c5SAndroid Build Coastguard Worker input = cmd.inputs[0] 22*8975f5c5SAndroid Build Coastguard Worker out = cmd.outputs[0] 23*8975f5c5SAndroid Build Coastguard Worker ctx.actions.copy(input, out, recursive = ctx.fs.is_dir(input)) 24*8975f5c5SAndroid Build Coastguard Worker ctx.actions.exit(exit_status = 0) 25*8975f5c5SAndroid Build Coastguard Worker 26*8975f5c5SAndroid Build Coastguard Workerdef __stamp(ctx, cmd): 27*8975f5c5SAndroid Build Coastguard Worker if len(cmd.outputs) > 1: 28*8975f5c5SAndroid Build Coastguard Worker # run touch command as is? 29*8975f5c5SAndroid Build Coastguard Worker # iOS build stamp after swiftc.py would try to touch 30*8975f5c5SAndroid Build Coastguard Worker # dir and non-exist-in-hashfs file? 31*8975f5c5SAndroid Build Coastguard Worker # TODO(b/300385880): fix this workaround. 32*8975f5c5SAndroid Build Coastguard Worker return 33*8975f5c5SAndroid Build Coastguard Worker 34*8975f5c5SAndroid Build Coastguard Worker # don't truncate if file exists. 35*8975f5c5SAndroid Build Coastguard Worker out = cmd.outputs[0] 36*8975f5c5SAndroid Build Coastguard Worker if ctx.fs.exists(out): 37*8975f5c5SAndroid Build Coastguard Worker ctx.actions.write(out, ctx.fs.read(out)) 38*8975f5c5SAndroid Build Coastguard Worker else: 39*8975f5c5SAndroid Build Coastguard Worker ctx.actions.write(out) 40*8975f5c5SAndroid Build Coastguard Worker ctx.actions.exit(exit_status = 0) 41*8975f5c5SAndroid Build Coastguard Worker 42*8975f5c5SAndroid Build Coastguard Worker__handlers = { 43*8975f5c5SAndroid Build Coastguard Worker "copy": __copy, 44*8975f5c5SAndroid Build Coastguard Worker "copy_bundle_data": __copy_bundle_data, 45*8975f5c5SAndroid Build Coastguard Worker "stamp": __stamp, 46*8975f5c5SAndroid Build Coastguard Worker} 47*8975f5c5SAndroid Build Coastguard Worker 48*8975f5c5SAndroid Build Coastguard Workerdef __step_config(ctx, step_config): 49*8975f5c5SAndroid Build Coastguard Worker step_config["rules"].extend([ 50*8975f5c5SAndroid Build Coastguard Worker { 51*8975f5c5SAndroid Build Coastguard Worker "name": "simple/copy", 52*8975f5c5SAndroid Build Coastguard Worker "action": "(.*_)?copy", 53*8975f5c5SAndroid Build Coastguard Worker "handler": "copy", 54*8975f5c5SAndroid Build Coastguard Worker }, 55*8975f5c5SAndroid Build Coastguard Worker { 56*8975f5c5SAndroid Build Coastguard Worker "name": "simple/copy_bundle_data", 57*8975f5c5SAndroid Build Coastguard Worker "action": "(.*)?copy_bundle_data", 58*8975f5c5SAndroid Build Coastguard Worker "handler": "copy_bundle_data", 59*8975f5c5SAndroid Build Coastguard Worker }, 60*8975f5c5SAndroid Build Coastguard Worker { 61*8975f5c5SAndroid Build Coastguard Worker "name": "simple/stamp", 62*8975f5c5SAndroid Build Coastguard Worker "action": "(.*_)?stamp", 63*8975f5c5SAndroid Build Coastguard Worker "handler": "stamp", 64*8975f5c5SAndroid Build Coastguard Worker "replace": True, 65*8975f5c5SAndroid Build Coastguard Worker }, 66*8975f5c5SAndroid Build Coastguard Worker ]) 67*8975f5c5SAndroid Build Coastguard Worker return step_config 68*8975f5c5SAndroid Build Coastguard Worker 69*8975f5c5SAndroid Build Coastguard Workersimple = module( 70*8975f5c5SAndroid Build Coastguard Worker "simple", 71*8975f5c5SAndroid Build Coastguard Worker step_config = __step_config, 72*8975f5c5SAndroid Build Coastguard Worker filegroups = __filegroups, 73*8975f5c5SAndroid Build Coastguard Worker handlers = __handlers, 74*8975f5c5SAndroid Build Coastguard Worker) 75