]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go, cmd/dist: temporarily disable race and PIE internal link tests on Alpine
authorBrad Fitzpatrick <bradfitz@golang.org>
Tue, 25 Apr 2017 06:11:09 +0000 (06:11 +0000)
committerBrad Fitzpatrick <bradfitz@golang.org>
Tue, 25 Apr 2017 19:57:57 +0000 (19:57 +0000)
In an effort to at least understand the complete set of things not
working on Alpine Linux, I've been trying to get the build passing
again, even with tests disabled.

The race detector is broken on Alpine. That is #14481 (and #9918).
So disable those tests for now.

Also, internal linking with PIE doesn't work on Alpine yet.
That is #18243. So disable that test for now.

With this CL, all.bash almost passes. There's some cgo test failing
still, but there's no bug yet, so that can be a separate CL.

Change-Id: I3ffbb0e787ed54cb82f298b6bd5bf3ccfbc82622
Reviewed-on: https://go-review.googlesource.com/41678
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/dist/test.go
src/cmd/go/go_test.go

index 917aae19f69961a30053c3267a83eba1968ab82c..8c143a0c18a117cba44ef6a14c10444104578b40 100644 (file)
@@ -15,6 +15,7 @@ import (
        "os/exec"
        "path/filepath"
        "regexp"
+       "runtime"
        "strconv"
        "strings"
        "sync"
@@ -465,7 +466,10 @@ func (t *tester) registerTests() {
        }
 
        // Test internal linking of PIE binaries where it is supported.
-       if t.goos == "linux" && t.goarch == "amd64" {
+       if t.goos == "linux" && t.goarch == "amd64" && !isAlpineLinux() {
+               // Issue 18243: We don't have a way to set the default
+               // dynamic linker used in internal linking mode. So
+               // this test is skipped on Alpine.
                t.tests = append(t.tests, distTest{
                        name:    "pie_internal",
                        heading: "internal linking of -buildmode=pie",
@@ -1083,11 +1087,21 @@ func (t *tester) hasBash() bool {
 func (t *tester) raceDetectorSupported() bool {
        switch t.gohostos {
        case "linux", "darwin", "freebsd", "windows":
-               return t.cgoEnabled && t.goarch == "amd64" && t.gohostos == t.goos
+               // The race detector doesn't work on Alpine Linux:
+               // golang.org/issue/14481
+               return t.cgoEnabled && t.goarch == "amd64" && t.gohostos == t.goos && !isAlpineLinux()
        }
        return false
 }
 
+func isAlpineLinux() bool {
+       if runtime.GOOS != "linux" {
+               return false
+       }
+       fi, err := os.Lstat("/etc/alpine-release")
+       return err == nil && fi.Mode().IsRegular()
+}
+
 func (t *tester) runFlag(rx string) string {
        if t.compileOnly {
                return "-run=^$"
index 94ab73749d1a91c98a16036fe3bcf5e62249a708..e6c745ef8c4bfe1c0c10b183e476ba03bffcf82e 100644 (file)
@@ -7,7 +7,6 @@ package main_test
 import (
        "bytes"
        "fmt"
-       "go/build"
        "go/format"
        "internal/race"
        "internal/testenv"
@@ -100,7 +99,9 @@ func TestMain(m *testing.M) {
 
                switch runtime.GOOS {
                case "linux", "darwin", "freebsd", "windows":
-                       canRace = canCgo && runtime.GOARCH == "amd64"
+                       // The race detector doesn't work on Alpine Linux:
+                       // golang.org/issue/14481
+                       canRace = canCgo && runtime.GOARCH == "amd64" && !isAlpineLinux()
                }
        }
 
@@ -125,6 +126,14 @@ func TestMain(m *testing.M) {
        os.Exit(r)
 }
 
+func isAlpineLinux() bool {
+       if runtime.GOOS != "linux" {
+               return false
+       }
+       fi, err := os.Lstat("/etc/alpine-release")
+       return err == nil && fi.Mode().IsRegular()
+}
+
 // The length of an mtime tick on this system. This is an estimate of
 // how long we need to sleep to ensure that the mtime of two files is
 // different.
@@ -3037,15 +3046,8 @@ func TestGoInstallPkgdir(t *testing.T) {
 }
 
 func TestGoTestRaceInstallCgo(t *testing.T) {
-       switch sys := runtime.GOOS + "/" + runtime.GOARCH; sys {
-       case "darwin/amd64", "freebsd/amd64", "linux/amd64", "windows/amd64":
-               // ok
-       default:
-               t.Skip("no race detector on %s", sys)
-       }
-
-       if !build.Default.CgoEnabled {
-               t.Skip("no race detector without cgo")
+       if !canRace {
+               t.Skip("skipping because race detector not supported")
        }
 
        // golang.org/issue/10500.