mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-09 21:17:09 +08:00
vendor: github.com/moby/buildkit db304eb93126 (v0.13.0-dev)
full diff: d6e142600e...db304eb931
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
This commit is contained in:
26
vendor/github.com/moby/buildkit/client/llb/exec.go
generated
vendored
26
vendor/github.com/moby/buildkit/client/llb/exec.go
generated
vendored
@ -46,6 +46,7 @@ type mount struct {
|
||||
tmpfsOpt TmpfsInfo
|
||||
cacheSharing CacheMountSharingMode
|
||||
noOutput bool
|
||||
contentCache MountContentCache
|
||||
}
|
||||
|
||||
type ExecOp struct {
|
||||
@ -281,6 +282,9 @@ func (e *ExecOp) Marshal(ctx context.Context, c *Constraints) (digest.Digest, []
|
||||
} else if m.source != nil {
|
||||
addCap(&e.constraints, pb.CapExecMountBind)
|
||||
}
|
||||
if m.contentCache != MountContentCacheDefault {
|
||||
addCap(&e.constraints, pb.CapExecMountContentCache)
|
||||
}
|
||||
}
|
||||
|
||||
if len(e.secrets) > 0 {
|
||||
@ -366,6 +370,14 @@ func (e *ExecOp) Marshal(ctx context.Context, c *Constraints) (digest.Digest, []
|
||||
pm.CacheOpt.Sharing = pb.CacheSharingOpt_LOCKED
|
||||
}
|
||||
}
|
||||
switch m.contentCache {
|
||||
case MountContentCacheDefault:
|
||||
pm.ContentCache = pb.MountContentCache_DEFAULT
|
||||
case MountContentCacheOn:
|
||||
pm.ContentCache = pb.MountContentCache_ON
|
||||
case MountContentCacheOff:
|
||||
pm.ContentCache = pb.MountContentCache_OFF
|
||||
}
|
||||
if m.tmpfs {
|
||||
pm.MountType = pb.MountType_TMPFS
|
||||
pm.TmpfsOpt = &pb.TmpfsOpt{
|
||||
@ -492,6 +504,12 @@ func ForceNoOutput(m *mount) {
|
||||
m.noOutput = true
|
||||
}
|
||||
|
||||
func ContentCache(cache MountContentCache) MountOption {
|
||||
return func(m *mount) {
|
||||
m.contentCache = cache
|
||||
}
|
||||
}
|
||||
|
||||
func AsPersistentCacheDir(id string, sharing CacheMountSharingMode) MountOption {
|
||||
return func(m *mount) {
|
||||
m.cacheID = id
|
||||
@ -783,3 +801,11 @@ const (
|
||||
UlimitSigpending UlimitName = "sigpending"
|
||||
UlimitStack UlimitName = "stack"
|
||||
)
|
||||
|
||||
type MountContentCache int
|
||||
|
||||
const (
|
||||
MountContentCacheDefault MountContentCache = iota
|
||||
MountContentCacheOn
|
||||
MountContentCacheOff
|
||||
)
|
||||
|
34
vendor/github.com/moby/buildkit/client/llb/resolver.go
generated
vendored
34
vendor/github.com/moby/buildkit/client/llb/resolver.go
generated
vendored
@ -1,11 +1,7 @@
|
||||
package llb
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
spb "github.com/moby/buildkit/sourcepolicy/pb"
|
||||
digest "github.com/opencontainers/go-digest"
|
||||
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"
|
||||
"github.com/moby/buildkit/client/llb/sourceresolver"
|
||||
)
|
||||
|
||||
// WithMetaResolver adds a metadata resolver to an image
|
||||
@ -31,30 +27,4 @@ func WithLayerLimit(l int) ImageOption {
|
||||
}
|
||||
|
||||
// ImageMetaResolver can resolve image config metadata from a reference
|
||||
type ImageMetaResolver interface {
|
||||
ResolveImageConfig(ctx context.Context, ref string, opt ResolveImageConfigOpt) (string, digest.Digest, []byte, error)
|
||||
}
|
||||
|
||||
type ResolverType int
|
||||
|
||||
const (
|
||||
ResolverTypeRegistry ResolverType = iota
|
||||
ResolverTypeOCILayout
|
||||
)
|
||||
|
||||
type ResolveImageConfigOpt struct {
|
||||
ResolverType
|
||||
|
||||
Platform *ocispecs.Platform
|
||||
ResolveMode string
|
||||
LogName string
|
||||
|
||||
Store ResolveImageConfigOptStore
|
||||
|
||||
SourcePolicies []*spb.Policy
|
||||
}
|
||||
|
||||
type ResolveImageConfigOptStore struct {
|
||||
SessionID string
|
||||
StoreID string
|
||||
}
|
||||
type ImageMetaResolver = sourceresolver.ImageMetaResolver
|
||||
|
19
vendor/github.com/moby/buildkit/client/llb/source.go
generated
vendored
19
vendor/github.com/moby/buildkit/client/llb/source.go
generated
vendored
@ -10,6 +10,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/distribution/reference"
|
||||
"github.com/moby/buildkit/client/llb/sourceresolver"
|
||||
"github.com/moby/buildkit/solver/pb"
|
||||
"github.com/moby/buildkit/util/apicaps"
|
||||
"github.com/moby/buildkit/util/gitutil"
|
||||
@ -136,10 +137,11 @@ func Image(ref string, opts ...ImageOption) State {
|
||||
if p == nil {
|
||||
p = c.Platform
|
||||
}
|
||||
_, _, dt, err := info.metaResolver.ResolveImageConfig(ctx, ref, ResolveImageConfigOpt{
|
||||
Platform: p,
|
||||
ResolveMode: info.resolveMode.String(),
|
||||
ResolverType: ResolverTypeRegistry,
|
||||
_, _, dt, err := info.metaResolver.ResolveImageConfig(ctx, ref, sourceresolver.Opt{
|
||||
Platform: p,
|
||||
ImageOpt: &sourceresolver.ResolveImageOpt{
|
||||
ResolveMode: info.resolveMode.String(),
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
return State{}, err
|
||||
@ -152,10 +154,11 @@ func Image(ref string, opts ...ImageOption) State {
|
||||
if p == nil {
|
||||
p = c.Platform
|
||||
}
|
||||
ref, dgst, dt, err := info.metaResolver.ResolveImageConfig(context.TODO(), ref, ResolveImageConfigOpt{
|
||||
Platform: p,
|
||||
ResolveMode: info.resolveMode.String(),
|
||||
ResolverType: ResolverTypeRegistry,
|
||||
ref, dgst, dt, err := info.metaResolver.ResolveImageConfig(context.TODO(), ref, sourceresolver.Opt{
|
||||
Platform: p,
|
||||
ImageOpt: &sourceresolver.ResolveImageOpt{
|
||||
ResolveMode: info.resolveMode.String(),
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
return State{}, err
|
||||
|
59
vendor/github.com/moby/buildkit/client/llb/sourceresolver/imageresolver.go
generated
vendored
Normal file
59
vendor/github.com/moby/buildkit/client/llb/sourceresolver/imageresolver.go
generated
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
package sourceresolver
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"github.com/distribution/reference"
|
||||
"github.com/moby/buildkit/solver/pb"
|
||||
"github.com/moby/buildkit/util/imageutil"
|
||||
digest "github.com/opencontainers/go-digest"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
type ImageMetaResolver interface {
|
||||
ResolveImageConfig(ctx context.Context, ref string, opt Opt) (string, digest.Digest, []byte, error)
|
||||
}
|
||||
|
||||
type imageMetaResolver struct {
|
||||
mr MetaResolver
|
||||
}
|
||||
|
||||
var _ ImageMetaResolver = &imageMetaResolver{}
|
||||
|
||||
func NewImageMetaResolver(mr MetaResolver) ImageMetaResolver {
|
||||
return &imageMetaResolver{
|
||||
mr: mr,
|
||||
}
|
||||
}
|
||||
|
||||
func (imr *imageMetaResolver) ResolveImageConfig(ctx context.Context, ref string, opt Opt) (string, digest.Digest, []byte, error) {
|
||||
parsed, err := reference.ParseNormalizedNamed(ref)
|
||||
if err != nil {
|
||||
return "", "", nil, errors.Wrapf(err, "could not parse reference %q", ref)
|
||||
}
|
||||
ref = parsed.String()
|
||||
op := &pb.SourceOp{
|
||||
Identifier: "docker-image://" + ref,
|
||||
}
|
||||
if opt := opt.OCILayoutOpt; opt != nil {
|
||||
op.Identifier = "oci-layout://" + ref
|
||||
op.Attrs = map[string]string{}
|
||||
if opt.Store.SessionID != "" {
|
||||
op.Attrs[pb.AttrOCILayoutSessionID] = opt.Store.SessionID
|
||||
}
|
||||
if opt.Store.StoreID != "" {
|
||||
op.Attrs[pb.AttrOCILayoutStoreID] = opt.Store.StoreID
|
||||
}
|
||||
}
|
||||
res, err := imr.mr.ResolveSourceMetadata(ctx, op, opt)
|
||||
if err != nil {
|
||||
return "", "", nil, errors.Wrapf(err, "failed to resolve source metadata for %s", ref)
|
||||
}
|
||||
if res.Image == nil {
|
||||
return "", "", nil, &imageutil.ResolveToNonImageError{Ref: ref, Updated: res.Op.Identifier}
|
||||
}
|
||||
ref = strings.TrimPrefix(res.Op.Identifier, "docker-image://")
|
||||
ref = strings.TrimPrefix(ref, "oci-layout://")
|
||||
return ref, res.Image.Digest, res.Image.Config, nil
|
||||
}
|
54
vendor/github.com/moby/buildkit/client/llb/sourceresolver/types.go
generated
vendored
Normal file
54
vendor/github.com/moby/buildkit/client/llb/sourceresolver/types.go
generated
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
package sourceresolver
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/moby/buildkit/solver/pb"
|
||||
spb "github.com/moby/buildkit/sourcepolicy/pb"
|
||||
digest "github.com/opencontainers/go-digest"
|
||||
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"
|
||||
)
|
||||
|
||||
type ResolverType int
|
||||
|
||||
const (
|
||||
ResolverTypeRegistry ResolverType = iota
|
||||
ResolverTypeOCILayout
|
||||
)
|
||||
|
||||
type MetaResolver interface {
|
||||
ResolveSourceMetadata(ctx context.Context, op *pb.SourceOp, opt Opt) (*MetaResponse, error)
|
||||
}
|
||||
|
||||
type Opt struct {
|
||||
LogName string
|
||||
SourcePolicies []*spb.Policy
|
||||
Platform *ocispecs.Platform
|
||||
|
||||
ImageOpt *ResolveImageOpt
|
||||
OCILayoutOpt *ResolveOCILayoutOpt
|
||||
}
|
||||
|
||||
type MetaResponse struct {
|
||||
Op *pb.SourceOp
|
||||
|
||||
Image *ResolveImageResponse
|
||||
}
|
||||
|
||||
type ResolveImageOpt struct {
|
||||
ResolveMode string
|
||||
}
|
||||
|
||||
type ResolveImageResponse struct {
|
||||
Digest digest.Digest
|
||||
Config []byte
|
||||
}
|
||||
|
||||
type ResolveOCILayoutOpt struct {
|
||||
Store ResolveImageConfigOptStore
|
||||
}
|
||||
|
||||
type ResolveImageConfigOptStore struct {
|
||||
SessionID string
|
||||
StoreID string
|
||||
}
|
Reference in New Issue
Block a user