Browse code

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 <vbatts@redhat.com>

Vincent Batts authored on 2014/09/16 05:08:05
Showing 2 changed files
... ...
@@ -81,7 +81,7 @@ func (ts tarSum) selectHeaders(h *tar.Header, v Version) (set [][2]string) {
81 81
 		{"devmajor", strconv.Itoa(int(h.Devmajor))},
82 82
 		{"devminor", strconv.Itoa(int(h.Devminor))},
83 83
 	} {
84
-		if v == VersionDev && elem[0] == "mtime" {
84
+		if v >= VersionDev && elem[0] == "mtime" {
85 85
 			continue
86 86
 		}
87 87
 		set = append(set, elem)
... ...
@@ -97,14 +97,16 @@ func (ts *tarSum) encodeHeader(h *tar.Header) error {
97 97
 	}
98 98
 
99 99
 	// include the additional pax headers, from an ordered list
100
-	var keys []string
101
-	for k := range h.Xattrs {
102
-		keys = append(keys, k)
103
-	}
104
-	sort.Strings(keys)
105
-	for _, k := range keys {
106
-		if _, err := ts.h.Write([]byte(k + h.Xattrs[k])); err != nil {
107
-			return err
100
+	if ts.Version() >= VersionDev {
101
+		var keys []string
102
+		for k := range h.Xattrs {
103
+			keys = append(keys, k)
104
+		}
105
+		sort.Strings(keys)
106
+		for _, k := range keys {
107
+			if _, err := ts.h.Write([]byte(k + h.Xattrs[k])); err != nil {
108
+				return err
109
+			}
108 110
 		}
109 111
 	}
110 112
 	return nil
... ...
@@ -38,10 +38,17 @@ var testLayers = []testLayer{
38 38
 		gzip:     true,
39 39
 		tarsum:   "tarsum+sha256:e58fcf7418d4390dec8e8fb69d88c06ec07039d651fedd3aa72af9972e7d046b"},
40 40
 	{
41
+		// Tests existing version of TarSum when xattrs are present
41 42
 		filename: "testdata/xattr/layer.tar",
42 43
 		jsonfile: "testdata/xattr/json",
43
-		// without xattr support, this layer produces "tarsum+sha256:e86f81a4d552f13039b1396ed03ca968ea9717581f9577ef1876ea6ff9b38c98"
44
-		tarsum: "tarsum+sha256:eadcd9c55164e2a942ea67f781abbf645ee55d36e173c34de8a36d4d69d3021c"},
44
+		version:  Version0,
45
+		tarsum:   "tarsum+sha256:e86f81a4d552f13039b1396ed03ca968ea9717581f9577ef1876ea6ff9b38c98"},
46
+	{
47
+		// Tests next version of TarSum when xattrs are present
48
+		filename: "testdata/xattr/layer.tar",
49
+		jsonfile: "testdata/xattr/json",
50
+		version:  VersionDev,
51
+		tarsum:   "tarsum.dev+sha256:6235cd3a2afb7501bac541772a3d61a3634e95bc90bb39a4676e2cb98d08390d"},
45 52
 	{
46 53
 		filename: "testdata/511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158/layer.tar",
47 54
 		jsonfile: "testdata/511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158/json",