diff options
| author | Petter Rasmussen | 2015-07-18 16:48:40 +0200 |
|---|---|---|
| committer | Petter Rasmussen | 2015-07-18 16:48:40 +0200 |
| commit | 2cf9d76d9b5bfae020971b2a42be4ba0a8df0eb5 (patch) | |
| tree | c839a99edb79f5ca242e50c5c53f457a9c31c7aa /_release | |
| parent | 72cfaf15c13bab07338df8e90af6cdb3dccc005e (diff) | |
| download | gdrive-2cf9d76d9b5bfae020971b2a42be4ba0a8df0eb5.tar.bz2 | |
Update release scripts
- Move scripts into _release folder
- Include crosscrompile script
- Minor adjustments
Diffstat (limited to '_release')
| -rwxr-xr-x | _release/build-all.sh | 44 | ||||
| -rw-r--r-- | _release/crosscompile.bash | 73 | ||||
| -rwxr-xr-x | _release/upload.sh | 22 |
3 files changed, 139 insertions, 0 deletions
diff --git a/_release/build-all.sh b/_release/build-all.sh new file mode 100755 index 0000000..414ae18 --- /dev/null +++ b/_release/build-all.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# Load crosscompile environment +source _release/crosscompile.bash + +APP_NAME="drive" +PLATFORMS="darwin/386 darwin/amd64 freebsd/386 freebsd/amd64 linux/386 linux/amd64 linux/arm linux/rpi windows/386 windows/amd64" +BIN_PATH="_release/bin" + +# Initialize bin dir +mkdir -p $BIN_PATH +rm $BIN_PATH/* + + +# Build binary for each platform in parallel +for PLATFORM in $PLATFORMS; do + GOOS=${PLATFORM%/*} + GOARCH=${PLATFORM#*/} + BIN_NAME="${APP_NAME}-${GOOS/darwin/osx}-${GOARCH/amd64/x64}" + + if [ $GOOS == "windows" ]; then + BIN_NAME="${BIN_NAME}.exe" + fi + + # Raspberrypi seems to need arm5 binaries + if [ $GOARCH == "rpi" ]; then + export GOARM=5 + GOARCH="arm" + else + unset GOARM + fi + + BUILD_CMD="go-${GOOS}-${GOARCH} build -ldflags '-w' -o ${BIN_PATH}/${BIN_NAME} $APP_NAME.go" + + echo "Building $BIN_NAME" + $BUILD_CMD & +done + +# Wait for builds to complete +for job in $(jobs -p); do + wait $job +done + +echo "All done" diff --git a/_release/crosscompile.bash b/_release/crosscompile.bash new file mode 100644 index 0000000..ef38522 --- /dev/null +++ b/_release/crosscompile.bash @@ -0,0 +1,73 @@ +#!/bin/bash +# Copyright 2012 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +# support functions for go cross compilation + +type setopt >/dev/null 2>&1 && setopt shwordsplit +PLATFORMS="darwin/386 darwin/amd64 freebsd/386 freebsd/amd64 freebsd/arm linux/386 linux/amd64 linux/arm windows/386 windows/amd64 openbsd/386 openbsd/amd64" + +function go-alias { + GOOS=${1%/*} + GOARCH=${1#*/} + eval "function go-${GOOS}-${GOARCH} { ( GOOS=${GOOS} GOARCH=${GOARCH} go \"\$@\" ) }" +} + +function go-crosscompile-build { + GOOS=${1%/*} + GOARCH=${1#*/} + cd $(go env GOROOT)/src ; GOOS=${GOOS} GOARCH=${GOARCH} ./make.bash --no-clean 2>&1 +} + +function go-crosscompile-build-all { + FAILURES="" + for PLATFORM in $PLATFORMS; do + CMD="go-crosscompile-build ${PLATFORM}" + echo "$CMD" + $CMD || FAILURES="$FAILURES $PLATFORM" + done + if [ "$FAILURES" != "" ]; then + echo "*** go-crosscompile-build-all FAILED on $FAILURES ***" + return 1 + fi +} + +function go-all { + FAILURES="" + for PLATFORM in $PLATFORMS; do + GOOS=${PLATFORM%/*} + GOARCH=${PLATFORM#*/} + CMD="go-${GOOS}-${GOARCH} $@" + echo "$CMD" + $CMD || FAILURES="$FAILURES $PLATFORM" + done + if [ "$FAILURES" != "" ]; then + echo "*** go-all FAILED on $FAILURES ***" + return 1 + fi +} + +function go-build-all { + FAILURES="" + for PLATFORM in $PLATFORMS; do + GOOS=${PLATFORM%/*} + GOARCH=${PLATFORM#*/} + SRCFILENAME=`echo $@ | sed 's/\.go//'` + CURDIRNAME=${PWD##*/} + OUTPUT=${SRCFILENAME:-$CURDIRNAME} # if no src file given, use current dir name + CMD="go-${GOOS}-${GOARCH} build -o $OUTPUT-${GOOS}-${GOARCH} $@" + echo "$CMD" + $CMD || FAILURES="$FAILURES $PLATFORM" + done + if [ "$FAILURES" != "" ]; then + echo "*** go-build-all FAILED on $FAILURES ***" + return 1 + fi +} + +for PLATFORM in $PLATFORMS; do + go-alias $PLATFORM +done + +unset -f go-alias diff --git a/_release/upload.sh b/_release/upload.sh new file mode 100755 index 0000000..ec66841 --- /dev/null +++ b/_release/upload.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Markdown helpers +HEADER='### Downloads' +ROW_TEMPLATE='- [{{name}}]({{url}})' + +# Grab application version +VERSION=$(_release/bin/drive-osx-x64 --version | awk '{print $2}' | sed -e 's/v//') + +# Print markdown header +echo "$HEADER" + +for bin_path in _release/bin/drive-*; do + # Upload file + URL=$(drive upload --file $bin_path --share | awk '/https/ {print $9}') + + # Render markdown row and print to screen + NAME="$(basename $bin_path) v${VERSION}" + ROW=${ROW_TEMPLATE//"{{name}}"/$NAME} + ROW=${ROW//"{{url}}"/$URL} + echo "$ROW" +done |
