Skip to content

Commit

Permalink
Documentation for bazelbuild#13110
Browse files Browse the repository at this point in the history
Closes bazelbuild#13167.

PiperOrigin-RevId: 361885312
  • Loading branch information
quval authored and philwo committed Mar 15, 2021
1 parent 1aa544b commit 5f94563
Showing 1 changed file with 40 additions and 0 deletions.
40 changes: 40 additions & 0 deletions site/docs/exec-groups.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,13 @@ All actions with `exec_group = "link"` would see the exec properties
dictionary as `{"mem": "16g"}`. As you see here, execution-group-level
settings override target-level settings.

### Execution groups for native rules

The following execution groups are available for actions defined by native rules:

* `test`: Test runner actions.
* `cpp_link`: C++ linking actions.

### Creating exec groups to set exec properties

Sometimes you want to use an exec group to give specific actions different exec
Expand Down Expand Up @@ -162,3 +169,36 @@ my_rule = rule(
#
```

### Execution groups and platform execution properties

It is possible to define `exec_properties` for arbitrary execution groups on
platform targets (unlike `exec_properties` set directly on a target, where
properties for unknown execution groups are rejected). Targets then inherit the
execution platform's `exec_properties` that affect the default execution group
and any other relevant execution groups.

For example, suppose running a C++ test requires some resource to be available,
but it isn't required for compiling and linking; this can be modelled as
follows:

```python
constraint_setting(name = "resource")
constraint_value(name = "has_resource", constraint_setting = ":resource")

platform(
name = "platform_with_resource",
constraint_values = [":has_resource"],
exec_properties = {
"test.resource": "...",
},
)

cc_test(
name = "my_test",
srcs = ["my_test.cc"],
exec_compatible_with = [":has_resource"],
)
```

`exec_properties` defined directly on targets take precedence over those that
are inherited from the execution platform.

0 comments on commit 5f94563

Please sign in to comment.