| # -*- bazel-starlark -*- |
| # Copyright 2023 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """Siso configuration for simple steps.""" |
| |
| load("@builtin//struct.star", "module") |
| |
| def __filegroups(ctx): |
| return {} |
| |
| def __copy(ctx, cmd): |
| input = cmd.inputs[0] |
| out = cmd.outputs[0] |
| ctx.actions.copy(input, out, recursive = ctx.fs.is_dir(input)) |
| ctx.actions.exit(exit_status = 0) |
| |
| # to reduce unnecessary local process and |
| # unnecessary digest calculation of output file. |
| def __copy_bundle_data(ctx, cmd): |
| input = cmd.inputs[0] |
| out = cmd.outputs[0] |
| ctx.actions.copy(input, out, recursive = ctx.fs.is_dir(input)) |
| ctx.actions.exit(exit_status = 0) |
| |
| def __stamp(ctx, cmd): |
| if len(cmd.outputs) > 1: |
| # run touch command as is? |
| # iOS build stamp after swiftc.py would try to touch |
| # dir and non-exist-in-hashfs file? |
| # TODO(b/300385880): fix this workaround. |
| return |
| |
| # don't truncate if file exists. |
| out = cmd.outputs[0] |
| if ctx.fs.exists(out): |
| ctx.actions.write(out, ctx.fs.read(out)) |
| else: |
| ctx.actions.write(out) |
| ctx.actions.exit(exit_status = 0) |
| |
| __handlers = { |
| "copy": __copy, |
| "copy_bundle_data": __copy_bundle_data, |
| "stamp": __stamp, |
| } |
| |
| def __step_config(ctx, step_config): |
| step_config["rules"].extend([ |
| { |
| "name": "simple/copy", |
| "action": "(.*_)?copy", |
| "handler": "copy", |
| }, |
| { |
| "name": "simple/copy_bundle_data", |
| "action": "(.*)?copy_bundle_data", |
| "handler": "copy_bundle_data", |
| }, |
| { |
| "name": "simple/stamp", |
| "action": "(.*_)?stamp", |
| "handler": "stamp", |
| "replace": True, |
| }, |
| ]) |
| return step_config |
| |
| simple = module( |
| "simple", |
| step_config = __step_config, |
| filegroups = __filegroups, |
| handlers = __handlers, |
| ) |