Browse code

builder-next: fix second cachekey for schema1

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>

Tonis Tiigi authored on 2019/03/18 03:04:45
Showing 1 changed files
... ...
@@ -321,7 +321,11 @@ func (p *puller) CacheKey(ctx context.Context, index int) (string, bool, error)
321 321
 	}
322 322
 
323 323
 	if p.config != nil {
324
-		return cacheKeyFromConfig(p.config).String(), true, nil
324
+		k := cacheKeyFromConfig(p.config).String()
325
+		if k == "" {
326
+			return digest.FromBytes(p.config).String(), true, nil
327
+		}
328
+		return k, true, nil
325 329
 	}
326 330
 
327 331
 	if err := p.resolve(ctx); err != nil {
... ...
@@ -336,7 +340,16 @@ func (p *puller) CacheKey(ctx context.Context, index int) (string, bool, error)
336 336
 		return dgst.String(), false, nil
337 337
 	}
338 338
 
339
-	return cacheKeyFromConfig(p.config).String(), true, nil
339
+	k := cacheKeyFromConfig(p.config).String()
340
+	if k == "" {
341
+		dgst, err := p.mainManifestKey(p.desc.Digest, p.platform)
342
+		if err != nil {
343
+			return "", false, err
344
+		}
345
+		return dgst.String(), true, nil
346
+	}
347
+
348
+	return k, true, nil
340 349
 }
341 350
 
342 351
 func (p *puller) Snapshot(ctx context.Context) (cache.ImmutableRef, error) {
... ...
@@ -776,8 +789,8 @@ func cacheKeyFromConfig(dt []byte) digest.Digest {
776 776
 	if err != nil {
777 777
 		return digest.FromBytes(dt)
778 778
 	}
779
-	if img.RootFS.Type != "layers" {
780
-		return digest.FromBytes(dt)
779
+	if img.RootFS.Type != "layers" || len(img.RootFS.DiffIDs) == 0 {
780
+		return ""
781 781
 	}
782 782
 	return identity.ChainID(img.RootFS.DiffIDs)
783 783
 }