diff --git a/Dockerfile b/Dockerfile index 766925b0db..c73dee9606 100644 --- a/Dockerfile +++ b/Dockerfile @@ -83,12 +83,10 @@ RUN cd /usr/src/lxc \ && ldconfig # Install Go -ENV GO_VERSION 1.4.3 -RUN curl -sSL https://golang.org/dl/go${GO_VERSION}.src.tar.gz | tar -v -C /usr/local -xz \ - && mkdir -p /go/bin +ENV GO_VERSION 1.5.1 +RUN curl -sSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar -v -C /usr/local -xz ENV PATH /go/bin:/usr/local/go/bin:$PATH ENV GOPATH /go:/go/src/github.com/docker/docker/vendor -RUN cd /usr/local/go/src && ./make.bash --no-clean 2>&1 # Compile Go for cross compilation ENV DOCKER_CROSSPLATFORMS \ @@ -99,13 +97,6 @@ ENV DOCKER_CROSSPLATFORMS \ # (set an explicit GOARM of 5 for maximum compatibility) ENV GOARM 5 -RUN cd /usr/local/go/src \ - && set -x \ - && for platform in $DOCKER_CROSSPLATFORMS; do \ - GOOS=${platform%/*} \ - GOARCH=${platform##*/} \ - ./make.bash --no-clean 2>&1; \ - done # This has been commented out and kept as reference because we don't support compiling with older Go anymore. # ENV GOFMT_VERSION 1.3.3 diff --git a/hack/make/binary b/hack/make/binary index 7a3067fa48..80b4592df1 100644 --- a/hack/make/binary +++ b/hack/make/binary @@ -14,7 +14,7 @@ if [ "$(go env GOOS)/$(go env GOARCH)" != "$(go env GOHOSTOS)/$(go env GOHOSTARC windows/amd64) export CC=x86_64-w64-mingw32-gcc export CGO_ENABLED=1 - export LDFLAGS_STATIC_DOCKER="${LDFLAGS_STATIC_DOCKER/-linkmode external/} -extld=${CC}" + export LDFLAGS_STATIC_DOCKER="${LDFLAGS_STATIC_DOCKER/-linkmode external/-linkmode internal} -extld=${CC}" ;; esac fi diff --git a/pkg/parsers/parsers.go b/pkg/parsers/parsers.go index a604a9e12b..453cccfbad 100644 --- a/pkg/parsers/parsers.go +++ b/pkg/parsers/parsers.go @@ -74,6 +74,18 @@ func ParseTCPAddr(tryAddr string, defaultAddr string) (string, error) { return "", fmt.Errorf("Invalid proto, expected tcp: %s", tryAddr) } + defaultAddr = strings.TrimPrefix(defaultAddr, "tcp://") + defaultHost, defaultPort, err := net.SplitHostPort(defaultAddr) + if err != nil { + return "", err + } + // url.Parse fails for trailing colon on IPv6 brackets on Go 1.5, but + // not 1.4. See https://github.com/golang/go/issues/12200 and + // https://github.com/golang/go/issues/6530. + if strings.HasSuffix(addr, "]:") { + addr += defaultPort + } + u, err := url.Parse("tcp://" + addr) if err != nil { return "", err @@ -84,12 +96,6 @@ func ParseTCPAddr(tryAddr string, defaultAddr string) (string, error) { return "", fmt.Errorf("Invalid bind address format: %s", tryAddr) } - defaultAddr = strings.TrimPrefix(defaultAddr, "tcp://") - defaultHost, defaultPort, err := net.SplitHostPort(defaultAddr) - if err != nil { - return "", err - } - if host == "" { host = defaultHost }