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.
| ... | ... |
@@ -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 |
} |