blob: af2bf51410f8a2200a8df40260625077e34804ec [file] [log] [blame]
syntax = "proto3";
package chromite.api;
import "chromite/api/build_api.proto";
import "chromiumos/common.proto";
// Depgraph messages and service.
// Message contains data about the portage dependency graph and the packages'
// dependency source paths.
message DepGraph {
// The board whose dependency graph is being created for.
chromiumos.BuildTarget build_target = 1;
// List of packages in the dependency graph and their infos, which include
// dependency packages and the source paths.
repeated PackageDepInfo package_deps = 2;
}
// Message describing a package and its dependencies.
message PackageDepInfo {
chromiumos.PackageInfo package_info = 1;
// List of packages this package depends on.
repeated chromiumos.PackageInfo dependency_packages = 2;
// List of source paths the package depends on.
repeated SourcePath dependency_source_paths = 3;
}
// Message describes a source path.
message SourcePath {
string path = 1;
}
// Message for creating dependency graph json map.
// Example Json:
// {"build_target":{"name":"board"},"output_file":"/tmp/depgraph.json"}
message GetBuildDependencyGraphRequest {
// The board whose dependency graph is being created.
chromiumos.BuildTarget build_target = 1;
// The path where the dep graph json file is being saved to.
string output_path = 2;
}
// Response from creating dependency graph json map.
message GetBuildDependencyGraphResponse {
// The created dependency graph file
string build_dependency_graph_file = 1;
}
// Service to create a variety of package dependency graphs.
service DependencyService {
// The module implementing the service.
option (service_options) = {
module: "board_build_dependency",
};
// Get the build dependency graph.
rpc GetBuildDependencyGraph(GetBuildDependencyGraphRequest)
returns (GetBuildDependencyGraphResponse);
}