// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto3";

package chromiumos;

option go_package = "go.chromium.org/chromiumos/infra/proto/go/chromiumos";

import "chromiumos/builder_config.proto";
import "chromiumos/common.proto";

// The input proto for invocations of the Build Planner.
message GenerateBuildPlanRequest {
  // Serialized buildbucket GerritChanges, or none if this is a postsubmit run
  // or similar. Explicit proto import is avoided here to prevent a dependency
  // on the luci-go repo.
  // See https://chromium.googlesource.com/infra/luci/luci-go/+/master/buildbucket/proto/common.proto
  repeated ProtoBytes gerrit_changes = 1;

  // The manifest-internal snapshot commit hash that's being used for the current build.
  // Note that manifest_commit will be soon replaced with gitiles_commit below.
  string manifest_commit = 2;
  // Serialized buildbucket GitilesCommit, representing the manifest or
  // manifest-internal commit to which the build is synced.
  ProtoBytes gitiles_commit = 4;

  // The BuilderConfigs to consider for skipping.
  repeated BuilderConfig builder_configs = 3;
}

// The output proto for invocations of the Build Planner.
message GenerateBuildPlanResponse {

  // BuilderConfigs that cannot be skipped.
  repeated BuilderConfig.Id builds_to_run = 1;

  // BuilderConfigs that can be skipped due to Portage dependency rules around
  // files that are known to never be relevant for Chrome OS builds.
  repeated BuilderConfig.Id skip_for_global_build_irrelevance = 2;

  // BuilderConfigs that can be skipped because of per-BuilderConfig RunWhen
  // rules.
  repeated BuilderConfig.Id skip_for_run_when_rules = 3;
}
