+termux_download() {
+ URL="$1"
+ DESTINATION="$2"
+
+ TMPFILE=`mktemp $TERMUX_PKG_TMPDIR/download.XXXXXXXXX`
+ for i in 1 2 3; do
+ if curl -L --fail --retry 2 -o "$TMPFILE" "$URL"; then
+ mv "$TMPFILE" "$DESTINATION"
+ return
+ else
+ echo "Download of $1 failed (attempt $i/3)" 1>&2
+ sleep 6
+ fi
+ done
+ echo "Failed to download $1 - exiting" 1>&2
+ exit 1
+}
+
+termux_setup_golang () {
+ export GOOS=android
+ export CGO_ENABLED=1
+ export GO_LDFLAGS="-extldflags=-pie"
+ if [ "$TERMUX_ARCH" = "arm" ]; then
+ export GOARCH=arm
+ export GOARM=7
+ elif [ "$TERMUX_ARCH" = "i686" ]; then
+ export GOARCH=386
+ export GO386=sse2
+ elif [ "$TERMUX_ARCH" = "aarch64" ]; then
+ export GOARCH=arm64
+ elif [ "$TERMUX_ARCH" = "x86_64" ]; then
+ export GOARCH=amd64
+ else
+ echo "ERROR: Unsupported arch: $TERMUX_ARCH"
+ exit 1
+ fi
+
+ local TERMUX_GO_VERSION=go1.6.2
+ local TERMUX_GO_PLATFORM=linux-amd64
+ test `uname` = "Darwin" && TERMUX_GO_PLATFORM=darwin-amd64
+
+ export TERMUX_BUILDGO_FOLDER=$TERMUX_COMMON_CACHEDIR/${TERMUX_GO_VERSION}.${TERMUX_GO_PLATFORM}
+ export GOROOT=$TERMUX_BUILDGO_FOLDER
+ export PATH=$GOROOT/bin:$PATH
+
+ if [ -d $TERMUX_BUILDGO_FOLDER ]; then return; fi
+
+ local TERMUX_BUILDGO_TAR=$TERMUX_COMMON_CACHEDIR/${TERMUX_GO_VERSION}.${TERMUX_GO_PLATFORM}.tar.gz
+ rm -Rf $TERMUX_COMMON_CACHEDIR/go $TERMUX_BUILDGO_FOLDER
+ termux_download https://storage.googleapis.com/golang/${TERMUX_GO_VERSION}.${TERMUX_GO_PLATFORM}.tar.gz $TERMUX_BUILDGO_TAR
+ ( cd $TERMUX_COMMON_CACHEDIR; tar xf $TERMUX_BUILDGO_TAR; mv go $TERMUX_BUILDGO_FOLDER; rm $TERMUX_BUILDGO_TAR )
+}
+