Colin Cross | e16ce36 | 2020-11-12 08:29:30 -0800 | [diff] [blame] | 1 | // Copyright 2020 Google Inc. All Rights Reserved. |
| 2 | // |
| 3 | // Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 | // you may not use this file except in compliance with the License. |
| 5 | // You may obtain a copy of the License at |
| 6 | // |
| 7 | // http://www.apache.org/licenses/LICENSE-2.0 |
| 8 | // |
| 9 | // Unless required by applicable law or agreed to in writing, software |
| 10 | // distributed under the License is distributed on an "AS IS" BASIS, |
| 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 | // See the License for the specific language governing permissions and |
| 13 | // limitations under the License. |
| 14 | |
| 15 | syntax = "proto2"; |
| 16 | |
| 17 | package sbox; |
Dan Willemsen | 4591b64 | 2021-05-24 14:24:12 -0700 | [diff] [blame] | 18 | option go_package = "android/soong/cmd/sbox/sbox_proto"; |
Colin Cross | e16ce36 | 2020-11-12 08:29:30 -0800 | [diff] [blame] | 19 | |
| 20 | // A set of commands to run in a sandbox. |
| 21 | message Manifest { |
| 22 | // A list of commands to run in the sandbox. |
| 23 | repeated Command commands = 1; |
| 24 | |
| 25 | // If set, GCC-style dependency files from any command that references __SBOX_DEPFILE__ will be |
| 26 | // merged into the given output file relative to the $PWD when sbox was started. |
| 27 | optional string output_depfile = 2; |
| 28 | } |
| 29 | |
| 30 | // SandboxManifest describes a command to run in the sandbox. |
| 31 | message Command { |
| 32 | // A list of copy rules to run before the sandboxed command. The from field is relative to the |
| 33 | // $PWD when sbox was run, the to field is relative to the top of the temporary sandbox directory. |
| 34 | repeated Copy copy_before = 1; |
| 35 | |
| 36 | // If true, change the working directory to the top of the temporary sandbox directory before |
| 37 | // running the command. If false, leave the working directory where it was when sbox was started. |
| 38 | optional bool chdir = 2; |
| 39 | |
| 40 | // The command to run. |
| 41 | required string command = 3; |
| 42 | |
| 43 | // A list of copy rules to run after the sandboxed command. The from field is relative to the |
| 44 | // top of the temporary sandbox directory, the to field is relative to the $PWD when sbox was run. |
| 45 | repeated Copy copy_after = 4; |
| 46 | |
| 47 | // An optional hash of the input files to ensure the textproto files and the sbox rule reruns |
| 48 | // when the lists of inputs changes, even if the inputs are not on the command line. |
| 49 | optional string input_hash = 5; |
Colin Cross | e55bd42 | 2021-03-23 13:44:30 -0700 | [diff] [blame] | 50 | |
| 51 | // A list of files that will be copied before the sandboxed command, and whose contents should be |
| 52 | // copied as if they were listed in copy_before. |
| 53 | repeated RspFile rsp_files = 6; |
Cole Faust | 1ead86c | 2024-08-23 14:41:51 -0700 | [diff] [blame] | 54 | |
| 55 | // The environment variables that will be set or unset while running the command. |
| 56 | // Also see dont_inherit_env. |
| 57 | repeated EnvironmentVariable env = 7; |
| 58 | |
| 59 | // By default, all environment variables are inherited from the calling process, but may be |
| 60 | // replaced or unset by env. If dont_inherit_env is set, no environment variables will be |
| 61 | // inherited, and instead only the variables in env will be defined. |
| 62 | optional bool dont_inherit_env = 8; |
| 63 | } |
| 64 | |
| 65 | message EnvironmentVariable { |
| 66 | // The name of the environment variable |
| 67 | required string name = 1; |
| 68 | oneof state { |
| 69 | // The value to set the environment variable to. |
| 70 | string value = 2; |
| 71 | // This environment variable should be unset in the command. |
| 72 | bool unset = 3; |
| 73 | // This environment variable should be inherited from the parent process. |
| 74 | // Can be combined with dont_inherit_env to only inherit certain environment |
| 75 | // variables. |
| 76 | bool inherit = 4; |
| 77 | } |
Colin Cross | e16ce36 | 2020-11-12 08:29:30 -0800 | [diff] [blame] | 78 | } |
| 79 | |
| 80 | // Copy describes a from-to pair of files to copy. The paths may be relative, the root that they |
| 81 | // are relative to is specific to the context the Copy is used in and will be different for |
| 82 | // from and to. |
| 83 | message Copy { |
| 84 | required string from = 1; |
| 85 | required string to = 2; |
Colin Cross | 859dfd9 | 2020-11-30 20:12:47 -0800 | [diff] [blame] | 86 | |
| 87 | // If true, make the file executable after copying it. |
| 88 | optional bool executable = 3; |
Colin Cross | e55bd42 | 2021-03-23 13:44:30 -0700 | [diff] [blame] | 89 | } |
| 90 | |
| 91 | // RspFile describes an rspfile that should be copied into the sandbox directory. |
| 92 | message RspFile { |
| 93 | // The path to the rsp file. |
| 94 | required string file = 1; |
| 95 | |
| 96 | // A list of path mappings that should be applied to each file listed in the rsp file. |
| 97 | repeated PathMapping path_mappings = 2; |
| 98 | } |
| 99 | |
| 100 | // PathMapping describes a mapping from a path outside the sandbox to the path inside the sandbox. |
| 101 | message PathMapping { |
| 102 | required string from = 1; |
| 103 | required string to = 2; |
| 104 | } |