besser
8/24/2017 - 3:57 AM

Bash script for building golang 1.9 for the NTC CHIP and PocketCHIP, or any other arm 7 device.

Bash script for building golang 1.9 for the NTC CHIP and PocketCHIP, 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.9.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.9.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.9"

_GOBIN="$(which go)"
if [ "$(uname)" == "Darwin" ]; then
    export GOROOT_BOOTSTRAP="$(readlink -n ${_GOBIN}|sed 's/bin\/go//g')"
else
    export GOROOT_BOOTSTRAP="$(readlink -f ${_GOBIN}|sed 's/bin\/go//g')"
fi
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."