From de6cc186601e0c43ccdf7b1e05da1e574ec6347d Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Thu, 4 Feb 2016 18:43:05 +0100 Subject: [PATCH] get-deps no longer installs rust/multirust/rocksdb if it doesn't have to. Builds rocksdb only if necessary. --- install-deps.sh | 148 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 119 insertions(+), 29 deletions(-) diff --git a/install-deps.sh b/install-deps.sh index 4eedab25e..6ae6ed2e5 100755 --- a/install-deps.sh +++ b/install-deps.sh @@ -347,8 +347,31 @@ function run_installer() fi } + function linux_version() + { + source /etc/lsb-release + + if [[ $DISTRIB_ID == "Ubuntu" ]]; then + if [[ $DISTRIB_RELEASE == "14.04" ]]; then + check "Ubuntu-14.04" + isUbuntu1404=true + else + check "Ubuntu, but not 14.04" + isUbuntu1404=false + fi + else + check "Ubuntu not found" + isUbuntu1404=false + fi + } + function get_linux_dependencies() { + linux_version + + find_multirust + find_rocksdb + find_curl find_git find_make @@ -357,6 +380,47 @@ function run_installer() find_apt } + function find_rocksdb() + { + depCount=$((depCount+1)) + if [[ $(ldconfig -v 2>/dev/null | grep rocksdb | wc -l) == 1 ]]; then + depFound=$((depFound+1)) + check "apt-get" + echo "$($APT_PATH -v)" + isRocksDB=true + else + uncheck "librocksdb is missing" + isRocksDB=false + INSTALL_FILES+="${blue}${dim}==> librocksdb:${reset}\n" + fi + } + + function find_multirust() + { + depCount=$((depCount+2)) + MULTIRUST_PATH=`which multirust 2>/dev/null` + if [[ -f $MULTIRUST_PATH ]]; then + depFound=$((depFound+1)) + check "multirust" + isMultirust=true + if [[ $(multirust show-default 2>/dev/null | grep nightly | wc -l) == 4 ]]; then + depFound=$((depFound+1)) + check "rust nightly" + isMultirustNightly=true + else + uncheck "rust is not nightly" + isMultirustNightly=false + INSTALL_FILES+="${blue}${dim}==> multirust -> rust nightly:${reset}\n" + fi + else + uncheck "multirust is missing" + uncheck "rust nightly is missing" + isMultirust=false + isMultirustNightly=false + INSTALL_FILES+="${blue}${dim}==> multirust:${reset}\n" + fi + } + function find_apt() { depCount=$((depCount+1)) @@ -449,25 +513,37 @@ function run_installer() fi } + function ubuntu1404_rocksdb_installer() + { + sudo add-apt-repository -y ppa:giskou/librocksdb + sudo apt-get -f -y install + sudo apt-get update -qq + sudo apt-get install -y librocksdb + } + function linux_rocksdb_installer() { - oldpwd=`pwd` - cd /tmp - exe git clone --branch v4.1 --depth=1 https://github.com/facebook/rocksdb.git - cd rocksdb - exe make shared_lib - sudo cp -a librocksdb.so* /usr/lib - sudo ldconfig - cd /tmp - rm -rf /tmp/rocksdb - cd $oldpwd + if [[ $isUbuntu1404 ]]; then + ubuntu1404_rocksdb_installer + else + oldpwd=`pwd` + cd /tmp + exe git clone --branch v4.1 --depth=1 https://github.com/facebook/rocksdb.git + cd rocksdb + exe make shared_lib + sudo cp -a librocksdb.so* /usr/lib + sudo ldconfig + cd /tmp + rm -rf /tmp/rocksdb + cd $oldpwd + fi } function linux_installer() { if [[ $isGCC == false || $isGit == false || $isMake == false || $isCurl == false ]]; then info "Installing build dependencies..." - sudo apt-get update + sudo apt-get update -qq if [[ $isGit == false ]]; then sudo apt-get install -q -y git fi @@ -483,15 +559,24 @@ function run_installer() echo fi - info "Installing rocksdb..." - linux_rocksdb_installer - echo + if [[ $isRocksDB == false ]]; then + info "Installing rocksdb..." + linux_rocksdb_installer + echo + fi - info "Installing multirust..." - curl -sf https://raw.githubusercontent.com/brson/multirust/master/blastoff.sh | sudo sh -s -- --yes - sudo multirust update nightly - sudo multirust default nightly - echo + if [[ $isMultirust == false ]]; then + info "Installing multirust..." + curl -sf https://raw.githubusercontent.com/brson/multirust/master/blastoff.sh | sudo sh -s -- --yes + echo + fi + + if [[ $isMultirustNightly == false ]]; then + info "Installing rust nightly..." + sudo multirust update nightly + sudo multirust default nightly + echo + fi } function install() @@ -511,12 +596,19 @@ function run_installer() function verify_installation() { info "Verifying installation" -# find_eth -# if [[ $isEth == false ]] -# then -# abortInstall -# fi + if [[ $OS_TYPE == "linux" ]]; then + find_curl + find_git + find_make + find_gcc + find_rocksdb + find_multirust + + if [[ $isCurl == false || $isGit == false || $isMake == false || $isGCC == false || $isRocksDB == false || $isMultirustNightly == false ]]; then + abortInstall + fi + fi } function abortInstall() @@ -530,11 +622,9 @@ function run_installer() function finish() { -# echo -# successHeading "Installation successful!" -# head "Next steps" -# info "Run ${cyan}\`\`${reset} to get started.${reset}" -# echo + echo + successHeading "Installation successful!" + echo exit 0 }