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:
58
vendor/github.com/moby/buildkit/util/imageutil/config.go
generated
vendored
58
vendor/github.com/moby/buildkit/util/imageutil/config.go
generated
vendored
@ -4,7 +4,6 @@ import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
@ -16,10 +15,7 @@ import (
|
||||
"github.com/containerd/containerd/remotes"
|
||||
"github.com/containerd/containerd/remotes/docker"
|
||||
intoto "github.com/in-toto/in-toto-golang/in_toto"
|
||||
"github.com/moby/buildkit/solver/pb"
|
||||
srctypes "github.com/moby/buildkit/source/types"
|
||||
"github.com/moby/buildkit/sourcepolicy"
|
||||
spb "github.com/moby/buildkit/sourcepolicy/pb"
|
||||
"github.com/moby/buildkit/util/contentutil"
|
||||
"github.com/moby/buildkit/util/leaseutil"
|
||||
"github.com/moby/buildkit/util/resolver/limited"
|
||||
@ -63,8 +59,7 @@ func (e ResolveToNonImageError) Error() string {
|
||||
return fmt.Sprintf("ref mutated by policy to non-image: %s://%s -> %s", srctypes.DockerImageScheme, e.Ref, e.Updated)
|
||||
}
|
||||
|
||||
func Config(ctx context.Context, str string, resolver remotes.Resolver, cache ContentCache, leaseManager leases.Manager, p *ocispecs.Platform, spls []*spb.Policy) (string, digest.Digest, []byte, error) {
|
||||
// TODO: fix buildkit to take interface instead of struct
|
||||
func Config(ctx context.Context, str string, resolver remotes.Resolver, cache ContentCache, leaseManager leases.Manager, p *ocispecs.Platform) (digest.Digest, []byte, error) {
|
||||
var platform platforms.MatchComparer
|
||||
if p != nil {
|
||||
platform = platforms.Only(*p)
|
||||
@ -73,44 +68,13 @@ func Config(ctx context.Context, str string, resolver remotes.Resolver, cache Co
|
||||
}
|
||||
ref, err := reference.Parse(str)
|
||||
if err != nil {
|
||||
return "", "", nil, errors.WithStack(err)
|
||||
}
|
||||
|
||||
op := &pb.Op{
|
||||
Op: &pb.Op_Source{
|
||||
Source: &pb.SourceOp{
|
||||
Identifier: srctypes.DockerImageScheme + "://" + ref.String(),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
mut, err := sourcepolicy.NewEngine(spls).Evaluate(ctx, op)
|
||||
if err != nil {
|
||||
return "", "", nil, errors.Wrap(err, "could not resolve image due to policy")
|
||||
}
|
||||
|
||||
if mut {
|
||||
var (
|
||||
t string
|
||||
ok bool
|
||||
)
|
||||
t, newRef, ok := strings.Cut(op.GetSource().GetIdentifier(), "://")
|
||||
if !ok {
|
||||
return "", "", nil, errors.Errorf("could not parse ref: %s", op.GetSource().GetIdentifier())
|
||||
}
|
||||
if ok && t != srctypes.DockerImageScheme {
|
||||
return "", "", nil, &ResolveToNonImageError{Ref: str, Updated: newRef}
|
||||
}
|
||||
ref, err = reference.Parse(newRef)
|
||||
if err != nil {
|
||||
return "", "", nil, errors.WithStack(err)
|
||||
}
|
||||
return "", nil, errors.WithStack(err)
|
||||
}
|
||||
|
||||
if leaseManager != nil {
|
||||
ctx2, done, err := leaseutil.WithLease(ctx, leaseManager, leases.WithExpiration(5*time.Minute), leaseutil.MakeTemporary)
|
||||
if err != nil {
|
||||
return "", "", nil, errors.WithStack(err)
|
||||
return "", nil, errors.WithStack(err)
|
||||
}
|
||||
ctx = ctx2
|
||||
defer func() {
|
||||
@ -141,18 +105,18 @@ func Config(ctx context.Context, str string, resolver remotes.Resolver, cache Co
|
||||
if desc.MediaType == "" {
|
||||
_, desc, err = resolver.Resolve(ctx, ref.String())
|
||||
if err != nil {
|
||||
return "", "", nil, err
|
||||
return "", nil, err
|
||||
}
|
||||
}
|
||||
|
||||
fetcher, err := resolver.Fetcher(ctx, ref.String())
|
||||
if err != nil {
|
||||
return "", "", nil, err
|
||||
return "", nil, err
|
||||
}
|
||||
|
||||
if desc.MediaType == images.MediaTypeDockerSchema1Manifest {
|
||||
dgst, dt, err := readSchema1Config(ctx, ref.String(), desc, fetcher, cache)
|
||||
return ref.String(), dgst, dt, err
|
||||
return dgst, dt, err
|
||||
}
|
||||
|
||||
children := childrenConfigHandler(cache, platform)
|
||||
@ -160,7 +124,7 @@ func Config(ctx context.Context, str string, resolver remotes.Resolver, cache Co
|
||||
|
||||
dslHandler, err := docker.AppendDistributionSourceLabel(cache, ref.String())
|
||||
if err != nil {
|
||||
return "", "", nil, err
|
||||
return "", nil, err
|
||||
}
|
||||
|
||||
handlers := []images.Handler{
|
||||
@ -169,19 +133,19 @@ func Config(ctx context.Context, str string, resolver remotes.Resolver, cache Co
|
||||
children,
|
||||
}
|
||||
if err := images.Dispatch(ctx, images.Handlers(handlers...), nil, desc); err != nil {
|
||||
return "", "", nil, err
|
||||
return "", nil, err
|
||||
}
|
||||
config, err := images.Config(ctx, cache, desc, platform)
|
||||
if err != nil {
|
||||
return "", "", nil, err
|
||||
return "", nil, err
|
||||
}
|
||||
|
||||
dt, err := content.ReadBlob(ctx, cache, config)
|
||||
if err != nil {
|
||||
return "", "", nil, err
|
||||
return "", nil, err
|
||||
}
|
||||
|
||||
return ref.String(), desc.Digest, dt, nil
|
||||
return desc.Digest, dt, nil
|
||||
}
|
||||
|
||||
func childrenConfigHandler(provider content.Provider, platform platforms.MatchComparer) images.HandlerFunc {
|
||||
|
4
vendor/github.com/moby/buildkit/util/imageutil/schema1.go
generated
vendored
4
vendor/github.com/moby/buildkit/util/imageutil/schema1.go
generated
vendored
@ -8,7 +8,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/containerd/containerd/remotes"
|
||||
"github.com/moby/buildkit/exporter/containerimage/image"
|
||||
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"
|
||||
"github.com/pkg/errors"
|
||||
@ -45,7 +45,7 @@ func convertSchema1ConfigMeta(in []byte) ([]byte, error) {
|
||||
return nil, errors.Errorf("invalid schema1 manifest")
|
||||
}
|
||||
|
||||
var img image.Image
|
||||
var img dockerspec.DockerOCIImage
|
||||
if err := json.Unmarshal([]byte(m.History[0].V1Compatibility), &img); err != nil {
|
||||
return nil, errors.Wrap(err, "failed to unmarshal image from schema 1 history")
|
||||
}
|
||||
|
18
vendor/github.com/moby/buildkit/util/testutil/integration/util.go
generated
vendored
18
vendor/github.com/moby/buildkit/util/testutil/integration/util.go
generated
vendored
@ -16,12 +16,23 @@ import (
|
||||
"github.com/containerd/continuity/fs/fstest"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/tonistiigi/fsutil"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
var ErrRequirements = errors.Errorf("missing requirements")
|
||||
|
||||
func Tmpdir(t *testing.T, appliers ...fstest.Applier) string {
|
||||
type TmpDirWithName struct {
|
||||
fsutil.FS
|
||||
Name string
|
||||
}
|
||||
|
||||
// This allows TmpDirWithName to continue being used with the `%s` 'verb' on Printf.
|
||||
func (d *TmpDirWithName) String() string {
|
||||
return d.Name
|
||||
}
|
||||
|
||||
func Tmpdir(t *testing.T, appliers ...fstest.Applier) *TmpDirWithName {
|
||||
t.Helper()
|
||||
|
||||
// We cannot use t.TempDir() to create a temporary directory here because
|
||||
@ -38,7 +49,10 @@ func Tmpdir(t *testing.T, appliers ...fstest.Applier) string {
|
||||
err = fstest.Apply(appliers...).Apply(tmpdir)
|
||||
require.NoError(t, err)
|
||||
|
||||
return tmpdir
|
||||
mount, err := fsutil.NewFS(tmpdir)
|
||||
require.NoError(t, err)
|
||||
|
||||
return &TmpDirWithName{FS: mount, Name: tmpdir}
|
||||
}
|
||||
|
||||
func RunCmd(cmd *exec.Cmd, logs map[string]*bytes.Buffer) error {
|
||||
|
87
vendor/github.com/moby/buildkit/util/wildcard/wildcard.go
generated
vendored
87
vendor/github.com/moby/buildkit/util/wildcard/wildcard.go
generated
vendored
@ -1,87 +0,0 @@
|
||||
package wildcard
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
// New returns a wildcard object for a string that contains "*" symbols.
|
||||
func New(s string) (*Wildcard, error) {
|
||||
reStr, err := Wildcard2Regexp(s)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "failed to translate wildcard %q to regexp", s)
|
||||
}
|
||||
re, err := regexp.Compile(reStr)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "failed to compile regexp %q (translated from wildcard %q)", reStr, s)
|
||||
}
|
||||
w := &Wildcard{
|
||||
orig: s,
|
||||
re: re,
|
||||
}
|
||||
return w, nil
|
||||
}
|
||||
|
||||
// Wildcard2Regexp translates a wildcard string to a regexp string.
|
||||
func Wildcard2Regexp(wildcard string) (string, error) {
|
||||
s := regexp.QuoteMeta(wildcard)
|
||||
if strings.Contains(s, "\\*\\*") {
|
||||
return "", errors.New("invalid wildcard: \"**\"")
|
||||
}
|
||||
s = strings.ReplaceAll(s, "\\*", "(.*)")
|
||||
s = "^" + s + "$"
|
||||
return s, nil
|
||||
}
|
||||
|
||||
// Wildcard is a wildcard matcher object.
|
||||
type Wildcard struct {
|
||||
orig string
|
||||
re *regexp.Regexp
|
||||
}
|
||||
|
||||
// String implements fmt.Stringer.
|
||||
func (w *Wildcard) String() string {
|
||||
return w.orig
|
||||
}
|
||||
|
||||
// Match returns a non-nil Match on match.
|
||||
func (w *Wildcard) Match(q string) *Match {
|
||||
submatches := w.re.FindStringSubmatch(q)
|
||||
if len(submatches) == 0 {
|
||||
return nil
|
||||
}
|
||||
m := &Match{
|
||||
w: w,
|
||||
Submatches: submatches,
|
||||
// FIXME: avoid executing regexp twice
|
||||
idx: w.re.FindStringSubmatchIndex(q),
|
||||
}
|
||||
return m
|
||||
}
|
||||
|
||||
// Match is a matched result.
|
||||
type Match struct {
|
||||
w *Wildcard
|
||||
Submatches []string // 0: the entire query, 1: the first submatch, 2: the second submatch, ...
|
||||
idx []int
|
||||
}
|
||||
|
||||
// String implements fmt.Stringer.
|
||||
func (m *Match) String() string {
|
||||
if len(m.Submatches) == 0 {
|
||||
return ""
|
||||
}
|
||||
return m.Submatches[0]
|
||||
}
|
||||
|
||||
// Format formats submatch strings like "$1", "$2".
|
||||
func (m *Match) Format(f string) (string, error) {
|
||||
if m.w == nil || len(m.Submatches) == 0 || len(m.idx) == 0 {
|
||||
return "", errors.New("invalid state")
|
||||
}
|
||||
var b []byte
|
||||
b = m.w.re.ExpandString(b, f, m.Submatches[0], m.idx)
|
||||
return string(b), nil
|
||||
}
|
Reference in New Issue
Block a user