mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-10 05:27:07 +08:00
vendor: update buildkit to v0.16.0-rc1
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
This commit is contained in:
67
vendor/github.com/moby/buildkit/util/stack/compress.go
generated
vendored
Normal file
67
vendor/github.com/moby/buildkit/util/stack/compress.go
generated
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
package stack
|
||||
|
||||
import (
|
||||
"slices"
|
||||
)
|
||||
|
||||
func compressStacks(st []*Stack) []*Stack {
|
||||
if len(st) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
slices.SortFunc(st, func(a, b *Stack) int {
|
||||
return len(b.Frames) - len(a.Frames)
|
||||
})
|
||||
|
||||
out := []*Stack{st[0]}
|
||||
|
||||
loop0:
|
||||
for _, st := range st[1:] {
|
||||
maxIdx := -1
|
||||
for _, prev := range out {
|
||||
idx := subFrames(st.Frames, prev.Frames)
|
||||
if idx == -1 {
|
||||
continue
|
||||
}
|
||||
// full match, potentially skip all
|
||||
if idx == len(st.Frames)-1 {
|
||||
if st.Pid == prev.Pid && st.Version == prev.Version && slices.Compare(st.Cmdline, st.Cmdline) == 0 {
|
||||
continue loop0
|
||||
}
|
||||
}
|
||||
if idx > maxIdx {
|
||||
maxIdx = idx
|
||||
}
|
||||
}
|
||||
|
||||
if maxIdx > 0 {
|
||||
st.Frames = st.Frames[:len(st.Frames)-maxIdx]
|
||||
}
|
||||
out = append(out, st)
|
||||
}
|
||||
|
||||
return out
|
||||
}
|
||||
|
||||
func subFrames(a, b []*Frame) int {
|
||||
idx := -1
|
||||
i := len(a) - 1
|
||||
j := len(b) - 1
|
||||
for i >= 0 {
|
||||
if j < 0 {
|
||||
break
|
||||
}
|
||||
if a[i].Equal(b[j]) {
|
||||
idx++
|
||||
i--
|
||||
j--
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
return idx
|
||||
}
|
||||
|
||||
func (a *Frame) Equal(b *Frame) bool {
|
||||
return a.File == b.File && a.Line == b.Line && a.Name == b.Name
|
||||
}
|
4
vendor/github.com/moby/buildkit/util/stack/stack.go
generated
vendored
4
vendor/github.com/moby/buildkit/util/stack/stack.go
generated
vendored
@ -44,6 +44,10 @@ func Helper() {
|
||||
}
|
||||
|
||||
func Traces(err error) []*Stack {
|
||||
return compressStacks(traces(err))
|
||||
}
|
||||
|
||||
func traces(err error) []*Stack {
|
||||
var st []*Stack
|
||||
|
||||
switch e := err.(type) {
|
||||
|
Reference in New Issue
Block a user