Skip to content

Commit 0506df9

Browse files
authored
Merge pull request #6061 from tonistiigi/cache-debuginfo-db
add cache key debuginfo lookup
2 parents d5a40ad + 63874fc commit 0506df9

File tree

18 files changed

+1141
-26
lines changed

18 files changed

+1141
-26
lines changed

cache/contenthash/checksum.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package contenthash
33
import (
44
"bytes"
55
"context"
6-
"crypto/sha256"
76
"io"
87
"os"
98
"path"
@@ -18,6 +17,7 @@ import (
1817
"github.com/moby/buildkit/cache"
1918
"github.com/moby/buildkit/session"
2019
"github.com/moby/buildkit/snapshot"
20+
"github.com/moby/buildkit/util/cachedigest"
2121
"github.com/moby/locker"
2222
"github.com/moby/patternmatcher"
2323
digest "github.com/opencontainers/go-digest"
@@ -450,15 +450,15 @@ func (cc *cacheContext) Checksum(ctx context.Context, mountable cache.Mountable,
450450
return digest.Digest(includedPaths[0].record.Digest), nil
451451
}
452452

453-
digester := digest.Canonical.Digester()
453+
h := cachedigest.NewHash(cachedigest.TypeFileList)
454454
for i, w := range includedPaths {
455455
if i != 0 {
456-
digester.Hash().Write([]byte{0})
456+
h.Write([]byte{0})
457457
}
458-
digester.Hash().Write([]byte(path.Base(w.path)))
459-
digester.Hash().Write([]byte(w.record.Digest))
458+
h.Write([]byte(path.Base(w.path)))
459+
h.Write([]byte(w.record.Digest))
460460
}
461-
return digester.Digest(), nil
461+
return h.Sum(), nil
462462
}
463463

464464
func (cc *cacheContext) includedPaths(ctx context.Context, m *mount, p string, opts ChecksumOpts) ([]*includedPath, error) {
@@ -881,7 +881,7 @@ func (cc *cacheContext) checksum(ctx context.Context, root *iradix.Node[*CacheRe
881881

882882
switch cr.Type {
883883
case CacheRecordTypeDir:
884-
h := sha256.New()
884+
h := cachedigest.NewHash(cachedigest.TypeFileList)
885885
next := append(k, 0)
886886
iter := root.Iterator()
887887
iter.SeekLowerBound(append(slices.Clone(next), 0))
@@ -906,7 +906,7 @@ func (cc *cacheContext) checksum(ctx context.Context, root *iradix.Node[*CacheRe
906906
}
907907
subk, _, ok = iter.Next()
908908
}
909-
dgst = digest.NewDigest(digest.SHA256, h)
909+
dgst = h.Sum()
910910

911911
default:
912912
p := convertKeyToPath(bytes.TrimSuffix(k, []byte{0}))

cache/contenthash/filehash.go

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ package contenthash
22

33
import (
44
"archive/tar"
5-
"crypto/sha256"
5+
"encoding/hex"
66
"hash"
77
"os"
88
"path/filepath"
99
"time"
1010

11+
"github.com/moby/buildkit/util/cachedigest"
1112
"github.com/pkg/errors"
1213
fstypes "github.com/tonistiigi/fsutil/types"
1314
)
@@ -62,13 +63,14 @@ func NewFromStat(stat *fstypes.Stat) (hash.Hash, error) {
6263
}
6364
}
6465
// fmt.Printf("hdr: %#v\n", hdr)
65-
tsh := &tarsumHash{hdr: hdr, Hash: sha256.New()}
66+
h := cachedigest.NewHash(cachedigest.TypeFile)
67+
tsh := &tarsumHash{hdr: hdr, Hash: h}
6668
tsh.Reset() // initialize header
6769
return tsh, nil
6870
}
6971

7072
type tarsumHash struct {
71-
hash.Hash
73+
*cachedigest.Hash
7274
hdr *tar.Header
7375
}
7476

@@ -79,6 +81,19 @@ func (tsh *tarsumHash) Reset() {
7981
WriteV1TarsumHeaders(tsh.hdr, tsh.Hash)
8082
}
8183

84+
func (tsh *tarsumHash) Write(p []byte) (n int, err error) {
85+
n, err = tsh.WriteNoDebug(p)
86+
if n > 0 {
87+
tsh.hdr.Size += int64(n)
88+
}
89+
return n, err
90+
}
91+
92+
func (tsh *tarsumHash) Sum(_ []byte) []byte {
93+
b, _ := hex.DecodeString(tsh.Hash.Sum().Hex())
94+
return b
95+
}
96+
8297
type statInfo struct {
8398
*fstypes.Stat
8499
}

0 commit comments

Comments
 (0)