From 5860492a38d62801c38800282125202525aad870 Mon Sep 17 00:00:00 2001 From: Tom Wilkie Date: Fri, 4 Sep 2015 11:39:38 +0000 Subject: [PATCH 1/2] Make weave build under go1.5; use our build flags for go get, and force stuff to be static. --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index cbbd0f83f0..e62d27451a 100644 --- a/Makefile +++ b/Makefile @@ -43,7 +43,7 @@ NETGO_CHECK=@strings $@ | grep cgo_stub\\\.go >/dev/null || { \ echo " sudo go install -tags netgo std"; \ false; \ } -BUILD_FLAGS=-ldflags "-extldflags \"-static\" -X main.version $(WEAVE_VERSION)" -tags netgo +BUILD_FLAGS=-ldflags "-extldflags \"-static\" -linkmode=external -X main.version=$(WEAVE_VERSION)" -tags netgo all: $(WEAVE_EXPORT) $(COVER_EXE) $(RUNNER_EXE) @@ -81,8 +81,8 @@ $(COVER_EXE): testing/cover/cover.go $(RUNNER_EXE): testing/runner/runner.go $(WEAVEWAIT_EXE) $(SIGPROXY_EXE) $(WEAVEHOSTS_EXE) $(COVER_EXE) $(RUNNER_EXE): - go get ./$(@D) - go build -o $@ ./$(@D) + go get -tags netgo ./$(@D) + go build $(BUILD_FLAGS) -o $@ ./$(@D) $(WEAVER_UPTODATE): prog/weaver/Dockerfile $(WEAVER_EXE) $(SUDO) docker build -t $(WEAVER_IMAGE) prog/weaver From 5aa58e6043ddbf5651cd6f142ccfcc95a4029fa9 Mon Sep 17 00:00:00 2001 From: David Wragg Date: Mon, 7 Sep 2015 17:31:18 +0100 Subject: [PATCH 2/2] go 1.5 broke PMTU detection --- router/utils.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/router/utils.go b/router/utils.go index 6f98f66cd7..26b59f3423 100644 --- a/router/utils.go +++ b/router/utils.go @@ -6,6 +6,7 @@ import ( "encoding/gob" "fmt" "net" + "os" "github.com/weaveworks/weave/common" ) @@ -26,15 +27,19 @@ func checkWarn(e error) { } } +// Look inside an error produced by the net package to get to the +// syscall.Errno at the root of the problem. func PosixError(err error) error { - if err == nil { - return nil + if operr, ok := err.(*net.OpError); ok { + err = operr.Err } - operr, ok := err.(*net.OpError) - if !ok { - return nil + + // go1.5 wraps an Errno inside a SyscallError inside an OpError + if scerr, ok := err.(*os.SyscallError); ok { + err = scerr.Err } - return operr.Err + + return err } func (mtbe MsgTooBigError) Error() string {