blob: 10eca5fb31a4cad428578796f1b9c4e14c190a3d [file]
// Copyright 2025 The Pigweed Authors
//
// 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
//
// https://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.
syntax = "proto3";
package pw.build.proto;
import "pigweed/pw_build/proto/workflows.proto";
message Action {
// The binary to launch.
string executable = 1;
// Arguments to pass to the action.
repeated string args = 2;
// Environment variables to populate for this action.
map<string, string> env = 3;
enum InvocationLocation {
// Prefer running from the output directory whenever possible. This
// minimizes potential for build artifacts leaking out into the source tree.
OUTPUT_DIRECTORY = 0;
// Some build actions like GN generation are best run from the root of the
// project.
// WARNING: Do not ever use this to generate files into the source tree.
PROJECT_ROOT = 1;
// Some build actions like Bazel need to be run from the invoker CWD.
// WARNING: Do not ever use this to generate files into the source tree.
INVOKER_CWD = 2;
}
InvocationLocation run_from = 4;
}
message JobResponse {
// The definition of the requested job as a series of actions.
repeated Action actions = 1;
}
message JobRequest {
// A job request may be a single tool, or some kind of build.
oneof type {
Build build = 1;
Tool tool = 2;
}
}
message BuildDriverRequest {
// A series of JobRequest messages that should be converted into one or more
// actions.
repeated JobRequest jobs = 1;
}
message BuildDriverResponse {
// A series of JobResponse messages that define action sequences for a
// BuildDriverRequest.
repeated JobResponse jobs = 1;
}