Browse code

Move the kernel detection to arch specific files

Guillaume J. Charmes authored on 2013/04/23 04:08:59
Showing 3 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,5 @@
0
+package docker
1
+
2
+func getKernelVersion() (*KernelVersionInfo, error) {
3
+	return nil, fmt.Errorf("Kernel version detection is not available on darwin")
4
+}
0 5
new file mode 100644
... ...
@@ -0,0 +1,65 @@
0
+package docker
1
+
2
+import (
3
+	"strconv"
4
+	"strings"
5
+	"syscall"
6
+)
7
+
8
+func getKernelVersion() (*KernelVersionInfo, error) {
9
+	var (
10
+		uts                  syscall.Utsname
11
+		flavor               string
12
+		kernel, major, minor int
13
+		err                  error
14
+	)
15
+
16
+	if err := syscall.Uname(&uts); err != nil {
17
+		return nil, err
18
+	}
19
+
20
+	release := make([]byte, len(uts.Release))
21
+
22
+	i := 0
23
+	for _, c := range uts.Release {
24
+		release[i] = byte(c)
25
+		i++
26
+	}
27
+
28
+	tmp := strings.SplitN(string(release), "-", 2)
29
+	tmp2 := strings.SplitN(tmp[0], ".", 3)
30
+
31
+	if len(tmp2) > 0 {
32
+		kernel, err = strconv.Atoi(tmp2[0])
33
+		if err != nil {
34
+			return nil, err
35
+		}
36
+	}
37
+
38
+	if len(tmp2) > 1 {
39
+		major, err = strconv.Atoi(tmp2[1])
40
+		if err != nil {
41
+			return nil, err
42
+		}
43
+	}
44
+
45
+	if len(tmp2) > 2 {
46
+		minor, err = strconv.Atoi(tmp2[2])
47
+		if err != nil {
48
+			return nil, err
49
+		}
50
+	}
51
+
52
+	if len(tmp) == 2 {
53
+		flavor = tmp[1]
54
+	} else {
55
+		flavor = ""
56
+	}
57
+
58
+	return &KernelVersionInfo{
59
+		Kernel: kernel,
60
+		Major:  major,
61
+		Minor:  minor,
62
+		Flavor: flavor,
63
+	}, nil
64
+}
... ...
@@ -14,10 +14,8 @@ import (
14 14
 	"path/filepath"
15 15
 	"regexp"
16 16
 	"runtime"
17
-	"strconv"
18 17
 	"strings"
19 18
 	"sync"
20
-	"syscall"
21 19
 	"time"
22 20
 )
23 21
 
... ...
@@ -407,61 +405,7 @@ type KernelVersionInfo struct {
407 407
 
408 408
 // FIXME: this doens't build on Darwin
409 409
 func GetKernelVersion() (*KernelVersionInfo, error) {
410
-	var (
411
-		uts                  syscall.Utsname
412
-		flavor               string
413
-		kernel, major, minor int
414
-		err                  error
415
-	)
416
-
417
-	if err := syscall.Uname(&uts); err != nil {
418
-		return nil, err
419
-	}
420
-
421
-	release := make([]byte, len(uts.Release))
422
-
423
-	i := 0
424
-	for _, c := range uts.Release {
425
-		release[i] = byte(c)
426
-		i++
427
-	}
428
-
429
-	tmp := strings.SplitN(string(release), "-", 2)
430
-	tmp2 := strings.SplitN(tmp[0], ".", 3)
431
-
432
-	if len(tmp2) > 0 {
433
-		kernel, err = strconv.Atoi(tmp2[0])
434
-		if err != nil {
435
-			return nil, err
436
-		}
437
-	}
438
-
439
-	if len(tmp2) > 1 {
440
-		major, err = strconv.Atoi(tmp2[1])
441
-		if err != nil {
442
-			return nil, err
443
-		}
444
-	}
445
-
446
-	if len(tmp2) > 2 {
447
-		minor, err = strconv.Atoi(tmp2[2])
448
-		if err != nil {
449
-			return nil, err
450
-		}
451
-	}
452
-
453
-	if len(tmp) == 2 {
454
-		flavor = tmp[1]
455
-	} else {
456
-		flavor = ""
457
-	}
458
-
459
-	return &KernelVersionInfo{
460
-		Kernel: kernel,
461
-		Major:  major,
462
-		Minor:  minor,
463
-		Flavor: flavor,
464
-	}, nil
410
+	return getKernelVersion()
465 411
 }
466 412
 
467 413
 func (k *KernelVersionInfo) String() string {