| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- FROM golang:1.8-alpine
- RUN apk add --no-cache \
- file \
- gnupg \
- libressl
- WORKDIR /usr/src/bashbrew
- ENV GOPATH /usr/src/bashbrew:/usr/src/bashbrew/vendor
- ENV CGO_ENABLED 0
- # https://github.com/estesp/manifest-tool/releases
- ENV MANIFEST_TOOL_VERSION 0.5.0
- # gpg: key 0F386284C03A1162: public key "Philip Estes <[email protected]>" imported
- ENV MANIFEST_TOOL_GPG_KEY 27F3EA268A97867EAF0BD05C0F386284C03A1162
- COPY go .
- RUN set -ex; \
- \
- export GNUPGHOME="$(mktemp -d)"; \
- gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$MANIFEST_TOOL_GPG_KEY"; \
- \
- mkdir bin; \
- for osArch in \
- amd64 \
- arm32v5 \
- arm32v6 \
- arm32v7 \
- arm64v8 \
- darwin-amd64 \
- i386 \
- ppc64le \
- s390x \
- windows-amd64 \
- ; do \
- os="${osArch%%-*}"; \
- [ "$os" != "$osArch" ] || os='linux'; \
- export GOOS="$os"; \
- arch="${osArch#${os}-}"; \
- unset GOARM GO386; \
- case "$arch" in \
- arm32v*) export GOARCH='arm' GOARM="${arch#arm32v}" ;; \
- # no GOARM for arm64 (yet?) -- https://github.com/golang/go/blob/1e72bf62183ea21b9affffd4450d44d994393899/src/cmd/internal/objabi/util.go#L40
- arm64v*) export GOARCH='arm64' ;; \
- i386) export GOARCH='386' ;; \
- *) export GOARCH="$arch" ;; \
- esac; \
- \
- [ "$os" = 'windows' ] && ext='.exe' || ext=''; \
- \
- go build \
- -a -v \
- -ldflags '-s -w' \
- # see https://github.com/golang/go/issues/9737#issuecomment-276817652 (and following comments) -- installsuffix is necessary (for now) to keep ARM
- # can remove "$osArch" from "installsuffix" in Go 1.10+ (https://github.com/golang/go/commit/1b53f15ebb00dd158af674df410c7941abb2b933)
- -tags netgo -installsuffix "netgo-$osArch" \
- -o "bin/bashbrew-$osArch$ext" \
- ./src/bashbrew; \
- \
- case "$GOARCH" in \
- # manifest-tool and GOARM aren't friends yet
- # ... and estesp is probably a big fat "lololol" on supporting i386 :D
- arm|386) continue ;; \
- esac; \
- wget -O "bin/manifest-tool-$osArch$ext" "https://github.com/estesp/manifest-tool/releases/download/v${MANIFEST_TOOL_VERSION}/manifest-tool-$GOOS-$GOARCH$ext"; \
- wget -O "bin/manifest-tool-$osArch$ext.asc" "https://github.com/estesp/manifest-tool/releases/download/v${MANIFEST_TOOL_VERSION}/manifest-tool-$GOOS-$GOARCH$ext.asc"; \
- gpg --batch --verify "bin/manifest-tool-$osArch$ext.asc" "bin/manifest-tool-$osArch$ext"; \
- done; \
- \
- rm -rf "$GNUPGHOME"; \
- \
- ls -l bin; \
- file bin/*
|