Skip to content

Commit

Permalink
cmd/go, cmd/dist: temporarily disable race and PIE internal link test…
Browse files Browse the repository at this point in the history
…s on Alpine

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>
  • Loading branch information
bradfitz committed Apr 25, 2017
1 parent b692e74 commit 7fc8210
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 13 deletions.
18 changes: 16 additions & 2 deletions src/cmd/dist/test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"os/exec"
"path/filepath"
"regexp"
"runtime"
"strconv"
"strings"
"sync"
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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=^$"
Expand Down
24 changes: 13 additions & 11 deletions src/cmd/go/go_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ package main_test
import (
"bytes"
"fmt"
"go/build"
"go/format"
"internal/race"
"internal/testenv"
Expand Down Expand Up @@ -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()
}
}

Expand All @@ -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.
Expand Down Expand Up @@ -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.
Expand Down

0 comments on commit 7fc8210

Please sign in to comment.