blob: 2d2f97078c95cad8eb42089990652c51d7d00e5b [file] [log] [blame]
// 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 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;
}