blob: a12fef61fc35c4db46a9fb6587aeb82995f94ecd [file] [log] [blame]
syntax = "proto3";
package chromite.api;
option go_package = "go.chromium.org/chromiumos/infra/proto/go/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 {
// The package itself.
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 {
// Required.
// The board whose dependency graph is being created.
chromiumos.BuildTarget build_target = 1;
// The chroot to use to execute the endpoint.
chromiumos.Chroot chroot = 2;
// List of packages for which to create the dependency graph. If none are
// specified the standard list of packages is used.
repeated chromiumos.PackageInfo packages = 3;
}
// Response from creating dependency graph json map.
message GetBuildDependencyGraphResponse {
DepGraph dep_graph = 1;
DepGraph sdk_dep_graph = 2;
}
message GetToolchainPathsRequest {
// The chroot to use to execute the endpoint.
chromiumos.Chroot chroot = 1;
}
message GetToolchainPathsResponse {
// List of paths considered relevant to toolchain packages.
repeated SourcePath paths = 1;
}
// Service to create a variety of package dependency graphs.
service DependencyService {
// The module implementing the service.
option (service_options) = {
module: "dependency",
service_chroot_assert: INSIDE,
};
// Get the build dependency graph.
rpc GetBuildDependencyGraph(GetBuildDependencyGraphRequest)
returns (GetBuildDependencyGraphResponse);
// Get the list of source paths that are relevant to the toolchain
rpc GetToolchainPaths(GetToolchainPathsRequest)
returns (GetToolchainPathsResponse);
}