From 84a77889c3b112a8ecdbd52cb6a0f914aac272e5 Mon Sep 17 00:00:00 2001 From: Daniel Nephin Date: Fri, 12 May 2017 11:30:30 -0400 Subject: [PATCH] Add windows and linux cross. Signed-off-by: Daniel Nephin --- dockerfiles/Dockerfile.cross | 5 ++--- scripts/build/cross | 20 ++++---------------- scripts/build/linux-cross | 21 +++++++++++++++++++++ scripts/build/windows | 19 +++++++++++++++++++ 4 files changed, 46 insertions(+), 19 deletions(-) create mode 100755 scripts/build/linux-cross create mode 100755 scripts/build/windows diff --git a/dockerfiles/Dockerfile.cross b/dockerfiles/Dockerfile.cross index 2af3d24aef..6c62f03157 100644 --- a/dockerfiles/Dockerfile.cross +++ b/dockerfiles/Dockerfile.cross @@ -7,11 +7,10 @@ RUN sed -ri "s/(httpredir|deb).debian.org/$APT_MIRROR/g" /etc/apt/sources.li RUN apt-get update && apt-get install -y \ libltdl-dev \ + gcc-mingw-w64 \ + parallel \ ; -# build-essential \ -# binutils-mingw-w64 gcc-mingw-w64 - RUN go get github.com/mitchellh/gox && \ cp /go/bin/gox /usr/bin && \ rm -rf /go/src/* /go/pkg/* /go/bin/* diff --git a/scripts/build/cross b/scripts/build/cross index 62cb687aa7..1d7931c90a 100755 --- a/scripts/build/cross +++ b/scripts/build/cross @@ -2,20 +2,8 @@ set -eu -o pipefail -source ./scripts/build/.variables +export BUILDDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Wow, gox doesn't like extra spaces between these strings... -CROSS_OSARCH="\ -windows/amd64" - -#darwin/amd64 \ -#linux/amd64 \ -#linux/arm \ - -# Currently broken -# linux/ppc64le \ - -gox -output build/docker-{{.OS}}-{{.Arch}} \ - -osarch "${CROSS_OSARCH}" \ - --ldflags "${LDFLAGS}" \ - ${SOURCE} +SHELL=/bin/bash parallel ::: \ + "$BUILDDIR/linux-cross" \ + "$BUILDDIR/windows" diff --git a/scripts/build/linux-cross b/scripts/build/linux-cross new file mode 100755 index 0000000000..fa5c9cf047 --- /dev/null +++ b/scripts/build/linux-cross @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# +# Build static linux binary for multiple architectures +# + +set -eu -o pipefail + +source ./scripts/build/.variables + +CROSS_OSARCH="linux/amd64 linux/arm" + +# Compile is broken +# linux/ppc64le + +# Not yet supported by gox +# linux/s390x + +gox -output build/docker-{{.OS}}-{{.Arch}} \ + -osarch "${CROSS_OSARCH}" \ + --ldflags "${LDFLAGS}" \ + "${SOURCE}" diff --git a/scripts/build/windows b/scripts/build/windows new file mode 100755 index 0000000000..1da07a5f97 --- /dev/null +++ b/scripts/build/windows @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +# +# Build a windows binary from linux +# + +set -eu -o pipefail + +source ./scripts/build/.variables + +export CC=x86_64-w64-mingw32-gcc +export CGO_ENABLED=1 +export GOOS=windows +export GOARCH=amd64 + +# Override TARGET +export TARGET="build/docker-windows-amd64" + +# TODO: -tags pkcs11 +go build -o "${TARGET}" --ldflags "${LDFLAGS}" "${SOURCE}"