vendor: update buildkit to v0.19.0-rc1

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
Tonis Tiigi
2025-01-14 14:20:26 -08:00
parent 630066bfc5
commit 44fa243d58
1910 changed files with 95196 additions and 50438 deletions

View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.35.1
// protoc-gen-go v1.35.2
// protoc v3.11.4
// source: github.com/moby/buildkit/util/apicaps/pb/caps.proto

View File

@ -8,7 +8,7 @@ import (
"sync"
"time"
"github.com/containerd/containerd/content"
"github.com/containerd/containerd/v2/core/content"
cerrdefs "github.com/containerd/errdefs"
digest "github.com/opencontainers/go-digest"
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"

View File

@ -6,8 +6,8 @@ import (
"strings"
"sync"
"github.com/containerd/containerd/content"
"github.com/containerd/containerd/images"
"github.com/containerd/containerd/v2/core/content"
"github.com/containerd/containerd/v2/core/images"
"github.com/moby/buildkit/util/resolver/limited"
"github.com/moby/buildkit/util/resolver/retryhandler"
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"

View File

@ -4,8 +4,8 @@ import (
"context"
"io"
"github.com/containerd/containerd/content"
"github.com/containerd/containerd/remotes"
"github.com/containerd/containerd/v2/core/content"
"github.com/containerd/containerd/v2/core/remotes"
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/pkg/errors"
)

View File

@ -4,7 +4,7 @@ import (
"context"
"sync"
"github.com/containerd/containerd/content"
"github.com/containerd/containerd/v2/core/content"
cerrdefs "github.com/containerd/errdefs"
"github.com/moby/buildkit/session"
digest "github.com/opencontainers/go-digest"

View File

@ -6,8 +6,8 @@ import (
"sync"
"time"
"github.com/containerd/containerd/content"
"github.com/containerd/containerd/remotes"
"github.com/containerd/containerd/v2/core/content"
"github.com/containerd/containerd/v2/core/remotes"
cerrdefs "github.com/containerd/errdefs"
digest "github.com/opencontainers/go-digest"
"github.com/pkg/errors"

View File

@ -5,9 +5,9 @@ import (
"net/http"
"sync"
"github.com/containerd/containerd/content"
"github.com/containerd/containerd/remotes"
"github.com/containerd/containerd/remotes/docker"
"github.com/containerd/containerd/v2/core/content"
"github.com/containerd/containerd/v2/core/remotes"
"github.com/containerd/containerd/v2/core/remotes/docker"
cerrdefs "github.com/containerd/errdefs"
"github.com/moby/buildkit/version"
"github.com/moby/locker"

View File

@ -4,8 +4,8 @@ import (
"net/url"
"strings"
"github.com/containerd/containerd/content"
"github.com/containerd/containerd/reference"
"github.com/containerd/containerd/v2/core/content"
"github.com/containerd/containerd/v2/pkg/reference"
)
func HasSource(info content.Info, refspec reference.Spec) (bool, error) {

View File

@ -3,7 +3,7 @@ package contentutil
import (
"context"
"github.com/containerd/containerd/content"
"github.com/containerd/containerd/v2/core/content"
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"
)

View File

@ -3,7 +3,7 @@ package contentutil
import (
"context"
"github.com/containerd/containerd/remotes"
"github.com/containerd/containerd/v2/core/remotes"
intoto "github.com/in-toto/in-toto-golang/in_toto"
)

View File

@ -0,0 +1,22 @@
//go:build freebsd
package disk
import (
"syscall"
"github.com/pkg/errors"
)
func GetDiskStat(root string) (DiskStat, error) {
var st syscall.Statfs_t
if err := syscall.Statfs(root, &st); err != nil {
return DiskStat{}, errors.Wrapf(err, "could not stat fs at %s", root)
}
return DiskStat{
Total: int64(st.Bsize) * int64(st.Blocks),
Free: int64(st.Bsize) * int64(st.Bfree),
Available: int64(st.Bsize) * int64(st.Bavail),
}, nil
}

View File

@ -0,0 +1,21 @@
//go:build netbsd
package disk
import (
"github.com/pkg/errors"
"golang.org/x/sys/unix"
)
func GetDiskStat(root string) (DiskStat, error) {
var st unix.Statvfs_t
if err := unix.Statvfs(root, &st); err != nil {
return DiskStat{}, errors.Wrapf(err, "could not stat fs at %s", root)
}
return DiskStat{
Total: int64(st.Frsize) * int64(st.Blocks),
Free: int64(st.Frsize) * int64(st.Bfree),
Available: int64(st.Frsize) * int64(st.Bavail),
}, nil
}

View File

@ -1,4 +1,4 @@
//go:build !windows && !openbsd
//go:build !windows && !freebsd && !netbsd && !openbsd
package disk

View File

@ -7,12 +7,12 @@ import (
"sync"
"time"
"github.com/containerd/containerd/content"
"github.com/containerd/containerd/images"
"github.com/containerd/containerd/leases"
"github.com/containerd/containerd/reference"
"github.com/containerd/containerd/remotes"
"github.com/containerd/containerd/remotes/docker"
"github.com/containerd/containerd/v2/core/content"
"github.com/containerd/containerd/v2/core/images"
"github.com/containerd/containerd/v2/core/leases"
"github.com/containerd/containerd/v2/core/remotes"
"github.com/containerd/containerd/v2/core/remotes/docker"
"github.com/containerd/containerd/v2/pkg/reference"
"github.com/containerd/platforms"
intoto "github.com/in-toto/in-toto-golang/in_toto"
srctypes "github.com/moby/buildkit/source/types"

View File

@ -7,7 +7,7 @@ import (
"strings"
"time"
"github.com/containerd/containerd/remotes"
"github.com/containerd/containerd/v2/core/remotes"
dockerspec "github.com/moby/docker-image-spec/specs-go/v1"
digest "github.com/opencontainers/go-digest"
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"

View File

@ -5,8 +5,8 @@ import (
"sync"
"time"
"github.com/containerd/containerd/leases"
"github.com/containerd/containerd/namespaces"
"github.com/containerd/containerd/v2/core/leases"
"github.com/containerd/containerd/v2/pkg/namespaces"
"github.com/pkg/errors"
)

View File

@ -7,9 +7,9 @@ import (
"strings"
"sync"
"github.com/containerd/containerd/content"
"github.com/containerd/containerd/images"
"github.com/containerd/containerd/remotes"
"github.com/containerd/containerd/v2/core/content"
"github.com/containerd/containerd/v2/core/images"
"github.com/containerd/containerd/v2/core/remotes"
"github.com/distribution/reference"
"github.com/moby/buildkit/util/bklog"
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"

View File

@ -8,8 +8,8 @@ import (
"syscall"
"time"
"github.com/containerd/containerd/images"
remoteserrors "github.com/containerd/containerd/remotes/errors"
"github.com/containerd/containerd/v2/core/images"
remoteserrors "github.com/containerd/containerd/v2/core/remotes/errors"
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/pkg/errors"
)

View File

@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.35.1
// protoc-gen-go v1.35.2
// protoc v3.11.4
// source: github.com/moby/buildkit/util/stack/stack.proto

View File

@ -16,7 +16,7 @@ const DefaultPathEnvUnix = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/s
// DefaultPathEnvWindows is windows style list of directories to search for
// executables. Each directory is separated from the next by a colon
// ';' character .
const DefaultPathEnvWindows = "c:\\Windows\\System32;c:\\Windows"
const DefaultPathEnvWindows = "c:\\Windows\\System32;c:\\Windows;C:\\Windows\\System32\\WindowsPowerShell\\v1.0"
func DefaultPathEnv(os string) string {
if os == "windows" {

View File

@ -4,8 +4,8 @@ import (
"context"
"encoding/json"
"github.com/containerd/containerd/content"
"github.com/containerd/containerd/images"
"github.com/containerd/containerd/v2/core/content"
"github.com/containerd/containerd/v2/core/images"
"github.com/containerd/platforms"
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/pkg/errors"

View File

@ -5,9 +5,9 @@ import (
"encoding/json"
"os"
"github.com/containerd/containerd/content"
"github.com/containerd/containerd/content/local"
"github.com/containerd/containerd/images/archive"
"github.com/containerd/containerd/v2/core/content"
"github.com/containerd/containerd/v2/core/images/archive"
"github.com/containerd/containerd/v2/plugins/content/local"
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"
)

View File

@ -17,8 +17,8 @@ import (
"testing"
"time"
"github.com/containerd/containerd/content"
"github.com/containerd/containerd/remotes/docker"
"github.com/containerd/containerd/v2/core/content"
"github.com/containerd/containerd/v2/core/remotes/docker"
"github.com/gofrs/flock"
"github.com/moby/buildkit/util/appcontext"
"github.com/moby/buildkit/util/contentutil"
@ -39,6 +39,7 @@ type Backend interface {
Address() string
DockerAddress() string
ContainerdAddress() string
DebugAddress() string
Rootless() bool
NetNSDetached() bool
@ -200,7 +201,7 @@ func Run(t *testing.T, testCases []Test, opt ...TestOpt) {
ctx, cancel := context.WithCancelCause(ctx)
defer func() { cancel(errors.WithStack(context.Canceled)) }()
sb, closer, err := newSandbox(ctx, br, getMirror(), mv)
sb, closer, err := newSandbox(ctx, t, br, getMirror(), mv)
require.NoError(t, err)
t.Cleanup(func() { _ = closer() })
defer func() {

View File

@ -5,11 +5,15 @@ import (
"bytes"
"context"
"fmt"
"io"
"net"
"net/http"
"os"
"os/exec"
"path/filepath"
"strings"
"testing"
"time"
"github.com/google/shlex"
"github.com/moby/buildkit/util/bklog"
@ -18,6 +22,8 @@ import (
const buildkitdConfigFile = "buildkitd.toml"
const maxSandboxTimeout = 5 * time.Minute
type sandbox struct {
Backend
@ -79,7 +85,7 @@ func (sb *sandbox) Value(k string) interface{} {
return sb.mv.values[k].value
}
func newSandbox(ctx context.Context, w Worker, mirror string, mv matrixValue) (s Sandbox, cl func() error, err error) {
func newSandbox(ctx context.Context, t *testing.T, w Worker, mirror string, mv matrixValue) (s Sandbox, cl func() error, err error) {
cfg := &BackendConfig{
Logs: make(map[string]*bytes.Buffer),
}
@ -110,6 +116,28 @@ func newSandbox(ctx context.Context, w Worker, mirror string, mv matrixValue) (s
}
deferF.Append(closer)
ctx, cancel := context.WithCancelCause(ctx)
go func() {
timeout := maxSandboxTimeout
if strings.Contains(t.Name(), "ExtraTimeout") {
timeout *= 3
}
timeoutContext, cancelTimeout := context.WithTimeoutCause(ctx, timeout, errors.WithStack(context.DeadlineExceeded))
defer cancelTimeout()
<-timeoutContext.Done()
select {
case <-ctx.Done():
return
default:
t.Logf("sandbox timeout reached, stopping worker")
if addr := b.DebugAddress(); addr != "" {
printBuildkitdDebugLogs(t, addr)
}
cancel(errors.WithStack(context.Canceled))
}
}()
return &sandbox{
Backend: b,
logs: cfg.Logs,
@ -120,6 +148,30 @@ func newSandbox(ctx context.Context, w Worker, mirror string, mv matrixValue) (s
}, cl, nil
}
func printBuildkitdDebugLogs(t *testing.T, addr string) {
if !strings.HasPrefix(addr, socketScheme) {
t.Logf("invalid debug address %q", addr)
return
}
client := &http.Client{Transport: &http.Transport{DialContext: func(_ context.Context, _, _ string) (net.Conn, error) {
return dialPipe(strings.TrimPrefix(addr, socketScheme))
}}}
resp, err := client.Get("http://localhost/debug/pprof/goroutine?debug=2") //nolint:noctx // never cancel
if err != nil {
t.Fatalf("failed to get debug logs: %v", err)
return
}
defer resp.Body.Close()
dt, err := io.ReadAll(resp.Body)
if err != nil {
t.Fatalf("failed to read debug logs: %v", err)
return
}
t.Logf("buildkitd debug logs:\n%s", dt)
}
func RootlessSupported(uid int) bool {
cmd := exec.Command("sudo", "-u", fmt.Sprintf("#%d", uid), "-i", "--", "exec", "unshare", "-U", "true") //nolint:gosec // test utility
b, err := cmd.CombinedOutput()

View File

@ -9,6 +9,7 @@ type backend struct {
address string
dockerAddress string
containerdAddress string
debugAddress string
rootless bool
netnsDetached bool
snapshotter string
@ -29,6 +30,10 @@ func (b backend) ContainerdAddress() string {
return b.containerdAddress
}
func (b backend) DebugAddress() string {
return b.debugAddress
}
func (b backend) Rootless() bool {
return b.rootless
}

View File

@ -232,7 +232,7 @@ disabled_plugins = ["io.containerd.grpc.v1.cri"]
"nsenter", "-U", "--preserve-credentials", "-m", "-t", fmt.Sprintf("%d", pid)},
append(buildkitdArgs, "--containerd-worker-snapshotter=native")...)
}
buildkitdSock, stop, err := runBuildkitd(cfg, buildkitdArgs, cfg.Logs, c.UID, c.GID, c.ExtraEnv)
buildkitdSock, debugSock, stop, err := runBuildkitd(cfg, buildkitdArgs, cfg.Logs, c.UID, c.GID, c.ExtraEnv)
if err != nil {
integration.PrintLogs(cfg.Logs, log.Println)
return nil, nil, err
@ -242,6 +242,7 @@ disabled_plugins = ["io.containerd.grpc.v1.cri"]
return backend{
address: buildkitdSock,
containerdAddress: address,
debugAddress: debugSock,
rootless: rootless,
netnsDetached: false,
snapshotter: c.Snapshotter,

View File

@ -77,7 +77,7 @@ func (s *OCI) New(ctx context.Context, cfg *integration.BackendConfig) (integrat
if runtime.GOOS != "windows" && s.Snapshotter != "native" {
extraEnv = append(extraEnv, "BUILDKIT_DEBUG_FORCE_OVERLAY_DIFF=true")
}
buildkitdSock, stop, err := runBuildkitd(cfg, buildkitdArgs, cfg.Logs, s.UID, s.GID, extraEnv)
buildkitdSock, debugSock, stop, err := runBuildkitd(cfg, buildkitdArgs, cfg.Logs, s.UID, s.GID, extraEnv)
if err != nil {
integration.PrintLogs(cfg.Logs, log.Println)
return nil, nil, err
@ -85,6 +85,7 @@ func (s *OCI) New(ctx context.Context, cfg *integration.BackendConfig) (integrat
return backend{
address: buildkitdSock,
debugAddress: debugSock,
rootless: s.UID != 0,
netnsDetached: s.NetNSDetached(),
snapshotter: s.Snapshotter,

View File

@ -31,7 +31,7 @@ func runBuildkitd(
logs map[string]*bytes.Buffer,
uid, gid int,
extraEnv []string,
) (address string, cl func() error, err error) {
) (_, _ string, cl func() error, err error) {
deferF := &integration.MultiCloser{}
cl = deferF.F()
@ -44,35 +44,36 @@ func runBuildkitd(
tmpdir, err := os.MkdirTemp("", "bktest_buildkitd")
if err != nil {
return "", nil, err
return "", "", nil, err
}
if err := chown(tmpdir, uid, gid); err != nil {
return "", nil, err
return "", "", nil, err
}
if err := os.MkdirAll(filepath.Join(tmpdir, "tmp"), 0711); err != nil {
return "", nil, err
return "", "", nil, err
}
if err := chown(filepath.Join(tmpdir, "tmp"), uid, gid); err != nil {
return "", nil, err
return "", "", nil, err
}
deferF.Append(func() error { return os.RemoveAll(tmpdir) })
cfgfile, err := integration.WriteConfig(
append(conf.DaemonConfig, withOTELSocketPath(getTraceSocketPath(tmpdir))))
if err != nil {
return "", nil, err
return "", "", nil, err
}
deferF.Append(func() error {
return os.RemoveAll(filepath.Dir(cfgfile))
})
args = append(args, "--config="+cfgfile)
address = getBuildkitdAddr(tmpdir)
address := getBuildkitdAddr(tmpdir)
debugAddress := getBuildkitdDebugAddr(tmpdir)
args = append(args, "--root", tmpdir, "--addr", address, "--debug")
args = append(args, "--root", tmpdir, "--addr", address, "--debugaddr", debugAddress, "--debug")
cmd := exec.Command(args[0], args[1:]...) //nolint:gosec // test utility
cmd.Env = append(
os.Environ(),
@ -88,12 +89,12 @@ func runBuildkitd(
stop, err := integration.StartCmd(cmd, logs)
if err != nil {
return "", nil, err
return "", "", nil, err
}
deferF.Append(stop)
if err := integration.WaitSocket(address, 15*time.Second, cmd); err != nil {
return "", nil, err
return "", "", nil, err
}
// separated out since it's not required in windows
@ -101,5 +102,5 @@ func runBuildkitd(
return mountInfo(tmpdir)
})
return address, cl, err
return address, debugAddress, cl, err
}

View File

@ -34,6 +34,10 @@ func getBuildkitdAddr(tmpdir string) string {
return "unix://" + filepath.Join(tmpdir, "buildkitd.sock")
}
func getBuildkitdDebugAddr(tmpdir string) string {
return "unix://" + filepath.Join(tmpdir, "buildkitd-debug.sock")
}
func getTraceSocketPath(tmpdir string) string {
return filepath.Join(tmpdir, "otel-grpc.sock")
}

View File

@ -22,6 +22,10 @@ func getBuildkitdAddr(tmpdir string) string {
return "npipe:////./pipe/buildkitd-" + filepath.Base(tmpdir)
}
func getBuildkitdDebugAddr(tmpdir string) string {
return "npipe:////./pipe/buildkitd-debug-" + filepath.Base(tmpdir)
}
func getTraceSocketPath(tmpdir string) string {
return `\\.\pipe\buildkit-otel-grpc-` + filepath.Base(tmpdir)
}