Skip to content

Instantly share code, notes, and snippets.

@robertely
Last active October 9, 2020 21:52
Show Gist options
  • Save robertely/64fc0fc61641a47ce85323803dc03fe3 to your computer and use it in GitHub Desktop.
Save robertely/64fc0fc61641a47ce85323803dc03fe3 to your computer and use it in GitHub Desktop.
Bash script for building golang 1.8 for the NTC CHIP, or any other arm 7 device.
#!/bin/bash
#######################
# Downloads and builds golang.
# Does not install godoc, you may want to `go get` that after install.
# To install:
# sudo tar -C /usr/local -xzfv go1.8.linux-arm7.tar.gz
# export PATH=$PATH:/usr/local/go/bin
# If you are on a CHIP Pro and don't have room for the archive and it's contents:
# cat go1.8.linux-arm7.tar.gz | ssh -t chip@chip.local "tar xzfv - -C ~/"
# login and move ~/go to /usr/local/
REPO="https://go.googlesource.com/go"
BRANCH="go1.8"
_GOBIN="$(which go)"
export GOROOT_BOOTSTRAP="$(readlink -f ${_GOBIN}|sed 's/bin\/go//g')"
export GOOS="linux" # Target OS
export GOARCH="arm" # Target arch
export GOARM="7" # Target Floating point version (VFPv3)
export GOROOT_FINAL="/usr/local/go/"
export GO_BUILDROOT="$BRANCH.$GOOS-$GOARCH$GOARM"
echo
echo "#######################"
echo "# Options"
echo "#######################"
printenv|grep GO
if [ ! -d "go/" ]; then
echo
echo "#######################"
echo "# Fetching go src"
echo "#######################"
git clone ${REPO}
fi
echo
echo "#######################"
echo "# Verifying branch"
echo "#######################"
cd go
git checkout $BRANCH
cd src
echo
echo "#######################"
echo "# Building go"
echo "#######################"
# Build golang
./make.bash
cd ../../
echo
echo "#######################"
echo "# Setting up buildroot"
echo "#######################"
if [ ! -d $GO_BUILDROOT/go/ ]; then
mkdir -p $GO_BUILDROOT/go/api
mkdir -p $GO_BUILDROOT/go/bin
# mkdir -p $GO_BUILDROOT/go/blog # No.
mkdir -p $GO_BUILDROOT/go/doc
mkdir -p $GO_BUILDROOT/go/lib
mkdir -p $GO_BUILDROOT/go/misc
mkdir -p $GO_BUILDROOT/go/pkg
mkdir -p $GO_BUILDROOT/go/src
mkdir -p $GO_BUILDROOT/go/test
fi
rsync -av --progress go/api $GO_BUILDROOT/go/
rsync -av --progress go/doc $GO_BUILDROOT/go/
rsync -av --progress go/lib $GO_BUILDROOT/go/
rsync -av --progress go/misc $GO_BUILDROOT/go/
rsync -av --progress go/test $GO_BUILDROOT/go/
rsync -av --progress go/src $GO_BUILDROOT/go/
rsync -av --progress go/pkg $GO_BUILDROOT/go/ --exclude '*linux_amd64*' --exclude '*bootstrap*'
rsync -av --progress go/bin/linux_arm/ $GO_BUILDROOT/go/bin/
rsync -av --progress go/{AUTHORS,CONTRIBUTORS,CONTRIBUTING.md,favicon.ico,LICENSE,PATENTS,README.md,robots.txt,VERSION} $GO_BUILDROOT/go/
echo
echo "#######################"
echo "# Building Archive"
echo "#######################"
tar -czvf $GO_BUILDROOT.tar.gz -C $GO_BUILDROOT go/
echo "Done."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment