From 1fd5c1425877c925cb3e0eb713babce87111f245 Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Mon, 15 Sep 2014 16:08:05 -0400 Subject: [PATCH] tarsum: version the addition of xattrs Now that TarSum can be versioned, move the addition of xattr headers in to the next version of TarSum Signed-off-by: Vincent Batts --- tarsum/tarsum.go | 20 +++++++++++--------- tarsum/tarsum_test.go | 11 +++++++++-- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/tarsum/tarsum.go b/tarsum/tarsum.go index 4852e88..bee77a8 100644 --- a/tarsum/tarsum.go +++ b/tarsum/tarsum.go @@ -81,7 +81,7 @@ func (ts tarSum) selectHeaders(h *tar.Header, v Version) (set [][2]string) { {"devmajor", strconv.Itoa(int(h.Devmajor))}, {"devminor", strconv.Itoa(int(h.Devminor))}, } { - if v == VersionDev && elem[0] == "mtime" { + if v >= VersionDev && elem[0] == "mtime" { continue } set = append(set, elem) @@ -97,14 +97,16 @@ func (ts *tarSum) encodeHeader(h *tar.Header) error { } // include the additional pax headers, from an ordered list - var keys []string - for k := range h.Xattrs { - keys = append(keys, k) - } - sort.Strings(keys) - for _, k := range keys { - if _, err := ts.h.Write([]byte(k + h.Xattrs[k])); err != nil { - return err + if ts.Version() >= VersionDev { + var keys []string + for k := range h.Xattrs { + keys = append(keys, k) + } + sort.Strings(keys) + for _, k := range keys { + if _, err := ts.h.Write([]byte(k + h.Xattrs[k])); err != nil { + return err + } } } return nil diff --git a/tarsum/tarsum_test.go b/tarsum/tarsum_test.go index de93411..7686dd8 100644 --- a/tarsum/tarsum_test.go +++ b/tarsum/tarsum_test.go @@ -38,10 +38,17 @@ var testLayers = []testLayer{ gzip: true, tarsum: "tarsum+sha256:e58fcf7418d4390dec8e8fb69d88c06ec07039d651fedd3aa72af9972e7d046b"}, { + // Tests existing version of TarSum when xattrs are present filename: "testdata/xattr/layer.tar", jsonfile: "testdata/xattr/json", - // without xattr support, this layer produces "tarsum+sha256:e86f81a4d552f13039b1396ed03ca968ea9717581f9577ef1876ea6ff9b38c98" - tarsum: "tarsum+sha256:eadcd9c55164e2a942ea67f781abbf645ee55d36e173c34de8a36d4d69d3021c"}, + version: Version0, + tarsum: "tarsum+sha256:e86f81a4d552f13039b1396ed03ca968ea9717581f9577ef1876ea6ff9b38c98"}, + { + // Tests next version of TarSum when xattrs are present + filename: "testdata/xattr/layer.tar", + jsonfile: "testdata/xattr/json", + version: VersionDev, + tarsum: "tarsum.dev+sha256:6235cd3a2afb7501bac541772a3d61a3634e95bc90bb39a4676e2cb98d08390d"}, { filename: "testdata/511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158/layer.tar", jsonfile: "testdata/511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158/json",