diff --git a/build.sh b/build.sh index 3c771ef0c..e4560715c 100755 --- a/build.sh +++ b/build.sh @@ -2,7 +2,7 @@ set -euo pipefail IFS=$'\n\t' -DOCKERIMGV=1.4-3 +DOCKERIMGV=1.4-4 case "${1:-default}" in default) diff --git a/docker/Dockerfile b/docker/Dockerfile index 22b3f97de..4f88509e3 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -6,7 +6,7 @@ ENV GOLANG_VERSION 1.4 # SCMs for "go get", gcc for cgo RUN apt-get update && apt-get install -y \ ca-certificates curl gcc libc6-dev make \ - bzr git mercurial unzip \ + bzr git mercurial unzip patch \ --no-install-recommends \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* @@ -29,7 +29,16 @@ RUN go get github.com/calmh/gonative \ && rm -rf go \ && gonative -version $GOLANG_VERSION -# Rebuild the special and missing versions +# Rebuild the special and missing versions, using patches as appropriate + +RUN mkdir /tmp/patches +ADD *.patch /tmp/patches/ +RUN bash -xec '\ + cd /usr/local/go ; \ + for patch in /tmp/patches/*.patch ; do \ + patch -p0 < "$patch" ; \ + done \ + ' RUN bash -xec '\ cd /usr/local/go/src; \ diff --git a/docker/go-9102.patch b/docker/go-9102.patch new file mode 100644 index 000000000..300c50e21 --- /dev/null +++ b/docker/go-9102.patch @@ -0,0 +1,22 @@ +--- src/syscall/route_openbsd.go.orig Fri Jul 25 23:38:47 2014 ++++ src/syscall/route_openbsd.go Fri Jul 25 23:39:20 2014 +@@ -12,16 +12,16 @@ func (any *anyMessage) toRoutingMessage(b []byte) Rout + switch any.Type { + case RTM_ADD, RTM_DELETE, RTM_CHANGE, RTM_GET, RTM_LOSING, RTM_REDIRECT, RTM_MISS, RTM_LOCK, RTM_RESOLVE: + p := (*RouteMessage)(unsafe.Pointer(any)) +- return &RouteMessage{Header: p.Header, Data: b[SizeofRtMsghdr:any.Msglen]} ++ return &RouteMessage{Header: p.Header, Data: b[p.Header.Hdrlen:any.Msglen]} + case RTM_IFINFO: + p := (*InterfaceMessage)(unsafe.Pointer(any)) +- return &InterfaceMessage{Header: p.Header, Data: b[SizeofIfMsghdr:any.Msglen]} ++ return &InterfaceMessage{Header: p.Header, Data: b[p.Header.Hdrlen:any.Msglen]} + case RTM_IFANNOUNCE: + p := (*InterfaceAnnounceMessage)(unsafe.Pointer(any)) + return &InterfaceAnnounceMessage{Header: p.Header} + case RTM_NEWADDR, RTM_DELADDR: + p := (*InterfaceAddrMessage)(unsafe.Pointer(any)) +- return &InterfaceAddrMessage{Header: p.Header, Data: b[SizeofIfaMsghdr:any.Msglen]} ++ return &InterfaceAddrMessage{Header: p.Header, Data: b[p.Header.Hdrlen:any.Msglen]} + } + return nil + }