Skip to content

Commit 8448659

Browse files
karlskeweslhauspie
authored andcommitted
feat(arm): Add build and install support for armv6 and arm64
On path to close golang#1807 on [oauth2_proxy arm support](oauth2-proxy/oauth2-proxy#16) Tested: - Building armv6 and arm64 binaries on amd64 - Running arm binaries - Using armv6 binary on RPi 3B to build another project [oauth2_proxy](https://github.com/kskewes/oauth2_proxy/tree/build) (`dep ensure`) Not verified: - Install script completes as binaries not published, looks okay though. - `hack/test.bash` - must have missed something. armv6 (RPi 3B): ``` karl@pi1:~/go/src/github.com/pusher/oauth2_proxy $ dep version dep: version : v0.5.0-31-g73b3afef-dirty build date : 2019-02-01 git hash : 73b3afe go version : go1.11.5 go compiler : gc platform : linux/arm features : ImportDuringSolve=false karl@pi1:~/go/src/github.com/pusher/oauth2_proxy $ make dep dep ensure --vendor-only karl@pi1:~/go/src/github.com/pusher/oauth2_proxy $ uname -m armv7l karl@pi1:~ $ ./install.sh ARCH = arm OS = linux Will install into /home/karl/go/bin Fetching https://github.com/golang/dep/releases/latest.. Release Tag = v0.5.0 Fetching https://github.com/golang/dep/releases/tag/v0.5.0.. Fetching https://github.com/golang/dep/releases/download/v0.5.0/dep-linux-arm.. Request failed with code 404 karl@pi1:~ $ ./test.bash go test: -race is only supported on linux/amd64, linux/ppc64le, freebsd/amd64, netbsd/amd64, darwin/amd64 and windows/amd64 ``` arm64 (Rock64): ``` rock64@k8s-w-01:~$ ./dep-linux-arm64 version dep: version : v0.5.0-31-g73b3afef-dirty build date : 2019-02-01 git hash : 73b3afe go version : go1.11.5 go compiler : gc platform : linux/arm64 features : ImportDuringSolve=false rock64@k8s-w-01:~$ uname -m aarch64 rock64@k8s-w-01:~$ ./install.sh ARCH = arm64 OS = linux Will install into /home/rock64/go/bin Fetching https://github.com/golang/dep/releases/latest.. Release Tag = v0.5.0 Fetching https://github.com/golang/dep/releases/tag/v0.5.0.. Fetching https://github.com/golang/dep/releases/download/v0.5.0/dep-linux-arm64.. Request failed with code 404 ```
1 parent b745f5f commit 8448659

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

.travis.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ jobs:
102102
- release/dep-linux-ppc64le.sha256
103103
- release/dep-linux-s390x
104104
- release/dep-linux-s390x.sha256
105+
- release/dep-linux-armv6
106+
- release/dep-linux-armv6.sha256
107+
- release/dep-linux-arm64
108+
- release/dep-linux-arm64.sha256
105109
skip_cleanup: true
106110
on:
107111
repo: golang/dep

hack/build-all.bash

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ if [[ -z "${DEP_BUILD_PLATFORMS}" ]]; then
3131
fi
3232

3333
if [[ -z "${DEP_BUILD_ARCHS}" ]]; then
34-
DEP_BUILD_ARCHS="amd64 386 ppc64 ppc64le s390x"
34+
DEP_BUILD_ARCHS="amd64 386 ppc64 ppc64le s390x arm arm64"
3535
fi
3636

3737
mkdir -p "${DEP_ROOT}/release"
@@ -50,8 +50,8 @@ for OS in ${DEP_BUILD_PLATFORMS[@]}; do
5050
else
5151
CGO_ENABLED=0
5252
fi
53-
if [[ "${ARCH}" == "ppc64" || "${ARCH}" == "ppc64le" || "${ARCH}" == "s390x" ]] && [[ "${OS}" != "linux" ]]; then
54-
# ppc64, ppc64le, and s390x are only supported on Linux.
53+
if [[ "${ARCH}" == "ppc64" || "${ARCH}" == "ppc64le" || "${ARCH}" == "s390x" || "${ARCH}" == "arm" || "${ARCH}" == "arm64" ]] && [[ "${OS}" != "linux" ]]; then
54+
# ppc64, ppc64le, s390x, arm and arm64 are only supported on Linux.
5555
echo "Building for ${OS}/${ARCH} not supported."
5656
else
5757
echo "Building for ${OS}/${ARCH} with CGO_ENABLED=${CGO_ENABLED}"

install.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ initArch() {
9797
ppc64) ARCH="ppc64";;
9898
ppc64le) ARCH="ppc64le";;
9999
s390x) ARCH="s390x";;
100+
armv6*) ARCH="arm";;
101+
armv7*) ARCH="arm";;
102+
aarch64) ARCH="arm64";;
100103
*) echo "Architecture ${ARCH} is not supported by this installation script"; exit 1;;
101104
esac
102105
echo "ARCH = $ARCH"

0 commit comments

Comments
 (0)