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