#!/usr/bin/env bash # # This script builds the application from source. set -e # Get the parent directory of where this script is. SOURCE="${BASH_SOURCE[0]}" while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done DIR="$( cd -P "$( dirname "$SOURCE" )/.." && pwd )" # Change into that directory cd $DIR # Get the git commit GIT_COMMIT=$(git rev-parse HEAD) GIT_DIRTY=$(test -n "`git status --porcelain`" && echo "+CHANGES" || true) GIT_DESCRIBE=$(git describe --tags) # If we're building on Windows, specify an extension EXTENSION="" if [ "$(go env GOOS)" = "windows" ]; then EXTENSION=".exe" fi GOPATHSINGLE=${GOPATH%%:*} if [ "$(go env GOOS)" = "windows" ]; then GOPATHSINGLE=${GOPATH%%;*} fi if [ "$(go env GOOS)" = "freebsd" ]; then export CC="clang" fi # On OSX, we need to use an older target to ensure binaries are # compatible with older linkers if [ "$(go env GOOS)" = "darwin" ]; then export MACOSX_DEPLOYMENT_TARGET=10.6 fi # Install dependencies echo "--> Installing dependencies to speed up builds..." go get \ -ldflags "${CGO_LDFLAGS}" \ ./... # Build! echo "--> Building..." go build \ -ldflags "${CGO_LDFLAGS} -X main.GitCommit ${GIT_COMMIT}${GIT_DIRTY} -X main.GitDescribe ${GIT_DESCRIBE}" \ -v \ -o bin/consul${EXTENSION} cp bin/consul${EXTENSION} ${GOPATHSINGLE}/bin