Skip to content

Commit 2541baa

Browse files
committed
[Refactor] Create nvm_get_make_jobs to abstract out “-j” logic.
1 parent dc8b63c commit 2541baa

File tree

1 file changed

+43
-34
lines changed

1 file changed

+43
-34
lines changed

nvm.sh

Lines changed: 43 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1200,11 +1200,48 @@ nvm_install_node_binary() {
12001200
return 2
12011201
}
12021202

1203+
nvm_get_make_jobs() {
1204+
if nvm_is_natural_num "$1"; then
1205+
NVM_MAKE_JOBS="$1"
1206+
echo "number of \`make\` jobs: $NVM_MAKE_JOBS"
1207+
return
1208+
elif [ -n "$1" ]; then
1209+
unset NVM_MAKE_JOBS
1210+
echo >&2 "$1 is invalid for number of \`make\` jobs, must be a natural number"
1211+
fi
1212+
local NVM_OS
1213+
NVM_OS="$(nvm_get_os)"
1214+
local NVM_CPU_THREADS
1215+
if [ "_$NVM_OS" = "_linux" ]; then
1216+
NVM_CPU_THREADS="$(grep -c 'core id' /proc/cpuinfo)"
1217+
elif [ "_$NVM_OS" = "_freebsd" ] || [ "_$NVM_OS" = "_darwin" ]; then
1218+
NVM_CPU_THREADS="$(sysctl -n hw.ncpu)"
1219+
elif [ "_$NVM_OS" = "_sunos" ]; then
1220+
NVM_CPU_THREADS="$(psrinfo | wc -l)"
1221+
fi
1222+
if ! nvm_is_natural_num "$NVM_CPU_THREADS" ; then
1223+
echo "Can not determine how many thread(s) we can use, set to only 1 now." >&2
1224+
echo "Please report an issue on GitHub to help us make it better and run it faster on your computer!" >&2
1225+
NVM_MAKE_JOBS=1
1226+
else
1227+
echo "Detected that you have $NVM_CPU_THREADS CPU thread(s)"
1228+
if [ $NVM_CPU_THREADS -gt 2 ]; then
1229+
NVM_MAKE_JOBS=$(($NVM_CPU_THREADS - 1))
1230+
echo "Set the number of jobs to $NVM_CPU_THREADS - 1 = $NVM_MAKE_JOBS jobs to speed up the build"
1231+
else
1232+
NVM_MAKE_JOBS=1
1233+
echo "Number of CPU thread(s) less or equal to 2 will have only one job a time for 'make'"
1234+
fi
1235+
fi
1236+
}
1237+
12031238
nvm_install_node_source() {
12041239
local VERSION
12051240
VERSION="$1"
1241+
local NVM_MAKE_JOBS
1242+
NVM_MAKE_JOBS="$2"
12061243
local ADDITIONAL_PARAMETERS
1207-
ADDITIONAL_PARAMETERS="$2"
1244+
ADDITIONAL_PARAMETERS="$3"
12081245

12091246
local NVM_ARCH
12101247
NVM_ARCH="$(nvm_get_arch)"
@@ -1232,29 +1269,6 @@ nvm_install_node_source() {
12321269
MAKE_CXX="CXX=c++"
12331270
fi
12341271

1235-
if [ -z "$NVM_MAKE_JOBS" ]; then
1236-
if [ "_$NVM_OS" = "_linux" ]; then
1237-
NVM_CPU_THREADS="$(grep -c 'core id' /proc/cpuinfo)"
1238-
elif [ "_$NVM_OS" = "_freebsd" ] || [ "_$NVM_OS" = "_darwin" ]; then
1239-
NVM_CPU_THREADS="$(sysctl -n hw.ncpu)"
1240-
elif [ "_$NVM_OS" = "_sunos" ]; then
1241-
NVM_CPU_THREADS="$(psrinfo | wc -l)"
1242-
fi
1243-
if ! nvm_is_natural_num "$NVM_CPU_THREADS" ; then
1244-
echo "Can not determine how many thread(s) we can use, set to only 1 now." 1>&2
1245-
echo "Please report an issue on GitHub to help us make it better and run it faster on your computer!" 1>&2
1246-
NVM_MAKE_JOBS="1"
1247-
else
1248-
echo "Detected that you have $NVM_CPU_THREADS CPU thread(s)"
1249-
if [ $NVM_CPU_THREADS -gt 2 ]; then
1250-
NVM_MAKE_JOBS=$(($NVM_CPU_THREADS - 1))
1251-
echo "Set the number of jobs to $NVM_CPU_THREADS - 1 = $NVM_MAKE_JOBS jobs to speed up the build"
1252-
else
1253-
NVM_MAKE_JOBS=1
1254-
echo "Number of CPU thread(s) less or equal to 2 will have only one job a time for 'make'"
1255-
fi
1256-
fi
1257-
fi
12581272
local tmpdir
12591273
tmpdir="$NVM_DIR/src"
12601274
local tmptarball
@@ -1578,6 +1592,7 @@ nvm() {
15781592

15791593
local nobinary
15801594
nobinary=0
1595+
local make_jobs
15811596
while [ $# -ne 0 ]
15821597
do
15831598
case "$1" in
@@ -1587,13 +1602,7 @@ nvm() {
15871602
;;
15881603
-j)
15891604
shift # consume "-j"
1590-
if nvm_is_natural_num "$1"; then
1591-
NVM_MAKE_JOBS=$1
1592-
echo "number of \`make\` jobs: $NVM_MAKE_JOBS"
1593-
else
1594-
unset NVM_MAKE_JOBS
1595-
echo >&2 "$1 is invalid for number of \`make\` jobs, must be a natural number"
1596-
fi
1605+
nvm_get_make_jobs "$1"
15971606
shift # consume job count
15981607
;;
15991608
*)
@@ -1693,15 +1702,15 @@ nvm() {
16931702
fi
16941703
if [ "$NVM_INSTALL_SUCCESS" != true ]; then
16951704
if [ "$NVM_IOJS" != true ] && [ "$NVM_NODE_MERGED" != true ]; then
1696-
if nvm_install_node_source "$VERSION" "$ADDITIONAL_PARAMETERS"; then
1705+
if nvm_install_node_source "$VERSION" "$NVM_MAKE_JOBS" "$ADDITIONAL_PARAMETERS"; then
16971706
NVM_INSTALL_SUCCESS=true
16981707
fi
16991708
elif [ "$NVM_IOJS" = true ]; then
1700-
# nvm_install_iojs_source "$VERSION" "$ADDITIONAL_PARAMETERS"
1709+
# nvm_install_iojs_source "$VERSION" "$NVM_MAKE_JOBS" "$ADDITIONAL_PARAMETERS"
17011710
echo "Installing iojs from source is not currently supported" >&2
17021711
return 105
17031712
elif [ "$NVM_NODE_MERGED" = true ]; then
1704-
# nvm_install_merged_node_source "$VERSION" "$ADDITIONAL_PARAMETERS"
1713+
# nvm_install_merged_node_source "$VERSION" "$NVM_MAKE_JOBS" "$ADDITIONAL_PARAMETERS"
17051714
echo "Installing node v1.0 and greater from source is not currently supported" >&2
17061715
return 106
17071716
fi

0 commit comments

Comments
 (0)