xref: /aosp_15_r20/external/angle/build/config/siso/simple.star (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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