Repository navigation
Expand file tree
/
Copy pathanalysis_v2.proto
More file actions
297 lines (232 loc) · 9.47 KB
/
Copy pathanalysis_v2.proto
File metadata and controls
297 lines (232 loc) · 9.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
// Copyright 2018 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 = "proto3";
package analysis;
import "src/main/protobuf/build.proto";
option java_package = "com.google.devtools.build.lib.analysis";
option java_outer_classname = "AnalysisProtosV2";
// Container for the action graph properties.
message ActionGraphContainer {
repeated Artifact artifacts = 1;
repeated Action actions = 2;
repeated Target targets = 3;
repeated DepSetOfFiles dep_set_of_files = 4;
repeated Configuration configuration = 5;
repeated AspectDescriptor aspect_descriptors = 6;
repeated RuleClass rule_classes = 7;
repeated PathFragment path_fragments = 8;
}
// Represents a single artifact, whether it's a source file or a derived output
// file.
message Artifact {
// Identifier for this artifact; this is a uint32, only valid for this
// particular dump of the analysis.
uint32 id = 1;
// The id of the PathFragment that represents the relative path of the file
// within the execution root.
uint32 path_fragment_id = 2;
// True iff the artifact is a tree artifact, i.e. the above exec_path refers
// a directory.
bool is_tree_artifact = 3;
}
// Represents a single action, which is a function from Artifact(s) to
// Artifact(s).
message Action {
// The target that was responsible for the creation of the action.
uint32 target_id = 1;
// The aspects that were responsible for the creation of the action (if any).
// In the case of aspect-on-aspect, AspectDescriptors are listed in
// topological order of the dependency graph.
// e.g. [A, B] would imply that aspect A is applied on top of aspect B.
repeated uint32 aspect_descriptor_ids = 2;
// Encodes all significant behavior that might affect the output. The key
// must change if the work performed by the execution of this action changes.
// Note that the key doesn't include checksums of the input files.
string action_key = 3;
// The mnemonic for this kind of action.
string mnemonic = 4;
// The progress message of the action.
string progress_message = 21;
// The configuration under which this action is executed.
uint32 configuration_id = 5;
// The command line arguments of the action. This will be only set if
// explicitly requested.
repeated string arguments = 6;
// The list of environment variables to be set before executing the command.
repeated KeyValuePair environment_variables = 7;
// The set of input dep sets that the action depends upon. If the action does
// input discovery and `--include_pruned_outputs` is disabled, the contents of
// this set might differ before and after execution.
repeated uint32 input_dep_set_ids = 8;
// The list of Artifact IDs that represent the output files that this action
// will generate.
repeated uint32 output_ids = 9;
// True iff the action does input discovery during execution.
bool discovers_inputs = 10;
// Execution info for the action. Remote execution services may use this
// information to modify the execution environment, but actions will
// generally not be aware of it.
repeated KeyValuePair execution_info = 11;
// The list of param files. This will be only set if explicitly requested.
repeated ParamFile param_files = 12;
// The id to an Artifact that is the primary output of this action.
uint32 primary_output_id = 13;
// The execution platform for this action. Empty if the action has no
// execution platform.
string execution_platform = 14;
// The template content of the action, if it is TemplateExpand action.
string template_content = 15;
// The list of substitution should be performed on the template. The key is
// the string to be substituted and the value is the string to be substituted
// to.
repeated KeyValuePair substitutions = 16;
// The contents of the file for the ctx.actions.write() action
// (guarded by the --include_file_write_contents flag).
string file_contents = 17;
// The target of the symlink created by UnresolvedSymlink actions.
// For regular Symlink actions, the target is represented as an input.
string unresolved_symlink_target = 18;
// If FileWrite actions should make their output executable.
// (ctx.actions.write(is_executable=True))
bool is_executable = 19;
reserved 20;
}
// Represents a single target (without configuration information) that is
// associated with an action.
message Target {
// Identifier for this target; this is a uint32, only valid for this
// particular dump of the analysis.
uint32 id = 1;
// Label of the target, e.g. //foo:bar.
string label = 2;
// Class of the rule.
uint32 rule_class_id = 3;
}
message RuleClass {
// Identifier for this rule class; this is a uint32, only valid for
// this particular dump of the analysis.
uint32 id = 1;
// Name of the rule class, e.g. cc_library.
string name = 2;
}
// Represents an invocation specific descriptor of an aspect.
message AspectDescriptor {
// Identifier for this aspect descriptor; this is a uint32, only valid
// for the particular dump of the analysis.
uint32 id = 1;
// The name of the corresponding aspect. For native aspects, it's the Java
// class name, for Starlark aspects it's the bzl file followed by a % sign
// followed by the name of the aspect.
string name = 2;
// The list of parameters bound to a particular invocation of that aspect on
// a target. Note that aspects can be executed multiple times on the same
// target in different order.
repeated KeyValuePair parameters = 3;
}
message DepSetOfFiles {
// Identifier for this named set of files; this is a uint32, only
// valid for the particular dump of the analysis.
uint32 id = 1;
// Other transitively included named set of files.
repeated uint32 transitive_dep_set_ids = 2;
// The list of input artifact IDs that are immediately contained in this set.
repeated uint32 direct_artifact_ids = 3;
}
message Configuration {
// Identifier for this configuration; this is a uint32, only valid for
// the particular dump of the analysis.
uint32 id = 1;
// The mnemonic representing the build configuration.
string mnemonic = 2;
// The platform string.
string platform_name = 3;
// The checksum representation of the configuration options;
string checksum = 4;
// Whether this configuration is used for building tools.
bool is_tool = 5;
// The configuration fragments that are a part of this configuration.
repeated Fragment fragments = 6;
// The union of all the FragmentOptions associated with the Fragments that are
// a part of this configuration. These are returned separately from the
// fragments field because a set of FragmentOptions can be referenced by more
// than one Fragment, and we wish to avoid returning the same FragmentOptions
// repeatedly. These are sorted by the FragmentOptions name field.
repeated FragmentOptions fragment_options = 7;
}
// A configuration fragment
// (http://bazel.build/rules/lib/fragments).
message Fragment {
// The name of the Fragment.
string name = 1;
// The names of the FragmentOptions associated with this fragment in sorted
// order.
repeated string fragment_option_names = 2;
}
// A set of fragment options.
message FragmentOptions {
// The name of this set of fragment options.
string name = 1;
// The options themselves, in sorted order by name.
repeated Option options = 2;
}
// A fragment option.
message Option {
// The name of the option.
optional string name = 1;
// The value of the option.
optional string value = 2;
}
message KeyValuePair {
// The variable name.
string key = 1;
// The variable value.
string value = 2;
}
message ConfiguredTarget {
// The target. We use blaze_query.Target defined in build.proto instead of
// the Target defined in this file because blaze_query.Target is much heavier
// and will output proto results similar to what users are familiar with from
// regular blaze query.
blaze_query.Target target = 1;
// DEPRECATED. Use configuration_id instead.
Configuration configuration = 2 [deprecated = true];
// The id of the configuration this target is configured for. The actual
// Configuration message can be found in CqueryResults. If the target doesn't
// have a configuration, the value will be 0.
uint32 configuration_id = 3;
}
// Container for cquery results
message CqueryResult {
// All the configuredtargets returns by cquery
repeated ConfiguredTarget results = 1;
// All the Configurations referenced by results.
repeated Configuration configurations = 2;
}
// Content of a param file.
message ParamFile {
// The exec path of the param file artifact.
string exec_path = 1;
// The arguments in the param file.
// Each argument corresponds to a line in the param file.
repeated string arguments = 2;
}
// The path fragment that makes up a full path.
message PathFragment {
// Identifier for this path fragment.
uint32 id = 1;
// The label of the section in the path.
string label = 2;
// The id of the parent path fragment.
uint32 parent_id = 3;
}