diff --git a/eosio_build.sh b/eosio_build.sh index 1a6cb48c691f38a30c636b1b0cda64197bc41a0e..42de70e9e87f5d69feb783c626cc92cef72665e5 100755 --- a/eosio_build.sh +++ b/eosio_build.sh @@ -32,13 +32,13 @@ CWD="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" if [ "${CWD}" != "${PWD}" ]; then - printf "\n\tPlease cd into directory ${CWD} to run this script.\n \tExiting now.\n\n" + printf "\\n\\tPlease cd into directory %s to run this script.\\n \\tExiting now.\\n\\n" "${CWD}" exit 1 fi function usage() { - printf "\tUsage: $0 [Build Option -o ] [CodeCoverage -c ] [Doxygen -d]\n\n" 1>&2 + printf "\\tUsage: %s [Build Option -o ] [CodeCoverage -c ] [Doxygen -d]\\n\\n" "$0" 1>&2 exit 1 } @@ -50,7 +50,6 @@ ENABLE_COVERAGE_TESTING=false TEMP_DIR="/tmp" TIME_BEGIN=$( date -u +%s ) - ULIMIT=$( ulimit -u ) VERSION=1.2 txtbld=$(tput bold) @@ -65,7 +64,7 @@ if [[ "${options[*]}" =~ "${OPTARG}" ]]; then CMAKE_BUILD_TYPE="${OPTARG}" else - printf "\n\tInvalid argument: ${OPTARG}\n" 1>&2 + printf "\\n\\tInvalid argument: %s\\n" "${OPTARG}" 1>&2 usage exit 1 fi @@ -77,12 +76,12 @@ DOXYGEN=true ;; \? ) - printf "\n\tInvalid Option: -${OPTARG}\n" 1>&2 + printf "\\n\\tInvalid Option: %s\\n" "-${OPTARG}" 1>&2 usage exit 1 ;; : ) - printf "\n\tInvalid Option: -${OPTARG} requires an argument\n" 1>&2 + printf "\\n\\tInvalid Option: %s requires an argument.\\n" "-${OPTARG}" 1>&2 usage exit 1 ;; @@ -95,44 +94,43 @@ fi if [ ! -d .git ]; then - printf "\n\tThis build script only works with sources cloned from git\n" - printf "\tPlease clone a new eos directory with 'git clone https://github.com/EOSIO/eos --recursive'\n" - printf "\tSee the wiki for instructions: https://github.com/EOSIO/eos/wiki\n" + printf "\\n\\tThis build script only works with sources cloned from git\\n" + printf "\\tPlease clone a new eos directory with 'git clone https://github.com/EOSIO/eos --recursive'\\n" + printf "\\tSee the wiki for instructions: https://github.com/EOSIO/eos/wiki\\n" exit 1 fi - STALE_SUBMODS=$(( `git submodule status | grep -c "^[+\-]"` )) + STALE_SUBMODS=$(( $(git submodule status | grep -c "^[+\-]") )) if [ $STALE_SUBMODS -gt 0 ]; then - printf "\n\tgit submodules are not up to date\n" - printf "\tPlease run the command 'git submodule update --init --recursive'\n" + printf "\\n\\tgit submodules are not up to date.\\n" + printf "\\tPlease run the command 'git submodule update --init --recursive'.\\n" exit 1 fi - printf "\n\tBeginning build version: ${VERSION}\n" - printf "\t$( date -u )\n" - printf "\tUser: $( whoami )\n" - printf "\tgit head id: $( cat .git/refs/heads/master )\n" - printf "\tCurrent branch: $( git branch | grep \* )\n" - printf "\tMake version: $( make --version )\n\n" - printf "\n\tARCHITECTURE: ${ARCH}\n" + printf "\\n\\tBeginning build version: %s\\n" "${VERSION}" + printf "\\t%s\\n" "$( date -u )" + printf "\\tUser: %s\\n" "$( whoami )" + printf "\\tgit head id: %s\\n" "$( cat .git/refs/heads/master )" + printf "\\tCurrent branch: %s\\n" "$( git branch | grep \* )" + printf "\\n\\tARCHITECTURE: %s\\n" "${ARCH}" - if [ $ARCH == "Linux" ]; then + if [ "$ARCH" == "Linux" ]; then if [ ! -e /etc/os-release ]; then - printf "\n\tEOSIO currently supports Amazon, Centos, Fedora, Mint & Ubuntu Linux only.\n" - printf "\tPlease install on the latest version of one of these Linux distributions.\n" - printf "\thttps://aws.amazon.com/amazon-linux-ami/\n" - printf "\thttps://www.centos.org/\n" - printf "\thttps://start.fedoraproject.org/\n" - printf "\thttps://linuxmint.com/\n" - printf "\thttps://www.ubuntu.com/\n" - printf "\tExiting now.\n" + printf "\\n\\tEOSIO currently supports Amazon, Centos, Fedora, Mint & Ubuntu Linux only.\\n" + printf "\\tPlease install on the latest version of one of these Linux distributions.\\n" + printf "\\thttps://aws.amazon.com/amazon-linux-ami/\\n" + printf "\\thttps://www.centos.org/\\n" + printf "\\thttps://start.fedoraproject.org/\\n" + printf "\\thttps://linuxmint.com/\\n" + printf "\\thttps://www.ubuntu.com/\\n" + printf "\\tExiting now.\\n" exit 1 fi OS_NAME=$( cat /etc/os-release | grep ^NAME | cut -d'=' -f2 | sed 's/\"//gI' ) - case $OS_NAME in + case "$OS_NAME" in "Amazon Linux AMI") FILE="${PWD}/scripts/eosio_build_amazon.sh" CXX_COMPILER=g++ @@ -180,16 +178,16 @@ export PATH=${HOME}/opt/mongodb/bin:$PATH ;; *) - printf "\n\tUnsupported Linux Distribution. Exiting now.\n\n" + printf "\\n\\tUnsupported Linux Distribution. Exiting now.\\n\\n" exit 1 esac - export BOOST_ROOT=${HOME}/opt/boost_1_66_0 + export BOOST_ROOT="${HOME}/opt/boost_1_66_0" OPENSSL_ROOT_DIR=/usr/include/openssl - WASM_ROOT=${HOME}/opt/wasm + WASM_ROOT="${HOME}/opt/wasm" fi - if [ $ARCH == "Darwin" ]; then + if [ "$ARCH" == "Darwin" ]; then FILE="${PWD}/scripts/eosio_build_darwin.sh" CXX_COMPILER=clang++ C_COMPILER=clang @@ -199,38 +197,36 @@ WASM_ROOT=/usr/local/wasm fi - . $FILE + . "$FILE" - printf "\n\n>>>>>>>> ALL dependencies sucessfully found or installed . Installing EOS.IO\n\n" + printf "\\n\\n>>>>>>>> ALL dependencies sucessfully found or installed . Installing EOS.IO\\n\\n" if [ ! -d "${BUILD_DIR}" ]; then mkdir -p "${BUILD_DIR}" fi + cd "${BUILD_DIR}" - if [ -z $CMAKE ]; then - CMAKE=$( which cmake ) + if [ -z "$CMAKE" ]; then + CMAKE=$( command -v cmake ) fi - $CMAKE -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_COMPILER=${CXX_COMPILER} \ - -DCMAKE_C_COMPILER=${C_COMPILER} -DWASM_ROOT=${WASM_ROOT} \ - -DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR} -DBUILD_MONGO_DB_PLUGIN=true \ - -DENABLE_COVERAGE_TESTING=${ENABLE_COVERAGE_TESTING} -DBUILD_DOXYGEN=${DOXYGEN} \ - .. - - if [ $? -ne 0 ]; then - printf "\n\t>>>>>>>>>>>>>>>>>>>> CMAKE building EOSIO has exited with the above error.\n\n" + if ! "${CMAKE}" -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" -DCMAKE_CXX_COMPILER="${CXX_COMPILER}" \ + -DCMAKE_C_COMPILER="${C_COMPILER}" -DWASM_ROOT="${WASM_ROOT}" \ + -DOPENSSL_ROOT_DIR="${OPENSSL_ROOT_DIR}" -DBUILD_MONGO_DB_PLUGIN=true \ + -DENABLE_COVERAGE_TESTING="${ENABLE_COVERAGE_TESTING}" -DBUILD_DOXYGEN="${DOXYGEN}" .. + then + printf "\\n\\t>>>>>>>>>>>>>>>>>>>> CMAKE building EOSIO has exited with the above error.\\n\\n" exit -1 fi - make -j${CPU_CORE} -s - - if [ $? -ne 0 ]; then - printf "\n\t>>>>>>>>>>>>>>>>>>>> MAKE building EOSIO has exited with the above error.\n\n" + if ! make -j"${CPU_CORE}" + then + printf "\\n\\t>>>>>>>>>>>>>>>>>>>> MAKE building EOSIO has exited with the above error.\\n\\n" exit -1 fi - TIME_END=$(( `date -u +%s` - $TIME_BEGIN )) + TIME_END=$(( $(date -u +%s) - "${TIME_BEGIN}" )) printf "\n\n${bldred}\t _______ _______ _______ _________ _______\n" printf '\t( ____ \( ___ )( ____ \\\\__ __/( ___ )\n' @@ -241,34 +237,32 @@ printf "\t| (____/\| (___) |/\____) |___) (___| (___) |\n" printf "\t(_______/(_______)\_______)\_______/(_______)\n${txtrst}" - printf "\n\tEOS.IO has been successfully built. %d:%d:%d\n\n" $(($TIME_END/3600)) $(($TIME_END%3600/60)) $(($TIME_END%60)) - printf "\tTo verify your installation run the following commands:\n" + printf "\\n\\tEOS.IO has been successfully built. %d:%d:%d\\n\\n" $(($TIME_END/3600)) $(($TIME_END%3600/60)) $(($TIME_END%60)) + printf "\\tTo verify your installation run the following commands:\\n" print_instructions - printf "\tFor more information:\n" - printf "\tEOS.IO website: https://eos.io\n" - printf "\tEOS.IO Telegram channel @ https://t.me/EOSProject\n" - printf "\tEOS.IO resources: https://eos.io/resources/\n" - printf "\tEOS.IO wiki: https://github.com/EOSIO/eos/wiki\n\n\n" + printf "\\tFor more information:\\n" + printf "\\tEOS.IO website: https://eos.io\\n" + printf "\\tEOS.IO Telegram channel @ https://t.me/EOSProject\\n" + printf "\\tEOS.IO resources: https://eos.io/resources/\\n" + printf "\\tEOS.IO wiki: https://github.com/EOSIO/eos/wiki\\n\\n\\n" - if [ "x${EOSIO_BUILD_PACKAGE}" != "x" ]; then - # Build eos.io package - $CMAKE -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_COMPILER=${CXX_COMPILER} \ - -DCMAKE_C_COMPILER=${C_COMPILER} -DWASM_ROOT=${WASM_ROOT} \ - -DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR} -DCMAKE_INSTALL_PREFIX=/usr .. - - if [ $? -ne 0 ]; then - printf "\n\t>>>>>>>>>>>>>>>>>>>> CMAKE building eos.io package has exited with the above error.\n\n" - exit -1 - fi - - make -j${CPU_CORE} VERBOSE=0 package + if [ "x${EOSIO_BUILD_PACKAGE}" != "x" ]; then + # Build eos.io package + if ! "$CMAKE" -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" -DCMAKE_CXX_COMPILER="${CXX_COMPILER}" \ + -DCMAKE_C_COMPILER="${C_COMPILER}" -DWASM_ROOT="${WASM_ROOT}" \ + -DOPENSSL_ROOT_DIR="${OPENSSL_ROOT_DIR}" -DCMAKE_INSTALL_PREFIX="/usr" .. + then + printf "\\n\\t>>>>>>>>>>>>>>>>>>>> CMAKE building eos.io package has exited with the above error.\\n\\n" + exit -1 + fi - if [ $? -ne 0 ]; then - printf "\n\t>>>>>>>>>>>>>>>>>>>> MAKE building eos.io package has exited with the above error.\n\n" - exit -1 - fi + if ! make -j${CPU_CORE} VERBOSE=0 package + then + printf "\\n\\t>>>>>>>>>>>>>>>>>>>> MAKE building eos.io package has exited with the above error.\\n\\n" + exit -1 + fi - printf "\n\t>>>>>>>>>>>>>>>>>>>> eos.io package has been successfully built.\n\n" - fi \ No newline at end of file + printf "\\n\\t>>>>>>>>>>>>>>>>>>>> eos.io package has been successfully built.\\n\\n" + fi \ No newline at end of file diff --git a/scripts/eosio_build_fedora.sh b/scripts/eosio_build_fedora.sh index 64475416656188102e6bdb82d707b11f1a782971..928acbe488418aaa6be46974a860ce5b062d9d57 100644 --- a/scripts/eosio_build_fedora.sh +++ b/scripts/eosio_build_fedora.sh @@ -62,7 +62,7 @@ DEP_ARRAY=( git gcc.x86_64 gcc-c++.x86_64 autoconf automake libtool make cmake.x86_64 \ bzip2-devel.x86_64 openssl-devel.x86_64 gmp-devel.x86_64 libstdc++-devel.x86_64 \ python3-devel.x86_64 mongodb.x86_64 mongodb-server.x86_64 libedit.x86_64 \ - graphviz.x86_64 doxygen.x86_64 ncurses-devel.x86_64 swig.x86_64 ) + graphviz.x86_64 doxygen.x86_64 ) COUNT=1 DISPLAY="" DEP="" @@ -92,7 +92,7 @@ case $yn in [Yy]* ) printf "\n\n\tInstalling dependencies\n\n" - sudo yum -y install ${DEP} + sudo yum -y install "${DEP}" if [ $? -ne 0 ]; then printf "\n\tYUM dependency installation failed.\n" printf "\n\tExiting now.\n" @@ -327,6 +327,6 @@ function print_instructions() { printf "\n\t$( which mongod ) -f ${MONGOD_CONF} &\n" - printf "\tcd ${HOME}/eos/build; make test\n\n" + printf "\tcd ${BUILD_DIR}; make test\n\n" return 0 } \ No newline at end of file