-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Description
What version of Go are you using (go version
)?
golang:1.11.1-alpine3.8:
go version go1.11.1 linux/amd64
Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (go env
)?
Also from that docker image:
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build610617865=/tmp/go-build -gno-record-gcc-switches"
What did you do?
Run go test
on a simple package that imports some network packages like net/http
. Expect it to work, even when I don't have gcc
installed, which is the case with the Alpine Go images. This worked on 1.10. It broke when we switched to the 1.11 images.
Here is a simple reproducer script:
docker run -i golang:1.11.1-alpine3.8 sh <<-SCRIPT
mkdir -p src/foo.com/bar
cd src/foo.com/bar
cat <<EOF >main.go
package main
import _ "net/http"
func main() {}
EOF
go test
SCRIPT
What did you expect to see?
What I see if I use golang:1.11.1-stretch
:
$ ./repro.sh
? foo.com/bar [no test files]
Note that this has nothing to do with the package not having test files or tests. We encountered this on a package that has plenty of tests.
What did you see instead?
$ ./repro.sh
# runtime/cgo
exec: "gcc": executable file not found in $PATH
Also note that we are not in module-aware mode, so this issue should be different from #26988. I believe this is the same issue that @mfridman and @tylercloke were reporting in that thread.
For the time being, we've just globally set CGO_ENABLED=0
on all of our CI jobs, since we don't use CGO on our production builds anyway. And one could argue that we should have been doing that from the start anyway. Nonetheless, this still seems like a bug or some sort of regression to me.