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