Kaynağa Gözat

Use unix.Uname instead of shelling out to uname on darwin/freebsd

Reuse the linux implementation based on Uname from golang.org/x/sys/unix
for darwin and freebsd.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Tobias Klauser 5 yıl önce
ebeveyn
işleme
7aeb3efcb4

+ 6 - 6
pkg/parsers/operatingsystem/operatingsystem_unix.go

@@ -3,19 +3,19 @@
 package operatingsystem // import "github.com/docker/docker/pkg/parsers/operatingsystem"
 
 import (
+	"bytes"
 	"errors"
-	"os/exec"
-	"strings"
+
+	"golang.org/x/sys/unix"
 )
 
 // GetOperatingSystem gets the name of the current operating system.
 func GetOperatingSystem() (string, error) {
-	cmd := exec.Command("uname", "-s")
-	osName, err := cmd.Output()
-	if err != nil {
+	utsname := &unix.Utsname{}
+	if err := unix.Uname(utsname); err != nil {
 		return "", err
 	}
-	return strings.TrimSpace(string(osName)), nil
+	return string(utsname.Machine[:bytes.IndexByte(utsname.Sysname[:], 0)]), nil
 }
 
 // GetOperatingSystemVersion gets the version of the current operating system, as a string.

+ 0 - 18
pkg/platform/architecture_linux.go

@@ -1,18 +0,0 @@
-// Package platform provides helper function to get the runtime architecture
-// for different platforms.
-package platform // import "github.com/docker/docker/pkg/platform"
-
-import (
-	"bytes"
-
-	"golang.org/x/sys/unix"
-)
-
-// runtimeArchitecture gets the name of the current architecture (x86, x86_64, …)
-func runtimeArchitecture() (string, error) {
-	utsname := &unix.Utsname{}
-	if err := unix.Uname(utsname); err != nil {
-		return "", err
-	}
-	return string(utsname.Machine[:bytes.IndexByte(utsname.Machine[:], 0)]), nil
-}

+ 7 - 7
pkg/platform/architecture_unix.go

@@ -1,20 +1,20 @@
-// +build freebsd darwin
+// +build !windows
 
 // Package platform provides helper function to get the runtime architecture
 // for different platforms.
 package platform // import "github.com/docker/docker/pkg/platform"
 
 import (
-	"os/exec"
-	"strings"
+	"bytes"
+
+	"golang.org/x/sys/unix"
 )
 
 // runtimeArchitecture gets the name of the current architecture (x86, x86_64, i86pc, sun4v, ...)
 func runtimeArchitecture() (string, error) {
-	cmd := exec.Command("/usr/bin/uname", "-m")
-	machine, err := cmd.Output()
-	if err != nil {
+	utsname := &unix.Utsname{}
+	if err := unix.Uname(utsname); err != nil {
 		return "", err
 	}
-	return strings.TrimSpace(string(machine)), nil
+	return string(utsname.Machine[:bytes.IndexByte(utsname.Machine[:], 0)]), nil
 }