feat(tvix/build): don't force outputs to be in store_dir
There's no need to require builds to also put their outputs in store_dir. So rename store_dir to inputs_dir and make outputs consume paths, not basenames. Also document the possibility for builds to write to inputs_dir. Let's see if we want to make this a constraint later. Change-Id: Ib4df20afcdde2d771c269c422f04c7e95587cd0f Reviewed-on: https://cl.tvl.fyi/c/depot/+/10447 Tested-by: BuildkiteCI Reviewed-by: raitobezarius <tvl@lahfa.xyz> Autosubmit: flokli <flokli@flokli.de>
This commit is contained in:
parent
3e63d7be42
commit
4d6137964b
3 changed files with 73 additions and 78 deletions
|
@ -64,8 +64,8 @@ type BuildRequest struct {
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
// The list of all root nodes that should be visible in STORE_DIR at the time
|
// The list of all root nodes that should be visible in `inputs_dir` at the
|
||||||
// of the build.
|
// time of the build.
|
||||||
// As root nodes are content-addressed, no additional signatures are needed
|
// As root nodes are content-addressed, no additional signatures are needed
|
||||||
// to substitute / make these available in the build environment.
|
// to substitute / make these available in the build environment.
|
||||||
// Inputs are sorted by their names.
|
// Inputs are sorted by their names.
|
||||||
|
@ -79,13 +79,14 @@ type BuildRequest struct {
|
||||||
WorkingDir string `protobuf:"bytes,3,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"`
|
WorkingDir string `protobuf:"bytes,3,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"`
|
||||||
// A list of "scratch" paths, relative to the build root.
|
// A list of "scratch" paths, relative to the build root.
|
||||||
// These will be write-able during the build.
|
// These will be write-able during the build.
|
||||||
// [build] in the case of Nix.
|
// [build, nix/store] in the case of Nix.
|
||||||
ScratchPaths []string `protobuf:"bytes,4,rep,name=scratch_paths,json=scratchPaths,proto3" json:"scratch_paths,omitempty"`
|
ScratchPaths []string `protobuf:"bytes,4,rep,name=scratch_paths,json=scratchPaths,proto3" json:"scratch_paths,omitempty"`
|
||||||
// The path where the castore input nodes will be located at,
|
// The path where the castore input nodes will be located at,
|
||||||
// "/nix/store" in case of Nix.
|
// "/nix/store" in case of Nix.
|
||||||
StoreDir string `protobuf:"bytes,5,opt,name=store_dir,json=storeDir,proto3" json:"store_dir,omitempty"`
|
// Builds might also write into here (Nix builds do that).
|
||||||
// The list of output nodes the build is expected to produce.
|
InputsDir string `protobuf:"bytes,5,opt,name=inputs_dir,json=inputsDir,proto3" json:"inputs_dir,omitempty"`
|
||||||
// These are basenames inside store_dir.
|
// The list of output paths the build is expected to produce,
|
||||||
|
// relative to the root.
|
||||||
// If the path is not produced, the build is considered to have failed.
|
// If the path is not produced, the build is considered to have failed.
|
||||||
// Outputs are sorted.
|
// Outputs are sorted.
|
||||||
Outputs []string `protobuf:"bytes,6,rep,name=outputs,proto3" json:"outputs,omitempty"`
|
Outputs []string `protobuf:"bytes,6,rep,name=outputs,proto3" json:"outputs,omitempty"`
|
||||||
|
@ -165,9 +166,9 @@ func (x *BuildRequest) GetScratchPaths() []string {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *BuildRequest) GetStoreDir() string {
|
func (x *BuildRequest) GetInputsDir() string {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.StoreDir
|
return x.InputsDir
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
@ -406,7 +407,7 @@ var file_tvix_build_protos_build_proto_rawDesc = []byte{
|
||||||
0x0d, 0x74, 0x76, 0x69, 0x78, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x21,
|
0x0d, 0x74, 0x76, 0x69, 0x78, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x21,
|
||||||
0x74, 0x76, 0x69, 0x78, 0x2f, 0x63, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f,
|
0x74, 0x76, 0x69, 0x78, 0x2f, 0x63, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f,
|
||||||
0x74, 0x6f, 0x73, 0x2f, 0x63, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
0x74, 0x6f, 0x73, 0x2f, 0x63, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||||
0x6f, 0x22, 0xf5, 0x04, 0x0a, 0x0c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
|
0x6f, 0x22, 0xf7, 0x04, 0x0a, 0x0c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||||
0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03,
|
0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03,
|
||||||
0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x76, 0x69, 0x78, 0x2e, 0x63, 0x61, 0x73, 0x74, 0x6f, 0x72,
|
0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x76, 0x69, 0x78, 0x2e, 0x63, 0x61, 0x73, 0x74, 0x6f, 0x72,
|
||||||
0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74,
|
0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74,
|
||||||
|
@ -416,47 +417,47 @@ var file_tvix_build_protos_build_proto_rawDesc = []byte{
|
||||||
0x64, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x69,
|
0x64, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x69,
|
||||||
0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x63, 0x72, 0x61, 0x74, 0x63, 0x68,
|
0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x63, 0x72, 0x61, 0x74, 0x63, 0x68,
|
||||||
0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x63,
|
0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x63,
|
||||||
0x72, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74,
|
0x72, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e,
|
||||||
0x6f, 0x72, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73,
|
0x70, 0x75, 0x74, 0x73, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
|
||||||
0x74, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75,
|
0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x44, 0x69, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x75, 0x74,
|
||||||
0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74,
|
0x70, 0x75, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70,
|
||||||
0x73, 0x12, 0x4d, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74,
|
0x75, 0x74, 0x73, 0x12, 0x4d, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65,
|
||||||
0x5f, 0x76, 0x61, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x76,
|
0x6e, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e,
|
||||||
|
0x74, 0x76, 0x69, 0x78, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75,
|
||||||
|
0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61,
|
||||||
|
0x72, 0x52, 0x0f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61,
|
||||||
|
0x72, 0x73, 0x12, 0x4e, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74,
|
||||||
|
0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x76, 0x69, 0x78, 0x2e, 0x62,
|
||||||
|
0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71,
|
||||||
|
0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72,
|
||||||
|
0x61, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e,
|
||||||
|
0x74, 0x73, 0x1a, 0x30, 0x0a, 0x06, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x12, 0x10, 0x0a, 0x03,
|
||||||
|
0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
|
||||||
|
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76,
|
||||||
|
0x61, 0x6c, 0x75, 0x65, 0x1a, 0xc4, 0x01, 0x0a, 0x10, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f,
|
||||||
|
0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x73,
|
||||||
|
0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65,
|
||||||
|
0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18,
|
||||||
|
0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
|
||||||
|
0x12, 0x2c, 0x0a, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x6f,
|
||||||
|
0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, 0x76,
|
||||||
|
0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x25,
|
||||||
|
0x0a, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73,
|
||||||
|
0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x41,
|
||||||
|
0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
|
||||||
|
0x5f, 0x62, 0x69, 0x6e, 0x5f, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70,
|
||||||
|
0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x42, 0x69, 0x6e, 0x53, 0x68, 0x22, 0x7a, 0x0a, 0x05, 0x42,
|
||||||
|
0x75, 0x69, 0x6c, 0x64, 0x12, 0x40, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x72, 0x65,
|
||||||
|
0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x76,
|
||||||
0x69, 0x78, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c,
|
0x69, 0x78, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c,
|
||||||
0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52,
|
0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x52,
|
||||||
0x0f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x73,
|
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74,
|
||||||
0x12, 0x4e, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x18,
|
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x76, 0x69, 0x78, 0x2e, 0x63,
|
||||||
0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x76, 0x69, 0x78, 0x2e, 0x62, 0x75, 0x69,
|
0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07,
|
||||||
0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
|
0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x42, 0x24, 0x5a, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x2e,
|
||||||
0x73, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69,
|
0x74, 0x76, 0x6c, 0x2e, 0x66, 0x79, 0x69, 0x2f, 0x74, 0x76, 0x69, 0x78, 0x2f, 0x62, 0x75, 0x69,
|
||||||
0x6e, 0x74, 0x73, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73,
|
0x6c, 0x64, 0x2d, 0x67, 0x6f, 0x3b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x76, 0x31, 0x62, 0x06, 0x70,
|
||||||
0x1a, 0x30, 0x0a, 0x06, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
|
0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
|
|
||||||
0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c,
|
|
||||||
0x75, 0x65, 0x1a, 0xc4, 0x01, 0x0a, 0x10, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x73,
|
|
||||||
0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65,
|
|
||||||
0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12,
|
|
||||||
0x1d, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20,
|
|
||||||
0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x2c,
|
|
||||||
0x0a, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x5f, 0x70,
|
|
||||||
0x61, 0x74, 0x68, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, 0x76, 0x61, 0x69,
|
|
||||||
0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x25, 0x0a, 0x0e,
|
|
||||||
0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x04,
|
|
||||||
0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x63, 0x63,
|
|
||||||
0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x5f, 0x62,
|
|
||||||
0x69, 0x6e, 0x5f, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x72, 0x6f,
|
|
||||||
0x76, 0x69, 0x64, 0x65, 0x42, 0x69, 0x6e, 0x53, 0x68, 0x22, 0x7a, 0x0a, 0x05, 0x42, 0x75, 0x69,
|
|
||||||
0x6c, 0x64, 0x12, 0x40, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75,
|
|
||||||
0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x76, 0x69, 0x78,
|
|
||||||
0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52,
|
|
||||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71,
|
|
||||||
0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18,
|
|
||||||
0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x76, 0x69, 0x78, 0x2e, 0x63, 0x61, 0x73,
|
|
||||||
0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x75,
|
|
||||||
0x74, 0x70, 0x75, 0x74, 0x73, 0x42, 0x24, 0x5a, 0x22, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x76,
|
|
||||||
0x6c, 0x2e, 0x66, 0x79, 0x69, 0x2f, 0x74, 0x76, 0x69, 0x78, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64,
|
|
||||||
0x2d, 0x67, 0x6f, 0x3b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f,
|
|
||||||
0x74, 0x6f, 0x33,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
@ -45,8 +45,8 @@ option go_package = "code.tvl.fyi/tvix/build-go;buildv1";
|
||||||
// support "send all BuildRequest for a nixpkgs eval to a remote builder and put
|
// support "send all BuildRequest for a nixpkgs eval to a remote builder and put
|
||||||
// the laptop to sleep" usecases later.
|
// the laptop to sleep" usecases later.
|
||||||
message BuildRequest {
|
message BuildRequest {
|
||||||
// The list of all root nodes that should be visible in STORE_DIR at the time
|
// The list of all root nodes that should be visible in `inputs_dir` at the
|
||||||
// of the build.
|
// time of the build.
|
||||||
// As root nodes are content-addressed, no additional signatures are needed
|
// As root nodes are content-addressed, no additional signatures are needed
|
||||||
// to substitute / make these available in the build environment.
|
// to substitute / make these available in the build environment.
|
||||||
// Inputs are sorted by their names.
|
// Inputs are sorted by their names.
|
||||||
|
@ -63,15 +63,16 @@ message BuildRequest {
|
||||||
|
|
||||||
// A list of "scratch" paths, relative to the build root.
|
// A list of "scratch" paths, relative to the build root.
|
||||||
// These will be write-able during the build.
|
// These will be write-able during the build.
|
||||||
// [build] in the case of Nix.
|
// [build, nix/store] in the case of Nix.
|
||||||
repeated string scratch_paths = 4;
|
repeated string scratch_paths = 4;
|
||||||
|
|
||||||
// The path where the castore input nodes will be located at,
|
// The path where the castore input nodes will be located at,
|
||||||
// "/nix/store" in case of Nix.
|
// "/nix/store" in case of Nix.
|
||||||
string store_dir = 5;
|
// Builds might also write into here (Nix builds do that).
|
||||||
|
string inputs_dir = 5;
|
||||||
|
|
||||||
// The list of output nodes the build is expected to produce.
|
// The list of output paths the build is expected to produce,
|
||||||
// These are basenames inside store_dir.
|
// relative to the root.
|
||||||
// If the path is not produced, the build is considered to have failed.
|
// If the path is not produced, the build is considered to have failed.
|
||||||
// Outputs are sorted.
|
// Outputs are sorted.
|
||||||
repeated string outputs = 6;
|
repeated string outputs = 6;
|
||||||
|
|
|
@ -52,22 +52,15 @@ where
|
||||||
command_args.push(derivation.builder.clone());
|
command_args.push(derivation.builder.clone());
|
||||||
command_args.extend_from_slice(&derivation.arguments);
|
command_args.extend_from_slice(&derivation.arguments);
|
||||||
|
|
||||||
// produce output_paths, which is the basename of each output (sorted)
|
// produce output_paths, which is the absolute path of each output (sorted)
|
||||||
// since Derivation is validated, we know output paths can be parsed.
|
let mut output_paths: Vec<String> = derivation
|
||||||
// TODO: b/264 will remove the need to parse them here
|
|
||||||
let mut outputs: Vec<String> = derivation
|
|
||||||
.outputs
|
.outputs
|
||||||
.values()
|
.values()
|
||||||
.map(|output| {
|
.map(|e| e.path[1..].to_owned())
|
||||||
let output_storepath = StorePathRef::from_absolute_path(output.path.as_bytes())
|
|
||||||
.expect("invalid output storepath");
|
|
||||||
|
|
||||||
output_storepath.to_string()
|
|
||||||
})
|
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
// Sort the outputs. We can use sort_unstable, as these are unique strings.
|
// Sort the outputs. We can use sort_unstable, as these are unique strings.
|
||||||
outputs.sort_unstable();
|
output_paths.sort_unstable();
|
||||||
|
|
||||||
// Produce environment_vars. We use a BTreeMap while producing them, so the
|
// Produce environment_vars. We use a BTreeMap while producing them, so the
|
||||||
// resulting Vec is sorted by key.
|
// resulting Vec is sorted by key.
|
||||||
|
@ -151,13 +144,13 @@ where
|
||||||
|
|
||||||
BuildRequest {
|
BuildRequest {
|
||||||
command_args,
|
command_args,
|
||||||
outputs,
|
outputs: output_paths,
|
||||||
environment_vars,
|
environment_vars,
|
||||||
inputs,
|
inputs,
|
||||||
|
inputs_dir: nix_compat::store_path::STORE_DIR.into(),
|
||||||
constraints,
|
constraints,
|
||||||
working_dir: "build".into(),
|
working_dir: "build".into(),
|
||||||
scratch_paths: vec!["build".into()],
|
scratch_paths: vec!["build".into(), "nix/store".into()],
|
||||||
store_dir: nix_compat::store_path::STORE_DIR.into(),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,10 +238,11 @@ mod test {
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
BuildRequest {
|
BuildRequest {
|
||||||
command_args: vec![":".to_string()],
|
command_args: vec![":".into()],
|
||||||
outputs: vec!["fhaj6gmwns62s6ypkcldbaj2ybvkhx3p-foo".to_string()],
|
outputs: vec!["nix/store/fhaj6gmwns62s6ypkcldbaj2ybvkhx3p-foo".into()],
|
||||||
environment_vars: expected_environment_vars,
|
environment_vars: expected_environment_vars,
|
||||||
inputs: vec![INPUT_NODE_FOO.clone()],
|
inputs: vec![INPUT_NODE_FOO.clone()],
|
||||||
|
inputs_dir: nix_compat::store_path::STORE_DIR.into(),
|
||||||
constraints: Some(BuildConstraints {
|
constraints: Some(BuildConstraints {
|
||||||
system: derivation.system.clone(),
|
system: derivation.system.clone(),
|
||||||
min_memory: 0,
|
min_memory: 0,
|
||||||
|
@ -256,9 +250,8 @@ mod test {
|
||||||
available_ro_paths: vec![],
|
available_ro_paths: vec![],
|
||||||
provide_bin_sh: true,
|
provide_bin_sh: true,
|
||||||
}),
|
}),
|
||||||
working_dir: "build".to_string(),
|
working_dir: "build".into(),
|
||||||
scratch_paths: vec!["build".to_string()],
|
scratch_paths: vec!["build".into(), "nix/store".into()],
|
||||||
store_dir: nix_compat::store_path::STORE_DIR.to_string(),
|
|
||||||
},
|
},
|
||||||
build_request
|
build_request
|
||||||
);
|
);
|
||||||
|
@ -314,9 +307,10 @@ mod test {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
BuildRequest {
|
BuildRequest {
|
||||||
command_args: vec![":".to_string()],
|
command_args: vec![":".to_string()],
|
||||||
outputs: vec!["4q0pg5zpfmznxscq3avycvf9xdvx50n3-bar".to_string()],
|
outputs: vec!["nix/store/4q0pg5zpfmznxscq3avycvf9xdvx50n3-bar".into()],
|
||||||
environment_vars: expected_environment_vars,
|
environment_vars: expected_environment_vars,
|
||||||
inputs: vec![],
|
inputs: vec![],
|
||||||
|
inputs_dir: nix_compat::store_path::STORE_DIR.into(),
|
||||||
constraints: Some(BuildConstraints {
|
constraints: Some(BuildConstraints {
|
||||||
system: derivation.system.clone(),
|
system: derivation.system.clone(),
|
||||||
min_memory: 0,
|
min_memory: 0,
|
||||||
|
@ -324,9 +318,8 @@ mod test {
|
||||||
available_ro_paths: vec![],
|
available_ro_paths: vec![],
|
||||||
provide_bin_sh: true,
|
provide_bin_sh: true,
|
||||||
}),
|
}),
|
||||||
working_dir: "build".to_string(),
|
working_dir: "build".into(),
|
||||||
scratch_paths: vec!["build".to_string()],
|
scratch_paths: vec!["build".into(), "nix/store".into()],
|
||||||
store_dir: nix_compat::store_path::STORE_DIR.to_string(),
|
|
||||||
},
|
},
|
||||||
build_request
|
build_request
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in a new issue