| // Copyright 2022 The Bazel Authors. All rights reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| syntax = "proto2"; |
| |
| package blaze.strategy_policy; |
| |
| option java_multiple_files = true; |
| // option java_api_version = 2; |
| option java_package = "com.google.devtools.build.lib.runtime.proto"; |
| |
| // Provides control over what strategies (local, remote, etc) may be used. |
| // |
| // An empty policies (e.g. unset) implies no enforcement, anything is allowed. |
| // |
| // Policies are enforced against both user-provided values (flags) and |
| // application-internal defaults. The latter is useful for guarding against |
| // unexpectedly hard-coded defaults. |
| // |
| // Sample usage to allow everything to execute remotely, while only allowing |
| // genrules to execute locally: |
| // |
| // strategy_policy { |
| // mnemonic_policy { |
| // default_allowlist: ["remote"] |
| // strategy_allowlist: [ |
| // { mnemonic: "Genrule" strategy: ["local"] } |
| // ] |
| // } |
| // } |
| message StrategyPolicy { |
| // Controls per-mnemonic policies for regular spawn/action execution. Relevant |
| // command-line flags this controls include --strategy and --genrule_strategy. |
| optional MnemonicPolicy mnemonic_policy = 1; |
| |
| // Controls per-mnemonic policies for the remote execution leg of dynamic |
| // execution. Relevant flag is --dynamic_remote_strategy. |
| optional MnemonicPolicy dynamic_remote_policy = 2; |
| |
| // Controls per-mnemonic policies for the local execution leg of dynamic |
| // execution. Relevant flag is --dynamic_local_strategy. |
| optional MnemonicPolicy dynamic_local_policy = 3; |
| } |
| |
| message MnemonicPolicy { |
| // Default allowed strategies for mnemonics not present in `strategy` list. |
| repeated string default_allowlist = 1; |
| |
| repeated StrategiesForMnemonic strategy_allowlist = 2; |
| } |
| |
| // Per-mnemonic allowlist settings. |
| message StrategiesForMnemonic { |
| optional string mnemonic = 1; |
| repeated string strategy = 2; |
| } |