From ec2a8d0dc6398cf7d926aae9dcb0bbc4e102bc25 Mon Sep 17 00:00:00 2001 From: WithoutPants <53250216+WithoutPants@users.noreply.github.com> Date: Sat, 16 Nov 2019 09:29:45 +1100 Subject: [PATCH] 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 --- .travis.yml | 1 + docker/compiler/Dockerfile | 44 ++++++++++++++++++-------------------- docker/compiler/Makefile | 4 ++-- scripts/cross-compile.sh | 5 +++-- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2181b806b..200cfaf90 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,6 +31,7 @@ deploy: - dist/stash-osx - dist/stash-win.exe - dist/stash-linux + - dist/stash-pi skip_cleanup: true overwrite: true body: ${RELEASE_DATE} diff --git a/docker/compiler/Dockerfile b/docker/compiler/Dockerfile index 74fffc045..1a0126979 100644 --- a/docker/compiler/Dockerfile +++ b/docker/compiler/Dockerfile @@ -2,39 +2,43 @@ FROM golang:1.11.5 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_SHA=f95ff4c96d7a28813220df030ad91700b8464fe292ab3e1dc9582305c2a338d2 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} # 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 && \ apt-get install -y automake autogen \ libtool libxml2-dev uuid-dev libssl-dev bash \ 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/*; # Cross compile setup 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_NDK_X86 /usr/local/osx-ndk-x86 -ENV OSX_SDK_PATH /$OSX_SDK.tar.gz -COPY $OSX_SDK.tar.gz /go - -RUN git clone https://github.com/tpoechtrager/osxcross.git && \ - git -C osxcross checkout c47ff0aeed1a7d0e1f884812fc170e415f05be5a || exit 1; \ - mv $OSX_SDK.tar.gz osxcross/tarballs/ && \ - UNATTENDED=yes SDK_VERSION=${OSX_SDK_VERSION} OSX_VERSION_MIN=10.9 osxcross/build.sh || exit 1; \ - mv osxcross/target $OSX_NDK_X86; \ - rm -rf osxcross; +RUN wget ${OSX_SDK_DOWNLOAD_URL} +RUN echo "$OSX_SDK_SHA $OSX_SDK_DOWNLOAD_FILE" | sha256sum -c - || exit 1; \ + git clone https://github.com/tpoechtrager/osxcross.git && \ + git -C osxcross checkout a9317c18a3a457ca0a657f08cc4d0d43c6cf8953 || exit 1; \ + mv $OSX_SDK_DOWNLOAD_FILE osxcross/tarballs/ && \ + UNATTENDED=yes SDK_VERSION=${OSX_SDK_VERSION} OSX_VERSION_MIN=10.9 osxcross/build.sh || exit 1; \ + mv osxcross/target $OSX_NDK_X86; \ + rm -rf osxcross; ENV PATH $OSX_NDK_X86/bin:$PATH @@ -42,17 +46,11 @@ RUN mkdir -p /root/.ssh; \ chmod 0700 /root/.ssh; \ 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}; \ echo "$PACKR2_SHA $PACKR2_DOWNLOAD_FILE" | sha256sum -c - || exit 1; \ tar -xzf $PACKR2_DOWNLOAD_FILE -C /usr/bin/ packr2; \ rm $PACKR2_DOWNLOAD_FILE; -CMD ["goreleaser", "-v"] CMD ["packr2", "version"] @@ -63,4 +61,4 @@ CMD ["packr2", "version"] # Darwin # 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 \ No newline at end of file +# env GO111MODULE=on goreleaser --config=goreleaser-extended.yml --skip-publish --skip-validate --rm-dist --release-notes=temp/0.48-relnotes-ready.md diff --git a/docker/compiler/Makefile b/docker/compiler/Makefile index 442f19a97..278130e0f 100644 --- a/docker/compiler/Makefile +++ b/docker/compiler/Makefile @@ -1,6 +1,6 @@ user=stashappdev repo=compiler -version=1 +version=2 latest: docker build -t ${user}/${repo}:latest . @@ -13,4 +13,4 @@ build-no-cache: install: build docker push ${user}/${repo}:${version} - docker push ${user}/${repo}:latest \ No newline at end of file + docker push ${user}/${repo}:latest diff --git a/scripts/cross-compile.sh b/scripts/cross-compile.sh index 6a1d6d45a..894fc4f4f 100755 --- a/scripts/cross-compile.sh +++ b/scripts/cross-compile.sh @@ -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;" 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;" +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" \ No newline at end of file +docker run --rm --mount type=bind,source="$(pwd)",target=/stash -w /stash stashappdev/compiler:2 /bin/bash -c "$COMMAND"