Skip to content

Commit a32761a

Browse files
authored
Merge pull request #3449 from crazy-max/v0.29_picks_0.29.1
[v0.29] cherry-picks for v0.29.1
2 parents 9c5897f + b5148c9 commit a32761a

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

commands/imagetools/create.go

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -240,13 +240,12 @@ type descWithSource struct {
240240
}
241241

242242
func filterPlatforms(dt []byte, desc ocispecs.Descriptor, srcMap map[digest.Digest]*imagetools.Source, plats []ocispecs.Platform) ([]byte, ocispecs.Descriptor, []descWithSource, error) {
243-
if len(plats) == 0 {
244-
return dt, desc, nil, nil
245-
}
246-
247243
matcher := platforms.Any(plats...)
248244

249245
if !images.IsIndexType(desc.MediaType) {
246+
if len(plats) == 0 {
247+
return dt, desc, nil, nil
248+
}
250249
var mfst ocispecs.Manifest
251250
if err := json.Unmarshal(dt, &mfst); err != nil {
252251
return nil, ocispecs.Descriptor{}, nil, errors.Wrapf(err, "failed to parse manifest")
@@ -264,6 +263,24 @@ func filterPlatforms(dt []byte, desc ocispecs.Descriptor, srcMap map[digest.Dige
264263
if err := json.Unmarshal(dt, &idx); err != nil {
265264
return nil, ocispecs.Descriptor{}, nil, errors.Wrapf(err, "failed to parse index")
266265
}
266+
if len(plats) == 0 {
267+
mfsts := make([]descWithSource, len(idx.Manifests))
268+
for i, m := range idx.Manifests {
269+
src, ok := srcMap[m.Digest]
270+
if !ok {
271+
defaultSource, ok := srcMap[desc.Digest]
272+
if !ok {
273+
return nil, ocispecs.Descriptor{}, nil, errors.Errorf("internal error: no source found for %s", m.Digest)
274+
}
275+
src = defaultSource
276+
}
277+
mfsts[i] = descWithSource{
278+
Descriptor: m,
279+
Source: src,
280+
}
281+
}
282+
return dt, desc, mfsts, nil
283+
}
267284

268285
manifestMap := map[digest.Digest]ocispecs.Descriptor{}
269286
for _, m := range idx.Manifests {

util/imagetools/create.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ func (r *Resolver) Push(ctx context.Context, ref reference.Named, desc ocispecs.
222222

223223
func (r *Resolver) Copy(ctx context.Context, src *Source, dest reference.Named) error {
224224
ctx = remotes.WithMediaTypeKeyPrefix(ctx, "application/vnd.in-toto+json", "intoto")
225+
ctx = remotes.WithMediaTypeKeyPrefix(ctx, "application/vnd.oci.empty.v1+json", "empty")
225226

226227
// push by digest
227228
p, err := r.resolver().Pusher(ctx, dest.Name())

0 commit comments

Comments
 (0)