aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cmd/dist/metadata.go24
-rw-r--r--src/cmd/dist/metadata_bootstrap.go21
-rw-r--r--src/cmd/dist/sys_windows.go6
-rw-r--r--src/cmd/dist/test.go19
4 files changed, 67 insertions, 3 deletions
diff --git a/src/cmd/dist/metadata.go b/src/cmd/dist/metadata.go
new file mode 100644
index 0000000000..f0a125fb8a
--- /dev/null
+++ b/src/cmd/dist/metadata.go
@@ -0,0 +1,24 @@
+// 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.
+
+// Helper to print system metadata (CPU model, etc). This uses packages that
+// may not be available in the bootstrap toolchain. It only needs to be built
+// on the dist build using the final toolchain.
+
+//go:build go1.18
+// +build go1.18
+
+package main
+
+import (
+ "fmt"
+ "internal/sysinfo"
+ "runtime"
+)
+
+func logMetadata() error {
+ fmt.Printf("# GOARCH: %s\n", runtime.GOARCH)
+ fmt.Printf("# CPU: %s\n", sysinfo.CPU.Name())
+ return nil
+}
diff --git a/src/cmd/dist/metadata_bootstrap.go b/src/cmd/dist/metadata_bootstrap.go
new file mode 100644
index 0000000000..fe5f422b0b
--- /dev/null
+++ b/src/cmd/dist/metadata_bootstrap.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.
+
+// No-op metadata implementation when building with an old bootstrap toolchain.
+
+//go:build !go1.18
+// +build !go1.18
+
+package main
+
+import (
+ "fmt"
+)
+
+func logMetadata() error {
+ // We don't return an error so we don't completely preclude running
+ // tests with a bootstrap dist.
+ fmt.Printf("# Metadata unavailable: bootstrap build\n")
+ return nil
+}
diff --git a/src/cmd/dist/sys_windows.go b/src/cmd/dist/sys_windows.go
index 265f729d0f..0fb66ad27d 100644
--- a/src/cmd/dist/sys_windows.go
+++ b/src/cmd/dist/sys_windows.go
@@ -38,11 +38,11 @@ const (
PROCESSOR_ARCHITECTURE_IA64 = 6
)
-var sysinfo systeminfo
+var winsysinfo systeminfo
func sysinit() {
- syscall.Syscall(procGetSystemInfo.Addr(), 1, uintptr(unsafe.Pointer(&sysinfo)), 0, 0)
- switch sysinfo.wProcessorArchitecture {
+ syscall.Syscall(procGetSystemInfo.Addr(), 1, uintptr(unsafe.Pointer(&winsysinfo)), 0, 0)
+ switch winsysinfo.wProcessorArchitecture {
case PROCESSOR_ARCHITECTURE_AMD64:
gohostarch = "amd64"
case PROCESSOR_ARCHITECTURE_INTEL:
diff --git a/src/cmd/dist/test.go b/src/cmd/dist/test.go
index 50a2e5936c..fed83120ed 100644
--- a/src/cmd/dist/test.go
+++ b/src/cmd/dist/test.go
@@ -218,6 +218,15 @@ func (t *tester) run() {
}
}
+ if err := t.maybeLogMetadata(); err != nil {
+ t.failed = true
+ if t.keepGoing {
+ log.Printf("Failed logging metadata: %v", err)
+ } else {
+ fatalf("Failed logging metadata: %v", err)
+ }
+ }
+
for _, dt := range t.tests {
if !t.shouldRunTest(dt.name) {
t.partial = true
@@ -268,6 +277,16 @@ func (t *tester) shouldRunTest(name string) bool {
return false
}
+func (t *tester) maybeLogMetadata() error {
+ if t.compileOnly {
+ // We need to run a subprocess to log metadata. Don't do that
+ // on compile-only runs.
+ return nil
+ }
+ t.out("Test execution environment.")
+ return logMetadata()
+}
+
// short returns a -short flag value to use with 'go test'
// or a test binary for tests intended to run in short mode.
// It returns "true", unless the environment variable