@@ -96,13 +96,12 @@ type LayerOption func(*layer)
9696
9797// WithCompression is a functional option for overriding the default
9898// compression algorithm used for compressing uncompressed tarballs.
99- // Also sets the mediaType to "application/vnd.oci.image.layer.v1.tar+zstd"
100- // if zstd compression is selected.
99+ // Please note that WithCompression(compression.ZStd) should be used
100+ // in conjunction with WithMediaType(types.OCILayerZStd)
101101func WithCompression (comp compression.Compression ) LayerOption {
102102 return func (l * layer ) {
103103 switch comp {
104104 case compression .ZStd :
105- l .mediaType = types .OCILayerZStd
106105 l .compression = compression .ZStd
107106 case compression .GZip :
108107 l .compression = compression .GZip
@@ -125,7 +124,6 @@ func WithCompressionLevel(level int) LayerOption {
125124}
126125
127126// WithMediaType is a functional option for overriding the layer's media type.
128- // Note that WithCompression overrides the mediaType if zstd compression is selected.
129127func WithMediaType (mt types.MediaType ) LayerOption {
130128 return func (l * layer ) {
131129 l .mediaType = mt
@@ -282,6 +280,23 @@ func LayerFromOpener(opener Opener, opts ...LayerOption) (v1.Layer, error) {
282280 opt (layer )
283281 }
284282
283+ // Warn if media type does not match compression
284+ var mediaTypeMismatch = false
285+ switch layer .compression {
286+ case compression .GZip :
287+ mediaTypeMismatch =
288+ layer .mediaType != types .OCILayer &&
289+ layer .mediaType != types .OCIRestrictedLayer &&
290+ layer .mediaType != types .DockerLayer
291+
292+ case compression .ZStd :
293+ mediaTypeMismatch = layer .mediaType != types .OCILayerZStd
294+ }
295+
296+ if mediaTypeMismatch {
297+ logs .Warn .Printf ("Unexpected mediaType (%s) for selected compression in %s in LayerFromOpener()." , layer .mediaType , layer .compression )
298+ }
299+
285300 if layer .digest , layer .size , err = computeDigest (layer .compressedopener ); err != nil {
286301 return nil , err
287302 }
0 commit comments