Browse code

Update "tini --version" parsing to be more forgiving of Tini's output format (release build vs git build)

Signed-off-by: Andrew "Tianon" Page <admwiggin@gmail.com>

Tianon Gravi authored on 2017/03/29 07:18:39
Showing 1 changed files
... ...
@@ -56,20 +56,23 @@ func (daemon *Daemon) FillPlatformInfo(v *types.Info, sysInfo *sysinfo.SysInfo)
56 56
 
57 57
 	v.InitCommit.Expected = dockerversion.InitCommitID
58 58
 	if rv, err := exec.Command(DefaultInitBinary, "--version").Output(); err == nil {
59
+		// examples of how Tini outputs version info:
60
+		//   "tini version 0.13.0 - git.949e6fa"
61
+		//   "tini version 0.13.2"
59 62
 		parts := strings.Split(strings.TrimSpace(string(rv)), " - ")
60
-		if len(parts) == 2 {
61
-			if dockerversion.InitCommitID[0] == 'v' {
62
-				vs := strings.TrimPrefix(parts[0], "tini version ")
63
-				v.InitCommit.ID = "v" + vs
64
-			} else {
65
-				// Get the sha1
66
-				gitParts := strings.Split(parts[1], ".")
67
-				if len(gitParts) == 2 && gitParts[0] == "git" {
68
-					v.InitCommit.ID = gitParts[1]
69
-					v.InitCommit.Expected = dockerversion.InitCommitID[0:len(gitParts[1])]
70
-				}
63
+
64
+		v.InitCommit.ID = ""
65
+		if v.InitCommit.ID == "" && len(parts) >= 2 {
66
+			gitParts := strings.Split(parts[1], ".")
67
+			if len(gitParts) == 2 && gitParts[0] == "git" {
68
+				v.InitCommit.ID = gitParts[1]
69
+				v.InitCommit.Expected = dockerversion.InitCommitID[0:len(v.InitCommit.ID)]
71 70
 			}
72 71
 		}
72
+		if v.InitCommit.ID == "" && len(parts) >= 1 {
73
+			vs := strings.TrimPrefix(parts[0], "tini version ")
74
+			v.InitCommit.ID = "v" + vs
75
+		}
73 76
 
74 77
 		if v.InitCommit.ID == "" {
75 78
 			logrus.Warnf("failed to retrieve %s version: unknown output format: %s", DefaultInitBinary, string(rv))