mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 18:13:42 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			99 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
syntax = "proto3";
 | 
						|
 | 
						|
package proto;
 | 
						|
option go_package = "github.com/containerd/continuity/proto;proto";
 | 
						|
 | 
						|
// Manifest specifies the entries in a container bundle, keyed and sorted by
 | 
						|
// path.
 | 
						|
message Manifest {
 | 
						|
    repeated Resource resource = 1;
 | 
						|
}
 | 
						|
 | 
						|
message Resource {
 | 
						|
    // Path specifies the path from the bundle root. If more than one
 | 
						|
    // path is present, the entry may represent a hardlink, rather than using
 | 
						|
    // a link target. The path format is operating system specific.
 | 
						|
    repeated string path = 1;
 | 
						|
 | 
						|
    // NOTE(stevvooe): Need to define clear precedence for user/group/uid/gid precedence.
 | 
						|
 | 
						|
    // Uid specifies the user id for the resource.
 | 
						|
    int64 uid = 2;
 | 
						|
 | 
						|
    // Gid specifies the group id for the resource.
 | 
						|
    int64 gid = 3;
 | 
						|
 | 
						|
    // user and group are not currently used but their field numbers have been
 | 
						|
    // reserved for future use. As such, they are marked as deprecated.
 | 
						|
    string user = 4 [deprecated=true]; // "deprecated" stands for "reserved" here
 | 
						|
    string group = 5 [deprecated=true]; // "deprecated" stands for "reserved" here
 | 
						|
 | 
						|
    // Mode defines the file mode and permissions. We've used the same
 | 
						|
    // bit-packing from Go's os package,
 | 
						|
    // http://golang.org/pkg/os/#FileMode, since they've done the work of
 | 
						|
    // creating a cross-platform layout.
 | 
						|
    uint32 mode = 6;
 | 
						|
 | 
						|
    // NOTE(stevvooe): Beyond here, we start defining type specific fields.
 | 
						|
 | 
						|
    // Size specifies the size in bytes of the resource. This is only valid
 | 
						|
    // for regular files.
 | 
						|
    uint64 size = 7;
 | 
						|
 | 
						|
    // Digest specifies the content digest of the target file. Only valid for
 | 
						|
    // regular files. The strings are formatted in OCI style, i.e. <alg>:<encoded>.
 | 
						|
    // For detailed information about the format, please refer to OCI Image Spec:
 | 
						|
    // https://github.com/opencontainers/image-spec/blob/master/descriptor.md#digests-and-verification
 | 
						|
    // The digests are sorted in lexical order and implementations may choose
 | 
						|
    // which algorithms they prefer.
 | 
						|
    repeated string digest = 8;
 | 
						|
 | 
						|
    // Target defines the target of a hard or soft link. Absolute links start
 | 
						|
    // with a slash and specify the resource relative to the bundle root.
 | 
						|
    // Relative links do not start with a slash and are relative to the
 | 
						|
    // resource path.
 | 
						|
    string target = 9;
 | 
						|
 | 
						|
    // Major specifies the major device number for character and block devices.
 | 
						|
    uint64 major = 10;
 | 
						|
 | 
						|
    // Minor specifies the minor device number for character and block devices.
 | 
						|
    uint64 minor = 11;
 | 
						|
 | 
						|
    // Xattr provides storage for extended attributes for the target resource.
 | 
						|
    repeated XAttr xattr = 12;
 | 
						|
 | 
						|
    // Ads stores one or more alternate data streams for the target resource.
 | 
						|
    repeated ADSEntry ads = 13;
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// XAttr encodes extended attributes for a resource.
 | 
						|
message XAttr {
 | 
						|
    // Name specifies the attribute name.
 | 
						|
    string name = 1;
 | 
						|
 | 
						|
    // Data specifies the associated data for the attribute.
 | 
						|
    bytes data = 2;
 | 
						|
}
 | 
						|
 | 
						|
// ADSEntry encodes information for a Windows Alternate Data Stream.
 | 
						|
message ADSEntry {
 | 
						|
    // Name specifices the stream name.
 | 
						|
    string name = 1;
 | 
						|
 | 
						|
    // Data specifies the stream data.
 | 
						|
    // See also the description about the digest below.
 | 
						|
    bytes data = 2;
 | 
						|
 | 
						|
    // Digest is a CAS representation of the stream data.
 | 
						|
    //
 | 
						|
    // At least one of data or digest MUST be specified, and either one of them
 | 
						|
    // SHOULD be specified.
 | 
						|
    //
 | 
						|
    // How to access the actual data using the digest is implementation-specific,
 | 
						|
    // and implementations can choose not to implement digest.
 | 
						|
    // So, digest SHOULD be used only when the stream data is large.
 | 
						|
    string digest = 3;
 | 
						|
}
 |