diff --git a/buildscripts/checkdeps.sh b/buildscripts/checkdeps.sh index a143a17c1..9da8ba611 100644 --- a/buildscripts/checkdeps.sh +++ b/buildscripts/checkdeps.sh @@ -32,6 +32,27 @@ _init() { MISSING="" } +readlink() { + TARGET_FILE=$1 + + cd `dirname $TARGET_FILE` + TARGET_FILE=`basename $TARGET_FILE` + + # Iterate down a (possible) chain of symlinks + while [ -L "$TARGET_FILE" ] + do + TARGET_FILE=$(env readlink $TARGET_FILE) + cd `dirname $TARGET_FILE` + TARGET_FILE=`basename $TARGET_FILE` + done + + # Compute the canonicalized name by finding the physical path + # for the directory we're in and appending the target file. + PHYS_DIR=`pwd -P` + RESULT=$PHYS_DIR/$TARGET_FILE + echo $RESULT +} + ### # # Takes two arguments @@ -47,7 +68,7 @@ _init() { # 3 - If args have length zero # #### -check_version () { +check_version() { ## validate args [[ -z "$1" ]] && return 3 [[ -z "$2" ]] && return 3 @@ -72,7 +93,7 @@ check_version () { return 1 fi if ((10#${ver1[i]} < 10#${ver2[i]})); then - ## Installed version is lesser than required - Bad condition + ## Installed version is lesser than required - Bad condition return 2 fi done @@ -82,18 +103,18 @@ check_version () { check_golang_env() { echo ${GOROOT:?} 2>&1 >/dev/null if [ $? -eq 1 ]; then - echo "ERROR" - echo "GOROOT environment variable missing, please refer to Go installation document" - echo "https://github.com/minio/minio/blob/master/INSTALLGO.md#install-go-13" - exit 1 + echo "ERROR" + echo "GOROOT environment variable missing, please refer to Go installation document" + echo "https://github.com/minio/minio/blob/master/INSTALLGO.md#install-go-13" + exit 1 fi echo ${GOPATH:?} 2>&1 >/dev/null if [ $? -eq 1 ]; then - echo "ERROR" - echo "GOPATH environment variable missing, please refer to Go installation document" - echo "https://github.com/minio/minio/blob/master/INSTALLGO.md#install-go-13" - exit 1 + echo "ERROR" + echo "GOPATH environment variable missing, please refer to Go installation document" + echo "https://github.com/minio/minio/blob/master/INSTALLGO.md#install-go-13" + exit 1 fi local go_binary_path=$(which go) @@ -106,7 +127,7 @@ check_golang_env() { local new_go_binary_path=${go_binary_path} if [ -h "${go_binary_path}" ]; then - new_go_binary_path=$(/bin/readlink -f ${go_binary_path}) + new_go_binary_path=$(readlink ${go_binary_path}) fi if [[ !"$(dirname ${new_go_binary_path})" =~ *"${GOROOT%%*(/)}"* ]] ; then @@ -122,14 +143,14 @@ is_supported_os() { "Linux") os="linux" ;; - "Darwin") - osx_host_version=$(env sw_vers -productVersion) - check_version "${osx_host_version}" "${OSX_VERSION}" - [[ $? -ge 2 ]] && die "Minimum OSX version supported is ${OSX_VERSION}" - ;; - "*") - echo "Exiting.. unsupported operating system found" - exit 1; + "Darwin") + osx_host_version=$(env sw_vers -productVersion) + check_version "${osx_host_version}" "${OSX_VERSION}" + [[ $? -ge 2 ]] && die "Minimum OSX version supported is ${OSX_VERSION}" + ;; + "*") + echo "Exiting.. unsupported operating system found" + exit 1; esac } @@ -145,41 +166,41 @@ is_supported_arch() { esac if [ $supported -eq 0 ]; then echo "Invalid arch: ${UNAME} not supported, please use x86_64/amd64" - exit 1; + exit 1; fi } check_deps() { check_version "$(env go version 2>/dev/null | sed 's/^.* go\([0-9.]*\).*$/\1/')" "${GO_VERSION}" if [ $? -ge 2 ]; then - MISSING="${MISSING} golang(1.4)" + MISSING="${MISSING} golang(1.4)" fi check_version "$(env git --version 2>/dev/null | sed -e 's/^.* \([0-9.\].*\).*$/\1/' -e 's/^\([0-9.\]*\).*/\1/g')" "${GIT_VERSION}" if [ $? -ge 2 ]; then - MISSING="${MISSING} git" + MISSING="${MISSING} git" fi case ${UNAME%% *} in "Linux") - check_version "$(env gcc --version 2>/dev/null | sed 's/^.* \([0-9.]*\).*$/\1/' | head -1)" "${GCC_VERSION}" - if [ $? -ge 2 ]; then - MISSING="${MISSING} build-essential" - fi + check_version "$(env gcc --version 2>/dev/null | sed 's/^.* \([0-9.]*\).*$/\1/' | head -1)" "${GCC_VERSION}" + if [ $? -ge 2 ]; then + MISSING="${MISSING} build-essential" + fi + ;; + "Darwin") + check_version "$(env gcc --version 2>/dev/null | sed 's/^.* \([0-9.]*\).*$/\1/' | head -1)" "${CLANG_VERSION}" + if [ $? -ge 2 ]; then + MISSING="${MISSING} xcode-cli" + fi + ;; + "*") ;; - "Darwin") - check_version "$(env gcc --version 2>/dev/null | sed 's/^.* \([0-9.]*\).*$/\1/' | head -1)" "${CLANG_VERSION}" - if [ $? -ge 2 ]; then - MISSING="${MISSING} xcode-cli" - fi - ;; - "*") - ;; esac check_version "$(env yasm --version 2>/dev/null | sed 's/^.* \([0-9.]*\).*$/\1/' | head -1)" "${YASM_VERSION}" if [ $? -ge 2 ]; then - MISSING="${MISSING} yasm(1.2.0)" + MISSING="${MISSING} yasm(1.2.0)" fi } @@ -202,17 +223,17 @@ main() { ## If dependencies are missing, warn the user and abort if [ "x${MISSING}" != "x" ]; then - echo "ERROR" - echo - echo "The following build tools are missing:" - echo - echo "** ${MISSING} **" - echo - echo "Please install them " - echo "${MISSING}" - echo - echo "Follow https://github.com/minio/minio/blob/master/INSTALLGO.md for further instructions" - exit 1 + echo "ERROR" + echo + echo "The following build tools are missing:" + echo + echo "** ${MISSING} **" + echo + echo "Please install them " + echo "${MISSING}" + echo + echo "Follow https://github.com/minio/minio/blob/master/INSTALLGO.md for further instructions" + exit 1 fi echo "Done" }