| // 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 py_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; | 
 | } | 
 |  | 
 | // 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; | 
 | } |