diff --git a/vendor.mod b/vendor.mod index f509772faa..7c5a70a990 100644 --- a/vendor.mod +++ b/vendor.mod @@ -63,7 +63,7 @@ require ( github.com/miekg/dns v1.1.57 github.com/mistifyio/go-zfs/v3 v3.0.1 github.com/mitchellh/copystructure v1.2.0 - github.com/moby/buildkit v0.18.1 + github.com/moby/buildkit v0.18.2 github.com/moby/docker-image-spec v1.3.1 github.com/moby/ipvs v1.1.0 github.com/moby/locker v1.0.1 diff --git a/vendor.sum b/vendor.sum index edb55c8473..634a68a4a0 100644 --- a/vendor.sum +++ b/vendor.sum @@ -364,8 +364,8 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mndrix/tap-go v0.0.0-20171203230836-629fa407e90b/go.mod h1:pzzDgJWZ34fGzaAZGFW22KVZDfyrYW+QABMrWnJBnSs= -github.com/moby/buildkit v0.18.1 h1:Iwrz2F/Za2Gjkpwu3aM2LX92AFfJCJe2oNnvGNvh2Rc= -github.com/moby/buildkit v0.18.1/go.mod h1:vCR5CX8NGsPTthTg681+9kdmfvkvqJBXEv71GZe5msU= +github.com/moby/buildkit v0.18.2 h1:l86uBvxh4ntNoUUg3Y0eGTbKg1PbUh6tawJ4Xt75SpQ= +github.com/moby/buildkit v0.18.2/go.mod h1:vCR5CX8NGsPTthTg681+9kdmfvkvqJBXEv71GZe5msU= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/ipvs v1.1.0 h1:ONN4pGaZQgAx+1Scz5RvWV4Q7Gb+mvfRh3NsPS+1XQQ= diff --git a/vendor/github.com/moby/buildkit/client/llb/definition.go b/vendor/github.com/moby/buildkit/client/llb/definition.go index 430ccca134..3c9ee73207 100644 --- a/vendor/github.com/moby/buildkit/client/llb/definition.go +++ b/vendor/github.com/moby/buildkit/client/llb/definition.go @@ -16,7 +16,6 @@ import ( // For example, after marshalling a LLB state and sending over the wire, the // LLB state can be reconstructed from the definition. type DefinitionOp struct { - MarshalCache mu sync.Mutex ops map[digest.Digest]*pb.Op defs map[digest.Digest][]byte diff --git a/vendor/github.com/moby/buildkit/client/llb/diff.go b/vendor/github.com/moby/buildkit/client/llb/diff.go index 96c60dd62c..789e1e1c4d 100644 --- a/vendor/github.com/moby/buildkit/client/llb/diff.go +++ b/vendor/github.com/moby/buildkit/client/llb/diff.go @@ -8,7 +8,7 @@ import ( ) type DiffOp struct { - MarshalCache + cache MarshalCache lower Output upper Output output Output @@ -31,7 +31,10 @@ func (m *DiffOp) Validate(ctx context.Context, constraints *Constraints) error { } func (m *DiffOp) Marshal(ctx context.Context, constraints *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error) { - if dgst, dt, md, srcs, err := m.Load(constraints); err == nil { + cache := m.cache.Acquire() + defer cache.Release() + + if dgst, dt, md, srcs, err := cache.Load(constraints); err == nil { return dgst, dt, md, srcs, nil } if err := m.Validate(ctx, constraints); err != nil { @@ -72,7 +75,7 @@ func (m *DiffOp) Marshal(ctx context.Context, constraints *Constraints) (digest. return "", nil, nil, nil, err } - return m.Store(dt, md, m.constraints.SourceLocations, constraints) + return cache.Store(dt, md, m.constraints.SourceLocations, constraints) } func (m *DiffOp) Output() Output { diff --git a/vendor/github.com/moby/buildkit/client/llb/exec.go b/vendor/github.com/moby/buildkit/client/llb/exec.go index 1e0ca3ffab..a10fb94a26 100644 --- a/vendor/github.com/moby/buildkit/client/llb/exec.go +++ b/vendor/github.com/moby/buildkit/client/llb/exec.go @@ -51,7 +51,7 @@ type mount struct { } type ExecOp struct { - MarshalCache + cache MarshalCache proxyEnv *ProxyEnv root Output mounts []*mount @@ -63,6 +63,9 @@ type ExecOp struct { } func (e *ExecOp) AddMount(target string, source Output, opt ...MountOption) Output { + cache := e.cache.Acquire() + defer cache.Release() + m := &mount{ target: target, source: source, @@ -84,7 +87,7 @@ func (e *ExecOp) AddMount(target string, source Output, opt ...MountOption) Outp } m.output = o } - e.Store(nil, nil, nil, nil) + cache.Store(nil, nil, nil, nil) e.isValidated = false return m.output } @@ -128,7 +131,10 @@ func (e *ExecOp) Validate(ctx context.Context, c *Constraints) error { } func (e *ExecOp) Marshal(ctx context.Context, c *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error) { - if dgst, dt, md, srcs, err := e.Load(c); err == nil { + cache := e.cache.Acquire() + defer cache.Release() + + if dgst, dt, md, srcs, err := cache.Load(c); err == nil { return dgst, dt, md, srcs, nil } @@ -446,7 +452,7 @@ func (e *ExecOp) Marshal(ctx context.Context, c *Constraints) (digest.Digest, [] if err != nil { return "", nil, nil, nil, err } - return e.Store(dt, md, e.constraints.SourceLocations, c) + return cache.Store(dt, md, e.constraints.SourceLocations, c) } func (e *ExecOp) Output() Output { diff --git a/vendor/github.com/moby/buildkit/client/llb/fileop.go b/vendor/github.com/moby/buildkit/client/llb/fileop.go index eabbc0f158..1fa7935769 100644 --- a/vendor/github.com/moby/buildkit/client/llb/fileop.go +++ b/vendor/github.com/moby/buildkit/client/llb/fileop.go @@ -746,7 +746,10 @@ func (ms *marshalState) add(fa *FileAction, c *Constraints) (*fileActionState, e } func (f *FileOp) Marshal(ctx context.Context, c *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error) { - if dgst, dt, md, srcs, err := f.Load(c); err == nil { + cache := f.Acquire() + defer cache.Release() + + if dgst, dt, md, srcs, err := cache.Load(c); err == nil { return dgst, dt, md, srcs, nil } @@ -816,7 +819,7 @@ func (f *FileOp) Marshal(ctx context.Context, c *Constraints) (digest.Digest, [] if err != nil { return "", nil, nil, nil, err } - return f.Store(dt, md, f.constraints.SourceLocations, c) + return cache.Store(dt, md, f.constraints.SourceLocations, c) } func normalizePath(parent, p string, keepSlash bool) string { diff --git a/vendor/github.com/moby/buildkit/client/llb/marshal.go b/vendor/github.com/moby/buildkit/client/llb/marshal.go index e5fda53236..d23a83b118 100644 --- a/vendor/github.com/moby/buildkit/client/llb/marshal.go +++ b/vendor/github.com/moby/buildkit/client/llb/marshal.go @@ -117,30 +117,45 @@ func MarshalConstraints(base, override *Constraints) (*pb.Op, *pb.OpMetadata) { } type MarshalCache struct { - cache sync.Map + mu sync.Mutex + cache map[*Constraints]*marshalCacheResult } -func (mc *MarshalCache) Load(c *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error) { - v, ok := mc.cache.Load(c) +type MarshalCacheInstance struct { + *MarshalCache +} + +func (mc *MarshalCache) Acquire() *MarshalCacheInstance { + mc.mu.Lock() + return &MarshalCacheInstance{mc} +} + +func (mc *MarshalCacheInstance) Load(c *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error) { + res, ok := mc.cache[c] if !ok { return "", nil, nil, nil, cerrdefs.ErrNotFound } - - res := v.(*marshalCacheResult) return res.digest, res.dt, res.md, res.srcs, nil } -func (mc *MarshalCache) Store(dt []byte, md *pb.OpMetadata, srcs []*SourceLocation, c *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error) { +func (mc *MarshalCacheInstance) Store(dt []byte, md *pb.OpMetadata, srcs []*SourceLocation, c *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error) { res := &marshalCacheResult{ digest: digest.FromBytes(dt), dt: dt, md: md, srcs: srcs, } - mc.cache.Store(c, res) + if mc.cache == nil { + mc.cache = make(map[*Constraints]*marshalCacheResult) + } + mc.cache[c] = res return res.digest, res.dt, res.md, res.srcs, nil } +func (mc *MarshalCacheInstance) Release() { + mc.mu.Unlock() +} + type marshalCacheResult struct { digest digest.Digest dt []byte diff --git a/vendor/github.com/moby/buildkit/client/llb/merge.go b/vendor/github.com/moby/buildkit/client/llb/merge.go index 289c84c4f2..880dc1e68c 100644 --- a/vendor/github.com/moby/buildkit/client/llb/merge.go +++ b/vendor/github.com/moby/buildkit/client/llb/merge.go @@ -9,7 +9,7 @@ import ( ) type MergeOp struct { - MarshalCache + cache MarshalCache inputs []Output output Output constraints Constraints @@ -32,7 +32,10 @@ func (m *MergeOp) Validate(ctx context.Context, constraints *Constraints) error } func (m *MergeOp) Marshal(ctx context.Context, constraints *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error) { - if dgst, dt, md, srcs, err := m.Load(constraints); err == nil { + cache := m.cache.Acquire() + defer cache.Release() + + if dgst, dt, md, srcs, err := cache.Load(constraints); err == nil { return dgst, dt, md, srcs, nil } @@ -59,7 +62,7 @@ func (m *MergeOp) Marshal(ctx context.Context, constraints *Constraints) (digest return "", nil, nil, nil, err } - return m.Store(dt, md, m.constraints.SourceLocations, constraints) + return cache.Store(dt, md, m.constraints.SourceLocations, constraints) } func (m *MergeOp) Output() Output { diff --git a/vendor/github.com/moby/buildkit/client/llb/source.go b/vendor/github.com/moby/buildkit/client/llb/source.go index cae3b2fcc5..b08027e1df 100644 --- a/vendor/github.com/moby/buildkit/client/llb/source.go +++ b/vendor/github.com/moby/buildkit/client/llb/source.go @@ -20,7 +20,7 @@ import ( ) type SourceOp struct { - MarshalCache + cache MarshalCache id string attrs map[string]string output Output @@ -49,7 +49,10 @@ func (s *SourceOp) Validate(ctx context.Context, c *Constraints) error { } func (s *SourceOp) Marshal(ctx context.Context, constraints *Constraints) (digest.Digest, []byte, *pb.OpMetadata, []*SourceLocation, error) { - if dgst, dt, md, srcs, err := s.Load(constraints); err == nil { + cache := s.cache.Acquire() + defer cache.Release() + + if dgst, dt, md, srcs, err := cache.Load(constraints); err == nil { return dgst, dt, md, srcs, nil } @@ -82,7 +85,7 @@ func (s *SourceOp) Marshal(ctx context.Context, constraints *Constraints) (diges return "", nil, nil, nil, err } - return s.Store(dt, md, s.constraints.SourceLocations, constraints) + return cache.Store(dt, md, s.constraints.SourceLocations, constraints) } func (s *SourceOp) Output() Output { diff --git a/vendor/github.com/moby/buildkit/frontend/dockerfile/dockerfile2llb/convert.go b/vendor/github.com/moby/buildkit/frontend/dockerfile/dockerfile2llb/convert.go index e0e49dd047..934c3a338e 100644 --- a/vendor/github.com/moby/buildkit/frontend/dockerfile/dockerfile2llb/convert.go +++ b/vendor/github.com/moby/buildkit/frontend/dockerfile/dockerfile2llb/convert.go @@ -376,6 +376,7 @@ func toDispatchState(ctx context.Context, dt []byte, opt ConvertOpt) (*dispatchS } } allDispatchStates.addState(ds) + ds.base = nil // reset base set by addState continue } } @@ -1065,6 +1066,8 @@ func (ds *dispatchState) init() { ds.state = ds.base.state ds.platform = ds.base.platform ds.image = clone(ds.base.image) + // onbuild triggers to not carry over from base stage + ds.image.Config.OnBuild = nil ds.baseImg = cloneX(ds.base.baseImg) // Utilize the same path index as our base image so we propagate // the paths we use back to the base image. diff --git a/vendor/github.com/moby/buildkit/frontend/dockerfile/dockerfile2llb/image.go b/vendor/github.com/moby/buildkit/frontend/dockerfile/dockerfile2llb/image.go index b6b589e776..0f10542afc 100644 --- a/vendor/github.com/moby/buildkit/frontend/dockerfile/dockerfile2llb/image.go +++ b/vendor/github.com/moby/buildkit/frontend/dockerfile/dockerfile2llb/image.go @@ -12,6 +12,7 @@ func clone(src dockerspec.DockerOCIImage) dockerspec.DockerOCIImage { img.Config.Env = append([]string{}, src.Config.Env...) img.Config.Cmd = append([]string{}, src.Config.Cmd...) img.Config.Entrypoint = append([]string{}, src.Config.Entrypoint...) + img.Config.OnBuild = append([]string{}, src.Config.OnBuild...) return img } diff --git a/vendor/modules.txt b/vendor/modules.txt index 2dc12306b0..374f681ebf 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -699,7 +699,7 @@ github.com/mitchellh/hashstructure/v2 # github.com/mitchellh/reflectwalk v1.0.2 ## explicit github.com/mitchellh/reflectwalk -# github.com/moby/buildkit v0.18.1 +# github.com/moby/buildkit v0.18.2 ## explicit; go 1.22.0 github.com/moby/buildkit/api/services/control github.com/moby/buildkit/api/types