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