diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..72e8ffc --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +* diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1137f14 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +# Dockerfile for cross-platform Pomo builds +FROM golang:1.12-stretch + +ENV OSXCROSS_REPO="https://github.com/tpoechtrager/osxcross.git" +ENV OSX_SDK_TARBALL="https://s3.dockerproject.org/darwin/v2/MacOSX10.11.sdk.tar.xz" + +RUN \ + apt-get update -yyq \ + && apt-get install -yyq \ + clang \ + libxml2 \ + patch \ + xz-utils + +RUN \ + mkdir /build \ + && cd /build \ + && git clone --depth=1 "$OSXCROSS_REPO" \ + && cd osxcross/tarballs \ + && wget "$OSX_SDK_TARBALL" \ + && cd .. \ + && UNATTENDED=1 ./build.sh + +ENV PATH="$PATH:/build/osxcross/target/bin" diff --git a/Makefile b/Makefile index 329b10a..a0046eb 100644 --- a/Makefile +++ b/Makefile @@ -1,25 +1,22 @@ +DOCKER_CMD=docker run --rm -ti --user 1000 -w /build/pomo -v $$PWD:/build/pomo +DOCKER_IMAGE=pomo-build VERSION ?= $(shell git describe --tags 2>/dev/null) ifeq "$(VERSION)" "" VERSION := UNKNOWN endif .PHONY: \ - all \ test \ docs \ + pomo-build \ readme \ release \ release-linux \ release-darwin -all: bin/pomo - bin/pomo: test go build -o $@ -clean: - -rm -rfv bin/* docs/* - bindata.go: tomato-icon.png go-bindata -pkg main -o $@ $^ @@ -27,16 +24,23 @@ test: go test ./... go vet ./... +pomo-build: + docker build -t $(DOCKER_IMAGE) . + +bin/pomo-linux: bin/pomo-$(VERSION)-linux-amd64 + +bin/pomo-darwin: bin/pomo-$(VERSION)-darwin-amd64 + bin/pomo-$(VERSION)-linux-amd64: bin bindata.go - go build -ldflags "-X main.Version=$(VERSION)" -o $@ + $(DOCKER_CMD) --env GOOS=linux --env GOARCH=amd64 $(DOCKER_IMAGE) go build -ldflags "-X main.Version=$(VERSION)" -o $@ bin/pomo-$(VERSION)-linux-amd64.md5: md5sum bin/pomo-$(VERSION)-linux-amd64 | sed -e 's/bin\///' > $@ bin/pomo-$(VERSION)-darwin-amd64: bin bindata.go - # This is used to cross-compile a Darwin compatible Mach-O executable + # This is used to cross-compile a Darwin compatible Mach-O executable # on Linux for OSX, you need to install https://github.com/tpoechtrager/osxcross - PATH="$$PATH:/usr/local/osx-ndk-x86/bin" GOOS=darwin GOARCH=amd64 CC=/usr/local/osx-ndk-x86/bin/x86_64-apple-darwin15-cc CGO_ENABLED=1 go build $(FLAGS) -o $@ + $(DOCKER_CMD) --env GOOS=darwin --env GOARCH=amd64 --env CC=x86_64-apple-darwin15-cc --env CGO_ENABLED=1 $(DOCKER_IMAGE) go build -ldflags "-X main.Version=$(VERSION)" -o $@ bin/pomo-$(VERSION)-darwin-amd64.md5: