@@ -158,30 +158,48 @@ func ServerSemVer(ctx context.Context, client *containerd.Client) (*semver.Versi
158
158
}
159
159
160
160
func buildctlVersion () dockercompat.ComponentVersion {
161
- const buildctl = "buildctl"
162
161
buildctlBinary , err := buildkitutil .BuildctlBinary ()
163
162
if err != nil {
164
163
logrus .Warnf ("unable to determine buildctl version: %s" , err .Error ())
165
- return dockercompat.ComponentVersion {Name : buildctl }
164
+ return dockercompat.ComponentVersion {Name : "builctl" }
166
165
}
167
166
168
167
stdout , err := exec .Command (buildctlBinary , "--version" ).Output ()
169
168
if err != nil {
170
169
logrus .Warnf ("unable to determine buildctl version: %s" , err .Error ())
171
- return dockercompat.ComponentVersion {Name : buildctl }
170
+ return dockercompat.ComponentVersion {Name : " buildctl" }
172
171
}
173
172
174
- versionStr := strings . Fields ( strings . TrimSpace ( string ( stdout )) )
175
- if len ( versionStr ) != 4 {
176
- logrus .Errorf ( "unable to determine buildctl version got: %s" , versionStr )
177
- return dockercompat.ComponentVersion {Name : buildctl }
173
+ v , err := parseBuildctlVersion ( stdout )
174
+ if err != nil {
175
+ logrus .Warn ( err )
176
+ return dockercompat.ComponentVersion {Name : " buildctl" }
178
177
}
178
+ return * v
179
+ }
179
180
180
- return dockercompat.ComponentVersion {
181
- Name : buildctl ,
182
- Version : versionStr [2 ],
183
- Details : map [string ]string {"GitCommit" : versionStr [3 ]},
181
+ func parseBuildctlVersion (buildctlVersionStdout []byte ) (* dockercompat.ComponentVersion , error ) {
182
+ fields := strings .Fields (strings .TrimSpace (string (buildctlVersionStdout )))
183
+ var v * dockercompat.ComponentVersion
184
+ switch len (fields ) {
185
+ case 4 :
186
+ v = & dockercompat.ComponentVersion {
187
+ Name : fields [0 ],
188
+ Version : fields [2 ],
189
+ Details : map [string ]string {"GitCommit" : fields [3 ]},
190
+ }
191
+ case 3 :
192
+ v = & dockercompat.ComponentVersion {
193
+ Name : fields [0 ],
194
+ Version : fields [2 ],
195
+ }
196
+ default :
197
+ return nil , fmt .Errorf ("unable to determine buildctl version, got %q" , string (buildctlVersionStdout ))
198
+ }
199
+ if v .Name != "buildctl" {
200
+ return nil , fmt .Errorf ("unable to determine buildctl version, got %q" , string (buildctlVersionStdout ))
184
201
}
202
+ return v , nil
185
203
}
186
204
187
205
func runcVersion () dockercompat.ComponentVersion {
0 commit comments