|  | // Copyright 2014 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. | 
|  | // | 
|  | // proto definitions for the blaze extra_action feature. | 
|  |  | 
|  | syntax = "proto2"; | 
|  |  | 
|  | package blaze; | 
|  |  | 
|  | option java_multiple_files = true; | 
|  | option java_package = "com.google.devtools.build.lib.actions.extra"; | 
|  | // option cc_api_version = 2; | 
|  | // option java_api_version = 2; | 
|  |  | 
|  | // A list of extra actions and metadata for the print_action command. | 
|  | message ExtraActionSummary { | 
|  | repeated DetailedExtraActionInfo action = 1; | 
|  | } | 
|  |  | 
|  | // An individual action printed by the print_action command. | 
|  | message DetailedExtraActionInfo { | 
|  | // If the given action was included in the output due to a request for a | 
|  | // specific file, then this field contains the name of that file so that the | 
|  | // caller can correctly associate the extra action with that file. | 
|  | // | 
|  | // The data in this message is currently not sufficient to run the action on a | 
|  | // production machine, because not all necessary input files are identified, | 
|  | // especially for C++. | 
|  | // | 
|  | // There is no easy way to fix this; we could require that all header files | 
|  | // are declared and then add all of them here (which would be a huge superset | 
|  | // of the files that are actually required), or we could run the include | 
|  | // scanner and add those files here. | 
|  | optional string triggering_file = 1; | 
|  | // The actual action. | 
|  | required ExtraActionInfo action = 2; | 
|  | } | 
|  |  | 
|  | // Provides information to an extra_action on the original action it is | 
|  | // shadowing. | 
|  | message ExtraActionInfo { | 
|  | extensions 1000 to max; | 
|  |  | 
|  | // The label of the ActionOwner of the shadowed action. | 
|  | optional string owner = 1; | 
|  |  | 
|  | // Only set if the owner is an Aspect. | 
|  | // Corresponds to AspectValue.AspectKey.getAspectClass.getName() | 
|  | // This field is deprecated as there might now be | 
|  | // multiple aspects applied to the same target. | 
|  | // This is the aspect name of the last aspect | 
|  | // in 'aspects' (8) field. | 
|  | optional string aspect_name = 6 [deprecated = true]; | 
|  |  | 
|  | // Only set if the owner is an Aspect. | 
|  | // Corresponds to AspectValue.AspectKey.getParameters() | 
|  | // This field is deprecated as there might now be | 
|  | // multiple aspects applied to the same target. | 
|  | // These are the aspect parameters of the last aspect | 
|  | // in 'aspects' (8) field. | 
|  | map<string, StringList> aspect_parameters = 7 [deprecated = true]; | 
|  | message StringList { | 
|  | option deprecated = true; | 
|  | repeated string value = 1; | 
|  | } | 
|  |  | 
|  | message AspectDescriptor { | 
|  | // Corresponds to AspectDescriptor.getName() | 
|  | optional string aspect_name = 1; | 
|  | // Corresponds to AspectDescriptor.getParameters() | 
|  | map<string, StringList> aspect_parameters = 2; | 
|  | message StringList { | 
|  | repeated string value = 1; | 
|  | } | 
|  | } | 
|  |  | 
|  | // If the owner is an aspect, all aspects applied to the target | 
|  | repeated AspectDescriptor aspects = 8; | 
|  |  | 
|  | // An id uniquely describing the shadowed action at the ActionOwner level. | 
|  | optional string id = 2; | 
|  |  | 
|  | // The mnemonic of the shadowed action. Used to distinguish actions with the | 
|  | // same ActionType. | 
|  | optional string mnemonic = 5; | 
|  | } | 
|  |  | 
|  | message EnvironmentVariable { | 
|  | // It is possible that this name is not a valid variable identifier. | 
|  | required string name = 1; | 
|  | // The value is unescaped and unquoted. | 
|  | required string value = 2; | 
|  | } | 
|  |  | 
|  | // Provides access to data that is specific to spawn actions. | 
|  | // Usually provided by actions using the "Spawn" & "Genrule" Mnemonics. | 
|  | message SpawnInfo { | 
|  | extend ExtraActionInfo { | 
|  | optional SpawnInfo spawn_info = 1003; | 
|  | } | 
|  |  | 
|  | repeated string argument = 1; | 
|  | // A list of environment variables and their values. No order is enforced. | 
|  | repeated EnvironmentVariable variable = 2; | 
|  | repeated string input_file = 4; | 
|  | repeated string output_file = 5; | 
|  | } | 
|  |  | 
|  | // Provides access to data that is specific to C++ compile actions. | 
|  | // Usually provided by actions using the "CppCompile" Mnemonic. | 
|  | message CppCompileInfo { | 
|  | extend ExtraActionInfo { | 
|  | optional CppCompileInfo cpp_compile_info = 1001; | 
|  | } | 
|  |  | 
|  | optional string tool = 1; | 
|  | repeated string compiler_option = 2; | 
|  | optional string source_file = 3; | 
|  | optional string output_file = 4; | 
|  | // Due to header discovery, this won't include headers unless the build is | 
|  | // actually performed. If set, this field will include the value of | 
|  | // "source_file" in addition to the headers. | 
|  | repeated string sources_and_headers = 5; | 
|  | // A list of environment variables and their values. No order is enforced. | 
|  | repeated EnvironmentVariable variable = 6; | 
|  | } | 
|  |  | 
|  | // Provides access to data that is specific to C++ link  actions. | 
|  | // Usually provided by actions using the "CppLink" Mnemonic. | 
|  | message CppLinkInfo { | 
|  | extend ExtraActionInfo { | 
|  | optional CppLinkInfo cpp_link_info = 1002; | 
|  | } | 
|  |  | 
|  | repeated string input_file = 1; | 
|  | optional string output_file = 2; | 
|  | optional string interface_output_file = 3; | 
|  | optional string link_target_type = 4; | 
|  | optional string link_staticness = 5; | 
|  | repeated string link_stamp = 6; | 
|  | repeated string build_info_header_artifact = 7; | 
|  | // The list of command line options used for running the linking tool. | 
|  | repeated string link_opt = 8; | 
|  | } | 
|  |  | 
|  | // Provides access to data that is specific to java compile actions. | 
|  | // Usually provided by actions using the "Javac" Mnemonic. | 
|  | message JavaCompileInfo { | 
|  | extend ExtraActionInfo { | 
|  | optional JavaCompileInfo java_compile_info = 1000; | 
|  | } | 
|  |  | 
|  | optional string outputjar = 1; | 
|  | repeated string classpath = 2; | 
|  | repeated string sourcepath = 3; | 
|  | repeated string source_file = 4; | 
|  | repeated string javac_opt = 5; | 
|  | repeated string processor = 6; | 
|  | repeated string processorpath = 7; | 
|  | repeated string bootclasspath = 8; | 
|  | repeated string argument = 9; | 
|  | optional string system = 10; | 
|  | } | 
|  |  | 
|  | // Provides access to data that is specific to python rules. | 
|  | // Usually provided by actions using the "Python" Mnemonic. | 
|  | message PythonInfo { | 
|  | extend ExtraActionInfo { | 
|  | optional PythonInfo python_info = 1005; | 
|  | } | 
|  |  | 
|  | repeated string source_file = 1; | 
|  | repeated string dep_file = 2; | 
|  | } |