depot-scanner is a tool that runs Nix and parses the --trace-file-access output to deduce what files are necessary to evaluate a derivation. Take DEPOT_ROOT from the environment. If depotRoot doesn't exist, print an error early. Fix the build of the protobuf library. Switch to the GRPC build rule, as a service is in this proto file. Create the PathType enum and parse it from cmdline flags. Change-Id: I537b5c6bceecf76ca510f7ac04ab9dad7785feb1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1769 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: lukegb <lukegb@tvl.fyi>
		
			
				
	
	
		
			46 lines
		
	
	
	
		
			938 B
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
	
		
			938 B
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
// Copyright 2020 TVL
 | 
						|
// SPDX-License-Identifier: MIT
 | 
						|
 | 
						|
syntax = "proto3";
 | 
						|
package tvl.tools.depot_scanner;
 | 
						|
option go_package = "code.tvl.fyi/tools/depot-scanner/proto";
 | 
						|
 | 
						|
enum PathType {
 | 
						|
  UNKNOWN = 0;
 | 
						|
  DEPOT = 1;
 | 
						|
  STORE = 2;
 | 
						|
  CORE = 3;
 | 
						|
}
 | 
						|
 | 
						|
message ScanRequest {
 | 
						|
  // Which revision of the depot
 | 
						|
  string revision = 1;
 | 
						|
  string attr = 2;
 | 
						|
  // Optionally, the attr to evaluate can be provided as a path to a folder or a
 | 
						|
  // .nix file.  This is used by the HTTP service.
 | 
						|
  string attrAsPath = 3;
 | 
						|
}
 | 
						|
 | 
						|
message ScanResponse {
 | 
						|
  repeated string depotPath = 1;
 | 
						|
  repeated string nixStorePath = 2;
 | 
						|
  repeated string corePkgsPath = 4;
 | 
						|
  repeated string otherPath = 3;
 | 
						|
 | 
						|
  bytes derivation = 5;
 | 
						|
}
 | 
						|
 | 
						|
message ArchiveRequest {
 | 
						|
  repeated string depotPath = 1;
 | 
						|
}
 | 
						|
 | 
						|
message ArchiveChunk {
 | 
						|
  bytes chunk = 1;
 | 
						|
}
 | 
						|
 | 
						|
service DepotScanService {
 | 
						|
  rpc Scan(ScanRequest) returns (ScanResponse);
 | 
						|
 | 
						|
  rpc MakeArchive(ArchiveRequest) returns (stream ArchiveChunk);
 | 
						|
}
 | 
						|
 |