From 2541baaf7d5a2ce1d299af2e3f5cd9945b3f26e0 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Mon, 28 Dec 2015 12:20:14 -0800 Subject: [PATCH] =?UTF-8?q?[Refactor]=20Create=20`nvm=5Fget=5Fmake=5Fjobs`?= =?UTF-8?q?=20to=20abstract=20out=20=E2=80=9C-j=E2=80=9D=20logic.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nvm.sh | 77 ++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 43 insertions(+), 34 deletions(-) diff --git a/nvm.sh b/nvm.sh index 27dce9c..98f03bf 100755 --- a/nvm.sh +++ b/nvm.sh @@ -1200,11 +1200,48 @@ nvm_install_node_binary() { return 2 } +nvm_get_make_jobs() { + if nvm_is_natural_num "$1"; then + NVM_MAKE_JOBS="$1" + echo "number of \`make\` jobs: $NVM_MAKE_JOBS" + return + elif [ -n "$1" ]; then + unset NVM_MAKE_JOBS + echo >&2 "$1 is invalid for number of \`make\` jobs, must be a natural number" + fi + local NVM_OS + NVM_OS="$(nvm_get_os)" + local NVM_CPU_THREADS + if [ "_$NVM_OS" = "_linux" ]; then + NVM_CPU_THREADS="$(grep -c 'core id' /proc/cpuinfo)" + elif [ "_$NVM_OS" = "_freebsd" ] || [ "_$NVM_OS" = "_darwin" ]; then + NVM_CPU_THREADS="$(sysctl -n hw.ncpu)" + elif [ "_$NVM_OS" = "_sunos" ]; then + NVM_CPU_THREADS="$(psrinfo | wc -l)" + fi + if ! nvm_is_natural_num "$NVM_CPU_THREADS" ; then + echo "Can not determine how many thread(s) we can use, set to only 1 now." >&2 + echo "Please report an issue on GitHub to help us make it better and run it faster on your computer!" >&2 + NVM_MAKE_JOBS=1 + else + echo "Detected that you have $NVM_CPU_THREADS CPU thread(s)" + if [ $NVM_CPU_THREADS -gt 2 ]; then + NVM_MAKE_JOBS=$(($NVM_CPU_THREADS - 1)) + echo "Set the number of jobs to $NVM_CPU_THREADS - 1 = $NVM_MAKE_JOBS jobs to speed up the build" + else + NVM_MAKE_JOBS=1 + echo "Number of CPU thread(s) less or equal to 2 will have only one job a time for 'make'" + fi + fi +} + nvm_install_node_source() { local VERSION VERSION="$1" + local NVM_MAKE_JOBS + NVM_MAKE_JOBS="$2" local ADDITIONAL_PARAMETERS - ADDITIONAL_PARAMETERS="$2" + ADDITIONAL_PARAMETERS="$3" local NVM_ARCH NVM_ARCH="$(nvm_get_arch)" @@ -1232,29 +1269,6 @@ nvm_install_node_source() { MAKE_CXX="CXX=c++" fi - if [ -z "$NVM_MAKE_JOBS" ]; then - if [ "_$NVM_OS" = "_linux" ]; then - NVM_CPU_THREADS="$(grep -c 'core id' /proc/cpuinfo)" - elif [ "_$NVM_OS" = "_freebsd" ] || [ "_$NVM_OS" = "_darwin" ]; then - NVM_CPU_THREADS="$(sysctl -n hw.ncpu)" - elif [ "_$NVM_OS" = "_sunos" ]; then - NVM_CPU_THREADS="$(psrinfo | wc -l)" - fi - if ! nvm_is_natural_num "$NVM_CPU_THREADS" ; then - echo "Can not determine how many thread(s) we can use, set to only 1 now." 1>&2 - echo "Please report an issue on GitHub to help us make it better and run it faster on your computer!" 1>&2 - NVM_MAKE_JOBS="1" - else - echo "Detected that you have $NVM_CPU_THREADS CPU thread(s)" - if [ $NVM_CPU_THREADS -gt 2 ]; then - NVM_MAKE_JOBS=$(($NVM_CPU_THREADS - 1)) - echo "Set the number of jobs to $NVM_CPU_THREADS - 1 = $NVM_MAKE_JOBS jobs to speed up the build" - else - NVM_MAKE_JOBS=1 - echo "Number of CPU thread(s) less or equal to 2 will have only one job a time for 'make'" - fi - fi - fi local tmpdir tmpdir="$NVM_DIR/src" local tmptarball @@ -1578,6 +1592,7 @@ nvm() { local nobinary nobinary=0 + local make_jobs while [ $# -ne 0 ] do case "$1" in @@ -1587,13 +1602,7 @@ nvm() { ;; -j) shift # consume "-j" - if nvm_is_natural_num "$1"; then - NVM_MAKE_JOBS=$1 - echo "number of \`make\` jobs: $NVM_MAKE_JOBS" - else - unset NVM_MAKE_JOBS - echo >&2 "$1 is invalid for number of \`make\` jobs, must be a natural number" - fi + nvm_get_make_jobs "$1" shift # consume job count ;; *) @@ -1693,15 +1702,15 @@ nvm() { fi if [ "$NVM_INSTALL_SUCCESS" != true ]; then if [ "$NVM_IOJS" != true ] && [ "$NVM_NODE_MERGED" != true ]; then - if nvm_install_node_source "$VERSION" "$ADDITIONAL_PARAMETERS"; then + if nvm_install_node_source "$VERSION" "$NVM_MAKE_JOBS" "$ADDITIONAL_PARAMETERS"; then NVM_INSTALL_SUCCESS=true fi elif [ "$NVM_IOJS" = true ]; then - # nvm_install_iojs_source "$VERSION" "$ADDITIONAL_PARAMETERS" + # nvm_install_iojs_source "$VERSION" "$NVM_MAKE_JOBS" "$ADDITIONAL_PARAMETERS" echo "Installing iojs from source is not currently supported" >&2 return 105 elif [ "$NVM_NODE_MERGED" = true ]; then - # nvm_install_merged_node_source "$VERSION" "$ADDITIONAL_PARAMETERS" + # nvm_install_merged_node_source "$VERSION" "$NVM_MAKE_JOBS" "$ADDITIONAL_PARAMETERS" echo "Installing node v1.0 and greater from source is not currently supported" >&2 return 106 fi