Commit a6d5ebaf authored by Mitchell Hashimoto's avatar Mitchell Hashimoto

Merge pull request #719 from sudharsh/go_minver_verify

The required go version to build packer seems to be 1.2
parents f99837b4 d22b2a01
...@@ -53,9 +53,8 @@ it raises the chances we can quickly merge or address your contributions. ...@@ -53,9 +53,8 @@ it raises the chances we can quickly merge or address your contributions.
If you have never worked with Go before, you will have to complete the If you have never worked with Go before, you will have to complete the
following steps in order to be able to compile and test Packer. following steps in order to be able to compile and test Packer.
1. Install Go. On a Mac, you can `brew install go`. Make sure the Go 1. Install Go. Make sure the Go version is at least Go 1.2. Packer will not work with anything less than
version is at least Go 1.1. Packer will not work with anything less than Go 1.2. On a Mac, you can `brew install go` to install Go 1.2.
Go 1.1.
2. Set and export the `GOPATH` environment variable. For example, you can 2. Set and export the `GOPATH` environment variable. For example, you can
add `export GOPATH=$HOME/Documents/golang` to your `.bash_profile`. add `export GOPATH=$HOME/Documents/golang` to your `.bash_profile`.
......
...@@ -70,7 +70,7 @@ http://www.packer.io/docs ...@@ -70,7 +70,7 @@ http://www.packer.io/docs
## Developing Packer ## Developing Packer
If you wish to work on Packer itself, you'll first need [Go](http://golang.org) If you wish to work on Packer itself, you'll first need [Go](http://golang.org)
installed (version 1.1+ is _required_). Make sure you have Go properly installed, installed (version 1.2+ is _required_). Make sure you have Go properly installed,
including setting up your [GOPATH](http://golang.org/doc/code.html#GOPATH). including setting up your [GOPATH](http://golang.org/doc/code.html#GOPATH).
For some additional dependencies, Go needs [Mercurial](http://mercurial.selenic.com/) For some additional dependencies, Go needs [Mercurial](http://mercurial.selenic.com/)
......
...@@ -8,6 +8,40 @@ OK_COLOR="\x1b[32;01m" ...@@ -8,6 +8,40 @@ OK_COLOR="\x1b[32;01m"
ERROR_COLOR="\x1b[31;01m" ERROR_COLOR="\x1b[31;01m"
WARN_COLOR="\x1b[33;01m" WARN_COLOR="\x1b[33;01m"
# http://stackoverflow.com/questions/4023830/bash-how-compare-two-strings-in-version-format
verify_go () {
if [[ $1 == $2 ]]
then
return 0
fi
local IFS=.
local i ver1=($1) ver2=($2)
for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
do
ver1[i]=0
done
for ((i=0; i<${#ver1[@]}; i++))
do
if [[ -z ${ver2[i]} ]]
then
ver2[i]=0
fi
if ((10#${ver1[i]} > 10#${ver2[i]}))
then
echo -e "${ERROR_COLOR}==> Required Go version $1 not installed. Found $2 instead"
exit 1
fi
done
}
GO_MINIMUM_VERSION=1.2
GO_INSTALLED_VERSION=$(go version | cut -d ' ' -f 3)
GO_INSTALLED_VERSION=${GO_INSTALLED_VERSION#"go"}
echo -e "${OK_COLOR}==> Verifying Go"
verify_go $GO_MINIMUM_VERSION $GO_INSTALLED_VERSION
# Get the parent directory of where this script is. # Get the parent directory of where this script is.
SOURCE="${BASH_SOURCE[0]}" SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment