diff options
author | Paul Holzinger <pholzing@redhat.com> | 2024-02-07 10:59:33 +0100 |
---|---|---|
committer | Paul Holzinger <pholzing@redhat.com> | 2024-02-08 18:05:31 +0100 |
commit | ef8e63cb29934ae0a8c89d32b8f23e24863d31aa (patch) | |
tree | c7375dd032e2dda98c8d25c49bbf9e76bcc0e848 /vendor/github.com/containers/common/libimage | |
parent | cb1bac73318be05428907435fda5f4ba3a6278bd (diff) |
update c/common to latest main
Signed-off-by: Paul Holzinger <pholzing@redhat.com>
Diffstat (limited to 'vendor/github.com/containers/common/libimage')
-rw-r--r-- | vendor/github.com/containers/common/libimage/manifests/manifests.go | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/vendor/github.com/containers/common/libimage/manifests/manifests.go b/vendor/github.com/containers/common/libimage/manifests/manifests.go index 682791351..aab804538 100644 --- a/vendor/github.com/containers/common/libimage/manifests/manifests.go +++ b/vendor/github.com/containers/common/libimage/manifests/manifests.go @@ -11,6 +11,7 @@ import ( "net/http" "os" "path/filepath" + "strconv" "strings" "time" @@ -284,10 +285,8 @@ func (l *list) Reference(store storage.Store, multiple cp.ImageListSelection, in } case cp.CopySpecificImages: for instance := range l.instances { - for _, allowed := range instances { - if instance == allowed { - whichInstances = append(whichInstances, instance) - } + if slices.Contains(instances, instance) { + whichInstances = append(whichInstances, instance) } } } @@ -304,8 +303,11 @@ func (l *list) Reference(store storage.Store, multiple cp.ImageListSelection, in if err != nil { return nil, err } + subdir := 0 for artifactManifestDigest, contents := range l.artifacts.Manifests { // create the blobs directory + subdir++ + tmp := filepath.Join(tmp, strconv.Itoa(subdir)) blobsDir := filepath.Join(tmp, "blobs", artifactManifestDigest.Algorithm().String()) if err := os.MkdirAll(blobsDir, 0o700); err != nil { return nil, fmt.Errorf("creating directory for blobs: %w", err) @@ -811,12 +813,14 @@ func (l *list) AddArtifact(ctx context.Context, sys *types.SystemContext, option configDescriptor := internal.DeepCopyDescriptor(&v1.DescriptorEmptyJSON) if options.ConfigDescriptor != nil { configDescriptor = internal.DeepCopyDescriptor(options.ConfigDescriptor) - } else if options.ConfigFile != "" { - configDescriptor = &v1.Descriptor{ - MediaType: v1.MediaTypeImageConfig, - Digest: "", // to be figured out below - Size: -1, // to be figured out below + } + if options.ConfigFile != "" { + if options.ConfigDescriptor == nil { // i.e., we assigned the default mediatype + configDescriptor.MediaType = v1.MediaTypeImageConfig } + configDescriptor.Data = nil + configDescriptor.Digest = "" // to be figured out below + configDescriptor.Size = -1 // to be figured out below } configFilePath := "" if configDescriptor.Size != 0 { @@ -889,13 +893,11 @@ func (l *list) AddArtifact(ctx context.Context, sys *types.SystemContext, option } l.artifacts.Manifests[artifactManifestDigest] = string(artifactManifestBytes) l.artifacts.Layers[artifactManifestDigest] = nil + l.artifacts.Configs[artifactManifestDigest] = artifactManifest.Config.Digest if configFilePath != "" { - l.artifacts.Configs[artifactManifestDigest] = artifactManifest.Config.Digest l.artifacts.Detached[artifactManifest.Config.Digest] = configFilePath l.artifacts.Files[artifactManifestDigest] = append(l.artifacts.Files[artifactManifestDigest], configFilePath) - } - if len(artifactManifest.Config.Data) != 0 { - l.artifacts.Configs[artifactManifestDigest] = artifactManifest.Config.Digest + } else { l.artifacts.Blobs[artifactManifest.Config.Digest] = slices.Clone(artifactManifest.Config.Data) } for filePath, fileDigest := range fileDigests { @@ -903,6 +905,12 @@ func (l *list) AddArtifact(ctx context.Context, sys *types.SystemContext, option l.artifacts.Detached[fileDigest] = filePath l.artifacts.Files[artifactManifestDigest] = append(l.artifacts.Files[artifactManifestDigest], filePath) } + for _, layer := range layers { + if len(layer.Data) != 0 { + l.artifacts.Blobs[layer.Digest] = slices.Clone(layer.Data) + l.artifacts.Layers[artifactManifestDigest] = append(l.artifacts.Layers[artifactManifestDigest], layer.Digest) + } + } // Add this artifact manifest to the image index. if err := l.AddInstance(artifactManifestDigest, int64(len(artifactManifestBytes)), artifactManifest.MediaType, options.Platform.OS, options.Platform.Architecture, options.Platform.OSVersion, options.Platform.OSFeatures, options.Platform.Variant, nil, nil); err != nil { return "", fmt.Errorf("adding artifact manifest for %q to image index: %w", files, err) |