diff options
author | Michael Pratt <mpratt@google.com> | 2021-12-13 17:34:16 -0500 |
---|---|---|
committer | Michael Pratt <mpratt@google.com> | 2022-01-14 18:36:49 +0000 |
commit | 4f0c32de078b57958fa9c37c05bae4ee1f8193e5 (patch) | |
tree | 2c91fb9eed19ce39f70d857408759d03956f25e9 | |
parent | 1302f93c4e1eae0e625b372f9bb6bb48780af30f (diff) | |
download | go-4f0c32de078b57958fa9c37c05bae4ee1f8193e5.tar.gz go-4f0c32de078b57958fa9c37c05bae4ee1f8193e5.zip |
cmd/dist: log OS version when testing
As a follow-up to https://golang.org/cl/371474, add the OS version to
the metadata printed for each test.
Fixes #50146.
Change-Id: I3b7e47983d0e85feebce8e424881b931882d53bf
Reviewed-on: https://go-review.googlesource.com/c/go/+/371475
Reviewed-by: Bryan Mills <bcmills@google.com>
Trust: Michael Pratt <mpratt@google.com>
Run-TryBot: Michael Pratt <mpratt@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
-rw-r--r-- | src/cmd/dist/metadata.go | 9 | ||||
-rw-r--r-- | src/cmd/internal/osinfo/doc.go | 6 | ||||
-rw-r--r-- | src/cmd/internal/osinfo/os_js.go | 18 | ||||
-rw-r--r-- | src/cmd/internal/osinfo/os_plan9.go | 21 | ||||
-rw-r--r-- | src/cmd/internal/osinfo/os_unix.go | 36 | ||||
-rw-r--r-- | src/cmd/internal/osinfo/os_windows.go | 19 |
6 files changed, 109 insertions, 0 deletions
diff --git a/src/cmd/dist/metadata.go b/src/cmd/dist/metadata.go index f0a125fb8a..76f108ea06 100644 --- a/src/cmd/dist/metadata.go +++ b/src/cmd/dist/metadata.go @@ -12,6 +12,7 @@ package main import ( + "cmd/internal/osinfo" "fmt" "internal/sysinfo" "runtime" @@ -20,5 +21,13 @@ import ( func logMetadata() error { fmt.Printf("# GOARCH: %s\n", runtime.GOARCH) fmt.Printf("# CPU: %s\n", sysinfo.CPU.Name()) + + fmt.Printf("# GOOS: %s\n", runtime.GOOS) + ver, err := osinfo.Version() + if err != nil { + return fmt.Errorf("error determining OS version: %v", err) + } + fmt.Printf("# OS Version: %s\n", ver) + return nil } diff --git a/src/cmd/internal/osinfo/doc.go b/src/cmd/internal/osinfo/doc.go new file mode 100644 index 0000000000..c2f74bea27 --- /dev/null +++ b/src/cmd/internal/osinfo/doc.go @@ -0,0 +1,6 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package osinfo provides OS metadata information. +package osinfo diff --git a/src/cmd/internal/osinfo/os_js.go b/src/cmd/internal/osinfo/os_js.go new file mode 100644 index 0000000000..8e86464cd8 --- /dev/null +++ b/src/cmd/internal/osinfo/os_js.go @@ -0,0 +1,18 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build js + +package osinfo + +import ( + "fmt" +) + +// Version returns the OS version name/number. +func Version() (string, error) { + // TODO(prattmic): Does wasm have any version/runtime detection + // functionality? + return "", fmt.Errorf("unimplemented") +} diff --git a/src/cmd/internal/osinfo/os_plan9.go b/src/cmd/internal/osinfo/os_plan9.go new file mode 100644 index 0000000000..ad1d324e5e --- /dev/null +++ b/src/cmd/internal/osinfo/os_plan9.go @@ -0,0 +1,21 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build plan9 + +package osinfo + +import ( + "os" +) + +// Version returns the OS version name/number. +func Version() (string, error) { + b, err := os.ReadFile("/dev/osversion") + if err != nil { + return "", err + } + + return string(b), nil +} diff --git a/src/cmd/internal/osinfo/os_unix.go b/src/cmd/internal/osinfo/os_unix.go new file mode 100644 index 0000000000..4587cb2501 --- /dev/null +++ b/src/cmd/internal/osinfo/os_unix.go @@ -0,0 +1,36 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris + +package osinfo + +import ( + "bytes" + + "golang.org/x/sys/unix" +) + +func utsString(b []byte) string { + i := bytes.IndexByte(b, 0) + if i == -1 { + return string(b) + } + return string(b[:i]) +} + +// Version returns the OS version name/number. +func Version() (string, error) { + var uts unix.Utsname + if err := unix.Uname(&uts); err != nil { + return "", err + } + + sysname := utsString(uts.Sysname[:]) + release := utsString(uts.Release[:]) + version := utsString(uts.Version[:]) + machine := utsString(uts.Machine[:]) + + return sysname + " " + release + " " + version + " " + machine, nil +} diff --git a/src/cmd/internal/osinfo/os_windows.go b/src/cmd/internal/osinfo/os_windows.go new file mode 100644 index 0000000000..05fab9bb1e --- /dev/null +++ b/src/cmd/internal/osinfo/os_windows.go @@ -0,0 +1,19 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows + +package osinfo + +import ( + "fmt" + + "golang.org/x/sys/windows" +) + +// Version returns the OS version name/number. +func Version() (string, error) { + major, minor, patch := windows.RtlGetNtVersionNumbers() + return fmt.Sprintf("%d.%d.%d", major, minor, patch), nil +} |