Generating protocol buffers

BuildStream uses protobuf and gRPC for serialization and communication with artifact cache servers. This requires .proto files and Python code generated from the .proto files using protoc. All these files live in the src/buildstream/_protos directory. The generated files are included in the git repository to avoid depending on grpcio-tools for user installations.

Regenerating code

When .proto files are modified, the corresponding Python code needs to be regenerated:

tox -e build-grpc

This installs the correct version of grpcio-tools and regenerates the protobuf and grpc code.