|
|
|
@ -1,69 +1,141 @@ |
|
|
|
|
# |
|
|
|
|
# Mini Object Storage, (C) 2015 Minio, Inc. |
|
|
|
|
# |
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
|
# you may not use this file except in compliance with the License. |
|
|
|
|
# You may obtain a copy of the License at |
|
|
|
|
# |
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0 |
|
|
|
|
# |
|
|
|
|
# Unless required by applicable law or agreed to in writing, software |
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS, |
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
|
|
|
# See the License for the specific language governing permissions and |
|
|
|
|
# limitations under the License. |
|
|
|
|
# |
|
|
|
|
#!/usr/bin/env bash |
|
|
|
|
|
|
|
|
|
check_version() { |
|
|
|
|
local version=$1 check=$2 |
|
|
|
|
local highest=$(echo -e "$version\n$check" | sort -nrt. -k1,1 -k2,2 -k3,3 | head -1) |
|
|
|
|
[[ "$highest" = "$version" ]] && return 0 |
|
|
|
|
return 1 |
|
|
|
|
_init() { |
|
|
|
|
## Minimum required versions for build dependencies |
|
|
|
|
GCC_VERSION="4.0" |
|
|
|
|
YASM_VERSION="1.2.0" |
|
|
|
|
GIT_VERSION="1.0" |
|
|
|
|
PIP_VERSION="1.4" |
|
|
|
|
GO_VERSION="1.4" |
|
|
|
|
|
|
|
|
|
## Check all dependencies are present |
|
|
|
|
MISSING="" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
echo -n "Checking if proper environment variables are set.. " |
|
|
|
|
### |
|
|
|
|
# |
|
|
|
|
# Takes two arguments |
|
|
|
|
# arg1: version number in `x.x.x` format |
|
|
|
|
# arg2: version number in `x.x.x` format |
|
|
|
|
# |
|
|
|
|
# example: check_version "$version1" "$version2" |
|
|
|
|
# |
|
|
|
|
# returns: |
|
|
|
|
# 0 - Installed version is equal to required |
|
|
|
|
# 1 - Installed version is greater than required |
|
|
|
|
# 2 - Installed version is lesser than required |
|
|
|
|
# 3 - If args have length zero |
|
|
|
|
# |
|
|
|
|
#### |
|
|
|
|
check_version () { |
|
|
|
|
## validate args |
|
|
|
|
[[ -z "$1" ]] && return 3 |
|
|
|
|
[[ -z "$2" ]] && return 3 |
|
|
|
|
|
|
|
|
|
if [[ $1 == $2 ]]; then |
|
|
|
|
return 0 |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
echo ${GOROOT:?} 2>&1 >/dev/null |
|
|
|
|
if [ $? -eq 1 ]; then |
|
|
|
|
local IFS=. |
|
|
|
|
local i ver1=($1) ver2=($2) |
|
|
|
|
# fill empty fields in ver1 with zeros |
|
|
|
|
for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)); do |
|
|
|
|
ver1[i]=0 |
|
|
|
|
done |
|
|
|
|
for ((i=0; i<${#ver1[@]}; i++)); do |
|
|
|
|
if [[ -z ${ver2[i]} ]]; then |
|
|
|
|
# fill empty fields in ver2 with zeros |
|
|
|
|
ver2[i]=0 |
|
|
|
|
fi |
|
|
|
|
if ((10#${ver1[i]} > 10#${ver2[i]})); then |
|
|
|
|
|
|
|
|
|
return 1 |
|
|
|
|
fi |
|
|
|
|
if ((10#${ver1[i]} < 10#${ver2[i]})); then |
|
|
|
|
## Installed version is lesser than required - Bad condition |
|
|
|
|
return 2 |
|
|
|
|
fi |
|
|
|
|
done |
|
|
|
|
return 0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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-io/minio/blob/master/BUILDDEPS.md#install-go-13" |
|
|
|
|
exit 1 |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
echo ${GOPATH:?} 2>&1 >/dev/null |
|
|
|
|
if [ $? -eq 1 ]; then |
|
|
|
|
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-io/minio/blob/master/BUILDDEPS.md#install-go-13" |
|
|
|
|
exit 1 |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
echo "Done" |
|
|
|
|
echo "Using GOPATH=${GOPATH} and GOROOT=${GOROOT}" |
|
|
|
|
|
|
|
|
|
echo -n "Checking dependencies for Minio.. " |
|
|
|
|
fi |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
## Check all dependencies are present |
|
|
|
|
MISSING="" |
|
|
|
|
check_deps() { |
|
|
|
|
check_version "$(env pip --version 2>/dev/null| awk {'print $2'})" "${PIP_VERSION}" |
|
|
|
|
if [ $? -ge 2 ]; then |
|
|
|
|
MISSING="pip" |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
check_version "$(env go version | sed 's/^.* go\([0-9.]*\).*$/\1/')" "1.4" |
|
|
|
|
if [ $? -ne 0 ]; then |
|
|
|
|
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)" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
env git --version > /dev/null 2>&1 |
|
|
|
|
if [ $? -ne 0 ]; then |
|
|
|
|
check_version "$(env git --version 2>/dev/null | sed 's/^.* \([0-9.]*\).*$/\1/')" "${GIT_VERSION}" |
|
|
|
|
if [ $? -ge 2 ]; then |
|
|
|
|
MISSING="${MISSING} git" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
env gcc --version > /dev/null 2>&1 |
|
|
|
|
if [ $? -ne 0 ]; then |
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
env yasm --version > /dev/null 2>&1 |
|
|
|
|
if [ $? -ne 0 ]; then |
|
|
|
|
MISSING="${MISSING} yasm" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
if ! yasm -f elf64 pkg/storage/erasure/gf-vect-dot-prod-avx2.asm -o /dev/null 2>/dev/null ; then |
|
|
|
|
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)" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
env mkdocs help >/dev/null 2>&1 |
|
|
|
|
if [ $? -ne 0 ]; then |
|
|
|
|
env mkdocs help >/dev/null 2>&1 |
|
|
|
|
if [ $? -ne 0 ]; then |
|
|
|
|
MISSING="${MISSING} mkdocs" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
main() { |
|
|
|
|
echo -n "Checking if proper environment variables are set.. " |
|
|
|
|
check_golang_env |
|
|
|
|
|
|
|
|
|
## If dependencies are missing, warn the user and abort |
|
|
|
|
if [ "x${MISSING}" != "x" ]; then |
|
|
|
|
echo "Done" |
|
|
|
|
echo "Using GOPATH=${GOPATH} and GOROOT=${GOROOT}" |
|
|
|
|
|
|
|
|
|
echo -n "Checking dependencies for Minio.. " |
|
|
|
|
check_deps |
|
|
|
|
|
|
|
|
|
## If dependencies are missing, warn the user and abort |
|
|
|
|
if [ "x${MISSING}" != "x" ]; then |
|
|
|
|
echo "ERROR" |
|
|
|
|
echo |
|
|
|
|
echo "The following build tools are missing:" |
|
|
|
@ -74,5 +146,8 @@ if [ "x${MISSING}" != "x" ]; then |
|
|
|
|
echo "${MISSING}" |
|
|
|
|
echo |
|
|
|
|
exit 1 |
|
|
|
|
fi |
|
|
|
|
echo "Done" |
|
|
|
|
fi |
|
|
|
|
echo "Done" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_init && main "$@" |
|
|
|
|