mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-09 21:17:09 +08:00
vendor: update buildkit to master@d5c1d785b042
Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
2
vendor/github.com/moby/buildkit/util/bklog/log.go
generated
vendored
2
vendor/github.com/moby/buildkit/util/bklog/log.go
generated
vendored
@ -4,7 +4,7 @@ import (
|
||||
"context"
|
||||
"runtime/debug"
|
||||
|
||||
"github.com/containerd/containerd/log"
|
||||
"github.com/containerd/log"
|
||||
"github.com/sirupsen/logrus"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
)
|
||||
|
14
vendor/github.com/moby/buildkit/util/gitutil/git_ref.go
generated
vendored
14
vendor/github.com/moby/buildkit/util/gitutil/git_ref.go
generated
vendored
@ -53,17 +53,17 @@ func ParseGitRef(ref string) (*GitRef, error) {
|
||||
res := &GitRef{}
|
||||
|
||||
var (
|
||||
remote *url.URL
|
||||
remote *GitURL
|
||||
err error
|
||||
)
|
||||
|
||||
if strings.HasPrefix(ref, "github.com/") {
|
||||
res.IndistinguishableFromLocal = true // Deprecated
|
||||
remote = &url.URL{
|
||||
remote = fromURL(&url.URL{
|
||||
Scheme: "https",
|
||||
Host: "github.com",
|
||||
Path: strings.TrimPrefix(ref, "github.com/"),
|
||||
}
|
||||
})
|
||||
} else {
|
||||
remote, err = ParseURL(ref)
|
||||
if errors.Is(err, ErrUnknownProtocol) {
|
||||
@ -87,13 +87,13 @@ func ParseGitRef(ref string) (*GitRef, error) {
|
||||
}
|
||||
}
|
||||
|
||||
res.Commit, res.SubDir = SplitGitFragment(remote.Fragment)
|
||||
remote.Fragment = ""
|
||||
|
||||
res.Remote = remote.String()
|
||||
res.Remote = remote.Remote
|
||||
if res.IndistinguishableFromLocal {
|
||||
_, res.Remote, _ = strings.Cut(res.Remote, "://")
|
||||
}
|
||||
if remote.Fragment != nil {
|
||||
res.Commit, res.SubDir = remote.Fragment.Ref, remote.Fragment.Subdir
|
||||
}
|
||||
|
||||
repoSplitBySlash := strings.Split(res.Remote, "/")
|
||||
res.ShortName = strings.TrimSuffix(repoSplitBySlash[len(repoSplitBySlash)-1], ".git")
|
||||
|
102
vendor/github.com/moby/buildkit/util/gitutil/git_url.go
generated
vendored
102
vendor/github.com/moby/buildkit/util/gitutil/git_url.go
generated
vendored
@ -30,42 +30,94 @@ var supportedProtos = map[string]struct{}{
|
||||
|
||||
var protoRegexp = regexp.MustCompile(`^[a-zA-Z0-9]+://`)
|
||||
|
||||
// ParseURL parses a git URL and returns a parsed URL object.
|
||||
// URL is a custom URL type that points to a remote Git repository.
|
||||
//
|
||||
// ParseURL understands implicit ssh URLs such as "git@host:repo", and
|
||||
// returns the same response as if the URL were "ssh://git@host/repo".
|
||||
func ParseURL(remote string) (*url.URL, error) {
|
||||
// URLs can be parsed from both standard URLs (e.g.
|
||||
// "https://github.com/moby/buildkit.git"), as well as SCP-like URLs (e.g.
|
||||
// "git@github.com:moby/buildkit.git").
|
||||
//
|
||||
// See https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols
|
||||
type GitURL struct {
|
||||
// Scheme is the protocol over which the git repo can be accessed
|
||||
Scheme string
|
||||
|
||||
// Host is the remote host that hosts the git repo
|
||||
Host string
|
||||
// Path is the path on the host to access the repo
|
||||
Path string
|
||||
// User is the username/password to access the host
|
||||
User *url.Userinfo
|
||||
// Fragment can contain additional metadata
|
||||
Fragment *GitURLFragment
|
||||
|
||||
// Remote is a valid URL remote to pass into the Git CLI tooling (i.e.
|
||||
// without the fragment metadata)
|
||||
Remote string
|
||||
}
|
||||
|
||||
// GitURLFragment is the buildkit-specific metadata extracted from the fragment
|
||||
// of a remote URL.
|
||||
type GitURLFragment struct {
|
||||
// Ref is the git reference
|
||||
Ref string
|
||||
// Subdir is the sub-directory inside the git repository to use
|
||||
Subdir string
|
||||
}
|
||||
|
||||
// splitGitFragment splits a git URL fragment into its respective git
|
||||
// reference and subdirectory components.
|
||||
func splitGitFragment(fragment string) *GitURLFragment {
|
||||
if fragment == "" {
|
||||
return nil
|
||||
}
|
||||
ref, subdir, _ := strings.Cut(fragment, ":")
|
||||
return &GitURLFragment{Ref: ref, Subdir: subdir}
|
||||
}
|
||||
|
||||
// ParseURL parses a BuildKit-style Git URL (that may contain additional
|
||||
// fragment metadata) and returns a parsed GitURL object.
|
||||
func ParseURL(remote string) (*GitURL, error) {
|
||||
if proto := protoRegexp.FindString(remote); proto != "" {
|
||||
proto = strings.ToLower(strings.TrimSuffix(proto, "://"))
|
||||
if _, ok := supportedProtos[proto]; !ok {
|
||||
return nil, errors.Wrap(ErrInvalidProtocol, proto)
|
||||
}
|
||||
|
||||
return url.Parse(remote)
|
||||
url, err := url.Parse(remote)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return fromURL(url), nil
|
||||
}
|
||||
|
||||
if sshutil.IsImplicitSSHTransport(remote) {
|
||||
remote, fragment, _ := strings.Cut(remote, "#")
|
||||
remote, path, _ := strings.Cut(remote, ":")
|
||||
user, host, _ := strings.Cut(remote, "@")
|
||||
if !strings.HasPrefix(path, "/") {
|
||||
path = "/" + path
|
||||
}
|
||||
return &url.URL{
|
||||
Scheme: SSHProtocol,
|
||||
User: url.User(user),
|
||||
Host: host,
|
||||
Path: path,
|
||||
Fragment: fragment,
|
||||
}, nil
|
||||
if url, err := sshutil.ParseSCPStyleURL(remote); err == nil {
|
||||
return fromSCPStyleURL(url), nil
|
||||
}
|
||||
|
||||
return nil, ErrUnknownProtocol
|
||||
}
|
||||
|
||||
// SplitGitFragments splits a git URL fragment into its respective git
|
||||
// reference and subdirectory components.
|
||||
func SplitGitFragment(fragment string) (ref string, subdir string) {
|
||||
ref, subdir, _ = strings.Cut(fragment, ":")
|
||||
return ref, subdir
|
||||
func fromURL(url *url.URL) *GitURL {
|
||||
withoutFragment := *url
|
||||
withoutFragment.Fragment = ""
|
||||
return &GitURL{
|
||||
Scheme: url.Scheme,
|
||||
User: url.User,
|
||||
Host: url.Host,
|
||||
Path: url.Path,
|
||||
Fragment: splitGitFragment(url.Fragment),
|
||||
Remote: withoutFragment.String(),
|
||||
}
|
||||
}
|
||||
|
||||
func fromSCPStyleURL(url *sshutil.SCPStyleURL) *GitURL {
|
||||
withoutFragment := *url
|
||||
withoutFragment.Fragment = ""
|
||||
return &GitURL{
|
||||
Scheme: SSHProtocol,
|
||||
User: url.User,
|
||||
Host: url.Host,
|
||||
Path: url.Path,
|
||||
Fragment: splitGitFragment(url.Fragment),
|
||||
Remote: withoutFragment.String(),
|
||||
}
|
||||
}
|
||||
|
1
vendor/github.com/moby/buildkit/util/imageutil/config.go
generated
vendored
1
vendor/github.com/moby/buildkit/util/imageutil/config.go
generated
vendored
@ -156,6 +156,7 @@ func Config(ctx context.Context, str string, resolver remotes.Resolver, cache Co
|
||||
}
|
||||
|
||||
children := childrenConfigHandler(cache, platform)
|
||||
children = images.LimitManifests(children, platform, 1)
|
||||
|
||||
dslHandler, err := docker.AppendDistributionSourceLabel(cache, ref.String())
|
||||
if err != nil {
|
||||
|
1
vendor/github.com/moby/buildkit/util/progress/progressui/display.go
generated
vendored
1
vendor/github.com/moby/buildkit/util/progress/progressui/display.go
generated
vendored
@ -310,7 +310,6 @@ func (d *rawJSONDisplay) done() {
|
||||
// No actions needed.
|
||||
}
|
||||
|
||||
const termHeight = 6
|
||||
const termPad = 10
|
||||
|
||||
type displayInfo struct {
|
||||
|
12
vendor/github.com/moby/buildkit/util/progress/progressui/init.go
generated
vendored
12
vendor/github.com/moby/buildkit/util/progress/progressui/init.go
generated
vendored
@ -3,6 +3,7 @@ package progressui
|
||||
import (
|
||||
"os"
|
||||
"runtime"
|
||||
"strconv"
|
||||
|
||||
"github.com/morikuni/aec"
|
||||
)
|
||||
@ -12,6 +13,8 @@ var colorCancel aec.ANSI
|
||||
var colorWarning aec.ANSI
|
||||
var colorError aec.ANSI
|
||||
|
||||
var termHeight = 6
|
||||
|
||||
func init() {
|
||||
// As recommended on https://no-color.org/
|
||||
if v := os.Getenv("NO_COLOR"); v != "" {
|
||||
@ -34,4 +37,13 @@ func init() {
|
||||
envColorString := os.Getenv("BUILDKIT_COLORS")
|
||||
setUserDefinedTermColors(envColorString)
|
||||
}
|
||||
|
||||
// Make the terminal height configurable at runtime.
|
||||
termHeightStr := os.Getenv("BUILDKIT_TTY_LOG_LINES")
|
||||
if termHeightStr != "" {
|
||||
termHeightVal, err := strconv.Atoi(termHeightStr)
|
||||
if err == nil && termHeightVal > 0 {
|
||||
termHeight = termHeightVal
|
||||
}
|
||||
}
|
||||
}
|
||||
|
43
vendor/github.com/moby/buildkit/util/sshutil/scpurl.go
generated
vendored
Normal file
43
vendor/github.com/moby/buildkit/util/sshutil/scpurl.go
generated
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
package sshutil
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"regexp"
|
||||
)
|
||||
|
||||
var gitSSHRegex = regexp.MustCompile("^([a-zA-Z0-9-_]+)@([a-zA-Z0-9-.]+):(.*?)(?:#(.*))?$")
|
||||
|
||||
func IsImplicitSSHTransport(s string) bool {
|
||||
return gitSSHRegex.MatchString(s)
|
||||
}
|
||||
|
||||
type SCPStyleURL struct {
|
||||
User *url.Userinfo
|
||||
Host string
|
||||
|
||||
Path string
|
||||
Fragment string
|
||||
}
|
||||
|
||||
func ParseSCPStyleURL(raw string) (*SCPStyleURL, error) {
|
||||
matches := gitSSHRegex.FindStringSubmatch(raw)
|
||||
if matches == nil {
|
||||
return nil, errors.New("invalid scp-style url")
|
||||
}
|
||||
return &SCPStyleURL{
|
||||
User: url.User(matches[1]),
|
||||
Host: matches[2],
|
||||
Path: matches[3],
|
||||
Fragment: matches[4],
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (url *SCPStyleURL) String() string {
|
||||
base := fmt.Sprintf("%s@%s:%s", url.User.String(), url.Host, url.Path)
|
||||
if url.Fragment == "" {
|
||||
return base
|
||||
}
|
||||
return base + "#" + url.Fragment
|
||||
}
|
11
vendor/github.com/moby/buildkit/util/sshutil/transport_validation.go
generated
vendored
11
vendor/github.com/moby/buildkit/util/sshutil/transport_validation.go
generated
vendored
@ -1,11 +0,0 @@
|
||||
package sshutil
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
)
|
||||
|
||||
var gitSSHRegex = regexp.MustCompile("^[a-zA-Z0-9-_]+@[a-zA-Z0-9-.]+:.*$")
|
||||
|
||||
func IsImplicitSSHTransport(s string) bool {
|
||||
return gitSSHRegex.MatchString(s)
|
||||
}
|
Reference in New Issue
Block a user