This is especially to fix the current docker on kernels such as gentoo-sources, where the "flavor" is the string "gentoo", and that obviously fails to be converted to an integer.
Tianon Gravi authored on 2013/04/22 10:19:38... | ... |
@@ -399,10 +399,10 @@ func CopyEscapable(dst io.Writer, src io.ReadCloser) (written int64, err error) |
399 | 399 |
} |
400 | 400 |
|
401 | 401 |
type KernelVersionInfo struct { |
402 |
- Kernel int |
|
403 |
- Major int |
|
404 |
- Minor int |
|
405 |
- Specific int |
|
402 |
+ Kernel int |
|
403 |
+ Major int |
|
404 |
+ Minor int |
|
405 |
+ Flavor string |
|
406 | 406 |
} |
407 | 407 |
|
408 | 408 |
// FIXME: this doens't build on Darwin |
... | ... |
@@ -445,21 +445,18 @@ func GetKernelVersion() (*KernelVersionInfo, error) { |
445 | 445 |
return nil, err |
446 | 446 |
} |
447 | 447 |
|
448 |
- specific, err := strconv.Atoi(strings.Split(tmp[1], "-")[0]) |
|
449 |
- if err != nil { |
|
450 |
- return nil, err |
|
451 |
- } |
|
448 |
+ flavor := tmp[1] |
|
452 | 449 |
|
453 | 450 |
return &KernelVersionInfo{ |
454 |
- Kernel: kernel, |
|
455 |
- Major: major, |
|
456 |
- Minor: minor, |
|
457 |
- Specific: specific, |
|
451 |
+ Kernel: kernel, |
|
452 |
+ Major: major, |
|
453 |
+ Minor: minor, |
|
454 |
+ Flavor: flavor, |
|
458 | 455 |
}, nil |
459 | 456 |
} |
460 | 457 |
|
461 | 458 |
func (k *KernelVersionInfo) String() string { |
462 |
- return fmt.Sprintf("%d.%d.%d-%d", k.Kernel, k.Major, k.Minor, k.Specific) |
|
459 |
+ return fmt.Sprintf("%d.%d.%d-%s", k.Kernel, k.Major, k.Minor, k.Flavor) |
|
463 | 460 |
} |
464 | 461 |
|
465 | 462 |
// Compare two KernelVersionInfo struct. |
... | ... |
@@ -483,11 +480,6 @@ func CompareKernelVersion(a, b *KernelVersionInfo) int { |
483 | 483 |
return 1 |
484 | 484 |
} |
485 | 485 |
|
486 |
- if a.Specific < b.Specific { |
|
487 |
- return -1 |
|
488 |
- } else if a.Specific > b.Specific { |
|
489 |
- return 1 |
|
490 |
- } |
|
491 | 486 |
return 0 |
492 | 487 |
} |
493 | 488 |
|
... | ... |
@@ -237,27 +237,27 @@ func assertKernelVersion(t *testing.T, a, b *KernelVersionInfo, result int) { |
237 | 237 |
|
238 | 238 |
func TestCompareKernelVersion(t *testing.T) { |
239 | 239 |
assertKernelVersion(t, |
240 |
- &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0, Specific: 0}, |
|
241 |
- &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0, Specific: 0}, |
|
240 |
+ &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0}, |
|
241 |
+ &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0}, |
|
242 | 242 |
0) |
243 | 243 |
assertKernelVersion(t, |
244 |
- &KernelVersionInfo{Kernel: 2, Major: 6, Minor: 0, Specific: 0}, |
|
245 |
- &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0, Specific: 0}, |
|
244 |
+ &KernelVersionInfo{Kernel: 2, Major: 6, Minor: 0}, |
|
245 |
+ &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0}, |
|
246 | 246 |
-1) |
247 | 247 |
assertKernelVersion(t, |
248 |
- &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0, Specific: 0}, |
|
249 |
- &KernelVersionInfo{Kernel: 2, Major: 6, Minor: 0, Specific: 0}, |
|
248 |
+ &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0}, |
|
249 |
+ &KernelVersionInfo{Kernel: 2, Major: 6, Minor: 0}, |
|
250 | 250 |
1) |
251 | 251 |
assertKernelVersion(t, |
252 |
- &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0, Specific: 0}, |
|
253 |
- &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0, Specific: 16}, |
|
254 |
- -1) |
|
252 |
+ &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0, Flavor: "0"}, |
|
253 |
+ &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0, Flavor: "16"}, |
|
254 |
+ 0) |
|
255 | 255 |
assertKernelVersion(t, |
256 |
- &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 5, Specific: 0}, |
|
257 |
- &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0, Specific: 0}, |
|
256 |
+ &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 5}, |
|
257 |
+ &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0}, |
|
258 | 258 |
1) |
259 | 259 |
assertKernelVersion(t, |
260 |
- &KernelVersionInfo{Kernel: 3, Major: 0, Minor: 20, Specific: 25}, |
|
261 |
- &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0, Specific: 0}, |
|
260 |
+ &KernelVersionInfo{Kernel: 3, Major: 0, Minor: 20, Flavor: "25"}, |
|
261 |
+ &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0, Flavor: "0"}, |
|
262 | 262 |
-1) |
263 | 263 |
} |