From e0fb4d1da9d22d5aaec1ae85dd002343ebd97339 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= Date: Thu, 26 Jan 2017 16:41:32 +0200 Subject: [PATCH] build: work around CGO linker bug on pre-1.8 Go --- build/ci.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/build/ci.go b/build/ci.go index 51540f9b64..d8c76567c0 100644 --- a/build/ci.go +++ b/build/ci.go @@ -236,6 +236,14 @@ func goToolArch(arch string, subcmd string, args ...string) *exec.Cmd { gocmd := filepath.Join(runtime.GOROOT(), "bin", "go") cmd := exec.Command(gocmd, subcmd) cmd.Args = append(cmd.Args, args...) + + if subcmd == "build" || subcmd == "install" || subcmd == "test" { + // Go CGO has a Windows linker error prior to 1.8 (https://github.com/golang/go/issues/8756). + // Work around issue by allowing multiple definitions for <1.8 builds. + if runtime.GOOS == "windows" && runtime.Version() < "go1.8" { + cmd.Args = append(cmd.Args, []string{"-ldflags", "-extldflags -Wl,--allow-multiple-definition"}...) + } + } cmd.Env = []string{ "GO15VENDOREXPERIMENT=1", "GOPATH=" + build.GOPATH(),