Merge pull request #52606 from tonistiigi/buildkit-v0.30.0-rc2

vendor: update buildkit to v0.30.0-rc2
This commit is contained in:
Sebastiaan van Stijn
2026-05-12 13:09:16 +02:00
committed by GitHub
6 changed files with 43 additions and 16 deletions

2
go.mod
View File

@@ -55,7 +55,7 @@ require (
github.com/miekg/dns v1.1.72
github.com/mistifyio/go-zfs/v4 v4.0.0
github.com/mitchellh/copystructure v1.2.0
github.com/moby/buildkit v0.30.0-rc1.0.20260507164240-1da7e716224c // v0.30.0-dev
github.com/moby/buildkit v0.30.0-rc2
github.com/moby/docker-image-spec v1.3.1
github.com/moby/go-archive v0.2.0
github.com/moby/ipvs v1.1.0

8
go.sum
View File

@@ -226,8 +226,8 @@ github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi
github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/docker/cli v29.4.2+incompatible h1:nhxMY4v7wB0QMMc5ppeqV6FBMwzqv0n4t2gogu/R2DQ=
github.com/docker/cli v29.4.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/cli v29.4.3+incompatible h1:u+UliYm2J/rYrIh2FqHQg32neRG8GjbvNuwQRTzGspU=
github.com/docker/cli v29.4.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/docker-credential-helpers v0.9.5 h1:EFNN8DHvaiK8zVqFA2DT6BjXE0GzfLOZ38ggPTKePkY=
@@ -549,8 +549,8 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/moby/buildkit v0.30.0-rc1.0.20260507164240-1da7e716224c h1:dY4a8AqbgVfWJMWur87cx5z8dYb9+DkbOKH883M8CIM=
github.com/moby/buildkit v0.30.0-rc1.0.20260507164240-1da7e716224c/go.mod h1:4ha5jioeEAREXOpmpEUSQ4bKZON1yEc/co9I57+zCZs=
github.com/moby/buildkit v0.30.0-rc2 h1:tmMhOC1MK0TUpA6w4lWF5d4GxjSNixVyG8Oe7kdW8As=
github.com/moby/buildkit v0.30.0-rc2/go.mod h1:k2wuw5ddaOqzh58RLt+mBn2XhK34gi6+gd0faONQ1xU=
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/go-archive v0.2.0 h1:zg5QDUM2mi0JIM9fdQZWC7U8+2ZfixfTYoHL7rWUcP8=

View File

@@ -8,6 +8,7 @@ import (
"github.com/containerd/containerd/v2/core/content"
"github.com/containerd/containerd/v2/core/images"
remoteserrors "github.com/containerd/containerd/v2/core/remotes/errors"
v1 "github.com/moby/buildkit/cache/remotecache/v1"
cacheimporttypes "github.com/moby/buildkit/cache/remotecache/v1/types"
"github.com/moby/buildkit/session"
@@ -15,6 +16,7 @@ import (
"github.com/moby/buildkit/util/bklog"
"github.com/moby/buildkit/util/compression"
"github.com/moby/buildkit/util/contentutil"
"github.com/moby/buildkit/util/errutil"
"github.com/moby/buildkit/util/progress"
"github.com/moby/buildkit/util/progress/logs"
"github.com/moby/buildkit/util/resolver/limited"
@@ -214,6 +216,7 @@ func (ce *contentCacheExporter) Finalize(ctx context.Context) (map[string]string
dgstPair := descs[desc.Digest]
layerDone := progress.OneOff(ctx, fmt.Sprintf("writing layer %s", desc.Digest))
if err := contentutil.Copy(ctx, ce.ingester, dgstPair.Provider, desc, ce.ref, logs.LoggerFromContext(ctx)); err != nil {
err = withRemoteCacheErrorDetails(err)
return nil, layerDone(errors.Wrap(err, "error writing layer blob"))
}
layerDone(nil)
@@ -242,6 +245,7 @@ func (ce *contentCacheExporter) Finalize(ctx context.Context) (map[string]string
}
configDone := progress.OneOff(ctx, fmt.Sprintf("writing config %s", dgst))
if err := content.WriteBlob(ctx, ce.ingester, dgst.String(), bytes.NewReader(dt), desc); err != nil {
err = withRemoteCacheErrorDetails(err)
return nil, configDone(errors.Wrap(err, "error writing config blob"))
}
configDone(nil)
@@ -266,6 +270,7 @@ func (ce *contentCacheExporter) Finalize(ctx context.Context) (map[string]string
}
mfstDone := progress.OneOff(ctx, mfstLog)
if err := content.WriteBlob(ctx, ce.ingester, dgst.String(), bytes.NewReader(dt), desc); err != nil {
err = withRemoteCacheErrorDetails(err)
return nil, mfstDone(errors.Wrap(err, "error writing manifest blob"))
}
descJSON, err := json.Marshal(desc)
@@ -277,3 +282,11 @@ func (ce *contentCacheExporter) Finalize(ctx context.Context) (map[string]string
return res, nil
}
func withRemoteCacheErrorDetails(err error) error {
var statusErr remoteserrors.ErrUnexpectedStatus
if errors.As(err, &statusErr) {
return errutil.WithDetails(err)
}
return err
}

View File

@@ -3,6 +3,7 @@ package llbsolver
import (
"context"
"fmt"
"slices"
"strconv"
"strings"
"sync"
@@ -50,12 +51,13 @@ type provenanceBridge struct {
}
func (b *provenanceBridge) eachRef(f func(r solver.ResultProxy) error) error {
for _, b := range b.builds {
builds, subBridges, _ := b.snapshot()
for _, b := range builds {
if err := b.res.EachRef(f); err != nil {
return err
}
}
for _, b := range b.subBridges {
for _, b := range subBridges {
if err := b.eachRef(f); err != nil {
return err
}
@@ -64,12 +66,20 @@ func (b *provenanceBridge) eachRef(f func(r solver.ResultProxy) error) error {
}
func (b *provenanceBridge) allImages() []provenancetypes.ImageSource {
res := make([]provenancetypes.ImageSource, 0, len(b.images))
res = append(res, b.images...)
for _, sb := range b.subBridges {
res = append(res, sb.allImages()...)
_, subBridges, images := b.snapshot()
for _, sb := range subBridges {
images = append(images, sb.allImages()...)
}
return res
return images
}
func (b *provenanceBridge) snapshot() ([]resultWithBridge, []*provenanceBridge, []provenancetypes.ImageSource) {
if b == nil {
return nil, nil, nil
}
b.mu.Lock()
defer b.mu.Unlock()
return slices.Clone(b.builds), slices.Clone(b.subBridges), slices.Clone(b.images)
}
func (b *provenanceBridge) requests(r *frontend.Result) (*resultRequests, error) {
@@ -120,12 +130,13 @@ func (b *provenanceBridge) requests(r *frontend.Result) (*resultRequests, error)
}
func (b *provenanceBridge) findByResult(rp solver.ResultProxy) (*resultWithBridge, bool) {
for _, br := range b.subBridges {
builds, subBridges, _ := b.snapshot()
for _, br := range subBridges {
if req, ok := br.findByResult(rp); ok {
return req, true
}
}
for _, bld := range b.builds {
for _, bld := range builds {
found := false
bld.res.EachRef(func(r solver.ResultProxy) error {
if r.ID() == rp.ID() {
@@ -197,7 +208,9 @@ func (b *provenanceBridge) Solve(ctx context.Context, req frontend.SolveRequest,
}
return nil, fe.WrapError(err)
}
wb.mu.Lock()
wb.builds = append(wb.builds, resultWithBridge{res: res, bridge: wb})
wb.mu.Unlock()
b.mu.Lock()
b.subBridges = append(b.subBridges, wb)
b.mu.Unlock()

View File

@@ -165,7 +165,8 @@ func (b *provenanceBridge) releaseProvenanceRefs() {
if b == nil || b.provenanceStore == nil {
return
}
for _, sb := range b.subBridges {
_, subBridges, _ := b.snapshot()
for _, sb := range subBridges {
sb.releaseProvenanceRefs()
}
b.mu.Lock()

2
vendor/modules.txt vendored
View File

@@ -978,7 +978,7 @@ github.com/mitchellh/hashstructure/v2
# github.com/mitchellh/reflectwalk v1.0.2
## explicit
github.com/mitchellh/reflectwalk
# github.com/moby/buildkit v0.30.0-rc1.0.20260507164240-1da7e716224c
# github.com/moby/buildkit v0.30.0-rc2
## explicit; go 1.25.5
github.com/moby/buildkit/api/services/control
github.com/moby/buildkit/api/types