Add Raspberry Pi binary to builds (#189)

* Add Raspberry Pi binary to builds

* Attempt to add arm cross compile to dockerfile

* WIP fix for OSX crosscompiler

* WIP docker build debug

* Fix errors building docker image
This commit is contained in:
WithoutPants
2019-11-16 09:29:45 +11:00
committed by Leopere
parent a6b8a3f2e8
commit ec2a8d0dc6
4 changed files with 27 additions and 27 deletions

View File

@@ -31,6 +31,7 @@ deploy:
- dist/stash-osx - dist/stash-osx
- dist/stash-win.exe - dist/stash-win.exe
- dist/stash-linux - dist/stash-linux
- dist/stash-pi
skip_cleanup: true skip_cleanup: true
overwrite: true overwrite: true
body: ${RELEASE_DATE} body: ${RELEASE_DATE}

View File

@@ -2,39 +2,43 @@ FROM golang:1.11.5
LABEL maintainer="stashappdev@gmail.com" LABEL maintainer="stashappdev@gmail.com"
ENV GORELEASER_VERSION=0.95.0
ENV GORELEASER_SHA=4f3b9fc978a3677806ebd959096a1f976a7c7bb5fbdf7a9a1d01554c8c5c31c5
ENV GORELEASER_DOWNLOAD_FILE=goreleaser_Linux_x86_64.tar.gz
ENV GORELEASER_DOWNLOAD_URL=https://github.com/goreleaser/goreleaser/releases/download/v${GORELEASER_VERSION}/${GORELEASER_DOWNLOAD_FILE}
ENV PACKR2_VERSION=2.0.2 ENV PACKR2_VERSION=2.0.2
ENV PACKR2_SHA=f95ff4c96d7a28813220df030ad91700b8464fe292ab3e1dc9582305c2a338d2 ENV PACKR2_SHA=f95ff4c96d7a28813220df030ad91700b8464fe292ab3e1dc9582305c2a338d2
ENV PACKR2_DOWNLOAD_FILE=packr_${PACKR2_VERSION}_linux_amd64.tar.gz ENV PACKR2_DOWNLOAD_FILE=packr_${PACKR2_VERSION}_linux_amd64.tar.gz
ENV PACKR2_DOWNLOAD_URL=https://github.com/gobuffalo/packr/releases/download/v${PACKR2_VERSION}/${PACKR2_DOWNLOAD_FILE} ENV PACKR2_DOWNLOAD_URL=https://github.com/gobuffalo/packr/releases/download/v${PACKR2_VERSION}/${PACKR2_DOWNLOAD_FILE}
# Install tools # Install tools
RUN apt-get update && apt-get install -y apt-transport-https
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update && \ RUN apt-get update && \
apt-get install -y automake autogen \ apt-get install -y automake autogen \
libtool libxml2-dev uuid-dev libssl-dev bash \ libtool libxml2-dev uuid-dev libssl-dev bash \
patch make tar xz-utils bzip2 gzip sed cpio \ patch make tar xz-utils bzip2 gzip sed cpio \
gcc-multilib g++-multilib gcc-mingw-w64 g++-mingw-w64 clang llvm-dev --no-install-recommends || exit 1; \ gcc-6-multilib g++-6-multilib gcc-mingw-w64 g++-mingw-w64 clang llvm-dev \
gcc-arm-linux-gnueabi libc-dev-armel-cross linux-libc-dev-armel-cross \
nodejs yarn --no-install-recommends || exit 1; \
rm -rf /var/lib/apt/lists/*; rm -rf /var/lib/apt/lists/*;
# Cross compile setup # Cross compile setup
ENV OSX_SDK_VERSION 10.11 ENV OSX_SDK_VERSION 10.11
ENV OSX_SDK_DOWNLOAD_FILE=MacOSX${OSX_SDK_VERSION}.sdk.tar.xz
ENV OSX_SDK_DOWNLOAD_URL=https://github.com/ndeloof/golang-cross/raw/113fix/${OSX_SDK_DOWNLOAD_FILE}
ENV OSX_SDK_SHA=98cdd56e0f6c1f9e1af25e11dd93d2e7d306a4aa50430a2bc6bc083ac67efbb8
ENV OSX_SDK MacOSX$OSX_SDK_VERSION.sdk ENV OSX_SDK MacOSX$OSX_SDK_VERSION.sdk
ENV OSX_NDK_X86 /usr/local/osx-ndk-x86 ENV OSX_NDK_X86 /usr/local/osx-ndk-x86
ENV OSX_SDK_PATH /$OSX_SDK.tar.gz
COPY $OSX_SDK.tar.gz /go RUN wget ${OSX_SDK_DOWNLOAD_URL}
RUN echo "$OSX_SDK_SHA $OSX_SDK_DOWNLOAD_FILE" | sha256sum -c - || exit 1; \
RUN git clone https://github.com/tpoechtrager/osxcross.git && \ git clone https://github.com/tpoechtrager/osxcross.git && \
git -C osxcross checkout c47ff0aeed1a7d0e1f884812fc170e415f05be5a || exit 1; \ git -C osxcross checkout a9317c18a3a457ca0a657f08cc4d0d43c6cf8953 || exit 1; \
mv $OSX_SDK.tar.gz osxcross/tarballs/ && \ mv $OSX_SDK_DOWNLOAD_FILE osxcross/tarballs/ && \
UNATTENDED=yes SDK_VERSION=${OSX_SDK_VERSION} OSX_VERSION_MIN=10.9 osxcross/build.sh || exit 1; \ UNATTENDED=yes SDK_VERSION=${OSX_SDK_VERSION} OSX_VERSION_MIN=10.9 osxcross/build.sh || exit 1; \
mv osxcross/target $OSX_NDK_X86; \ mv osxcross/target $OSX_NDK_X86; \
rm -rf osxcross; rm -rf osxcross;
ENV PATH $OSX_NDK_X86/bin:$PATH ENV PATH $OSX_NDK_X86/bin:$PATH
@@ -42,17 +46,11 @@ RUN mkdir -p /root/.ssh; \
chmod 0700 /root/.ssh; \ chmod 0700 /root/.ssh; \
ssh-keyscan github.com > /root/.ssh/known_hosts; ssh-keyscan github.com > /root/.ssh/known_hosts;
RUN wget ${GORELEASER_DOWNLOAD_URL}; \
echo "$GORELEASER_SHA $GORELEASER_DOWNLOAD_FILE" | sha256sum -c - || exit 1; \
tar -xzf $GORELEASER_DOWNLOAD_FILE -C /usr/bin/ goreleaser; \
rm $GORELEASER_DOWNLOAD_FILE;
RUN wget ${PACKR2_DOWNLOAD_URL}; \ RUN wget ${PACKR2_DOWNLOAD_URL}; \
echo "$PACKR2_SHA $PACKR2_DOWNLOAD_FILE" | sha256sum -c - || exit 1; \ echo "$PACKR2_SHA $PACKR2_DOWNLOAD_FILE" | sha256sum -c - || exit 1; \
tar -xzf $PACKR2_DOWNLOAD_FILE -C /usr/bin/ packr2; \ tar -xzf $PACKR2_DOWNLOAD_FILE -C /usr/bin/ packr2; \
rm $PACKR2_DOWNLOAD_FILE; rm $PACKR2_DOWNLOAD_FILE;
CMD ["goreleaser", "-v"]
CMD ["packr2", "version"] CMD ["packr2", "version"]
@@ -63,4 +61,4 @@ CMD ["packr2", "version"]
# Darwin # Darwin
# CC=o64-clang CXX=o64-clang++ GOOS=darwin GOARCH=amd64 CGO_ENABLED=1 go build -tags extended # CC=o64-clang CXX=o64-clang++ GOOS=darwin GOARCH=amd64 CGO_ENABLED=1 go build -tags extended
# env GO111MODULE=on goreleaser --config=goreleaser-extended.yml --skip-publish --skip-validate --rm-dist --release-notes=temp/0.48-relnotes-ready.md # env GO111MODULE=on goreleaser --config=goreleaser-extended.yml --skip-publish --skip-validate --rm-dist --release-notes=temp/0.48-relnotes-ready.md

View File

@@ -1,6 +1,6 @@
user=stashappdev user=stashappdev
repo=compiler repo=compiler
version=1 version=2
latest: latest:
docker build -t ${user}/${repo}:latest . docker build -t ${user}/${repo}:latest .
@@ -13,4 +13,4 @@ build-no-cache:
install: build install: build
docker push ${user}/${repo}:${version} docker push ${user}/${repo}:${version}
docker push ${user}/${repo}:latest docker push ${user}/${repo}:latest

View File

@@ -8,7 +8,8 @@ SETUP="export GO111MODULE=on; export CGO_ENABLED=1;"
WINDOWS="GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ packr2 build -o dist/stash-win.exe -ldflags \"-extldflags '-static' $VERSION_FLAGS\" -tags extended -v -mod=vendor;" WINDOWS="GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ packr2 build -o dist/stash-win.exe -ldflags \"-extldflags '-static' $VERSION_FLAGS\" -tags extended -v -mod=vendor;"
DARWIN="GOOS=darwin GOARCH=amd64 CC=o64-clang CXX=o64-clang++ packr2 build -o dist/stash-osx -ldflags \"$VERSION_FLAGS\" -tags extended -v -mod=vendor;" DARWIN="GOOS=darwin GOARCH=amd64 CC=o64-clang CXX=o64-clang++ packr2 build -o dist/stash-osx -ldflags \"$VERSION_FLAGS\" -tags extended -v -mod=vendor;"
LINUX="packr2 build -o dist/stash-linux -ldflags \"$VERSION_FLAGS\" -v -mod=vendor;" LINUX="packr2 build -o dist/stash-linux -ldflags \"$VERSION_FLAGS\" -v -mod=vendor;"
RASPPI="GOOS=linux GOARCH=arm GOARM=5 CC=arm-linux-gnueabi-gcc packr2 build -o dist/stash-pi -ldflags \"$VERSION_FLAGS\" -v -mod=vendor;"
COMMAND="$SETUP $WINDOWS $DARWIN $LINUX" COMMAND="$SETUP $WINDOWS $DARWIN $LINUX $RASPPI"
docker run --rm --mount type=bind,source="$(pwd)",target=/stash -w /stash stashappdev/compiler:1 /bin/bash -c "$COMMAND" docker run --rm --mount type=bind,source="$(pwd)",target=/stash -w /stash stashappdev/compiler:2 /bin/bash -c "$COMMAND"