@@ -486,7 +486,7 @@ ensure_curl_dependency()
486
486
sudo dnf install --allowerasing --assumeyes curl > /dev/null
487
487
;;
488
488
gentoo)
489
- emerge --jobs " ${SYS_CORES_COUNT} " --load-average " ${SYS_CORES_PLUS_ONE} " --quiet --quiet-build --quiet-fail net-misc/curl
489
+ emerge --jobs " ${compile_num_jobs :- SYS_CORES_COUNT} " --load-average " ${compile_num_jobs :- SYS_CORES_PLUS_ONE} " --quiet --quiet-build --quiet-fail net-misc/curl
490
490
;;
491
491
arch | endeavouros | garuda | manjaro)
492
492
sudo pacman -Syu --needed --noconfirm curl > /dev/null
@@ -553,7 +553,7 @@ ensure_sudo_dependency()
553
553
;;
554
554
gentoo)
555
555
emerge --sync --quiet
556
- emerge --jobs " ${SYS_CORES_COUNT} " --load-average " ${SYS_CORES_PLUS_ONE} " --quiet --quiet-build --quiet-fail app-admin/sudo
556
+ emerge --jobs " ${compile_num_jobs :- SYS_CORES_COUNT} " --load-average " ${compile_num_jobs :- SYS_CORES_PLUS_ONE} " --quiet --quiet-build --quiet-fail app-admin/sudo
557
557
;;
558
558
arch | endeavouros | garuda | manjaro)
559
559
pacman -Syu --needed --noconfirm sudo > /dev/null
@@ -615,7 +615,7 @@ ensure_xargs_dependency()
615
615
;;
616
616
gentoo)
617
617
emerge --sync --quiet
618
- emerge --jobs " ${SYS_CORES_COUNT} " --load-average " ${SYS_CORES_PLUS_ONE} " --quiet --quiet-build --quiet-fail sys-apps/findutils
618
+ emerge --jobs " ${compile_num_jobs :- SYS_CORES_COUNT} " --load-average " ${compile_num_jobs :- SYS_CORES_PLUS_ONE} " --quiet --quiet-build --quiet-fail sys-apps/findutils
619
619
;;
620
620
arch | endeavouros | garuda | manjaro)
621
621
pacman -Syu --needed --noconfirm findutils > /dev/null
@@ -862,12 +862,12 @@ install_build_dependencies_emerge()
862
862
dependencies=$( curl --fail --silent --show-error --location --retry 5 " ${BUILD_DEPENDENCIES_URL} " )
863
863
[ -z " ${dependencies:- } " ] && throw_error ' The list of dependencies is empty.'
864
864
if ! printf ' %s\n' " ${dependencies} " | xargs emerge --autounmask-write \
865
- --jobs " ${SYS_CORES_COUNT} " --load-average " ${SYS_CORES_PLUS_ONE} " --quiet --quiet-build --quiet-fail; then
865
+ --jobs " ${compile_num_jobs :- SYS_CORES_COUNT} " --load-average " ${SYS_CORES_PLUS_ONE} " --quiet --quiet-build --quiet-fail; then
866
866
etc-update --automode -5
867
- emerge --update --jobs " ${SYS_CORES_COUNT} " --load-average " ${SYS_CORES_PLUS_ONE} " --quiet --quiet-build --quiet-fail --deep --newuse @world
867
+ emerge --update --jobs " ${compile_num_jobs :- SYS_CORES_COUNT} " --load-average " ${SYS_CORES_PLUS_ONE} " --quiet --quiet-build --quiet-fail --deep --newuse @world
868
868
# Run the install command again
869
869
printf ' %s\n' " ${dependencies} " | xargs emerge --autounmask-write \
870
- --jobs " ${SYS_CORES_COUNT} " --load-average " ${SYS_CORES_PLUS_ONE} " --quiet --quiet-build --quiet-fail
870
+ --jobs " ${compile_num_jobs :- SYS_CORES_COUNT} " --load-average " ${SYS_CORES_PLUS_ONE} " --quiet --quiet-build --quiet-fail
871
871
fi
872
872
}
873
873
@@ -1098,7 +1098,7 @@ install_runtime_dependencies_emerge()
1098
1098
dependencies=$( torsocks curl --fail --silent --show-error --location --retry 2 " ${RUNTIME_DEPENDENCIES_URL} " ) ||
1099
1099
dependencies=$( curl --fail --silent --show-error --location --retry 5 " ${RUNTIME_DEPENDENCIES_URL} " )
1100
1100
[ -z " ${dependencies} " ] && throw_error ' The list of dependencies is empty.'
1101
- printf ' %s\n' " ${dependencies} " | xargs emerge --autounmask-write --jobs " ${SYS_CORES_COUNT} " --load-average " ${SYS_CORES_PLUS_ONE} " --quiet --quiet-build --quiet-fail
1101
+ printf ' %s\n' " ${dependencies} " | xargs emerge --autounmask-write --jobs " ${compile_num_jobs :- SYS_CORES_COUNT} " --load-average " ${compile_num_jobs :- SYS_CORES_PLUS_ONE} " --quiet --quiet-build --quiet-fail
1102
1102
}
1103
1103
1104
1104
install_runtime_dependencies_freebsd ()
@@ -1262,7 +1262,7 @@ install_system_updates_dnf()
1262
1262
install_system_updates_emerge ()
1263
1263
{
1264
1264
readonly GENTOO_EBUILD_REPOSITORY=' /var/db/repos/gentoo'
1265
- readonly EMERGE_UPDATE_COMMAND=" emerge --update --jobs ${SYS_CORES_COUNT} --load-average ${SYS_CORES_PLUS_ONE} --quiet --quiet-build --quiet-fail --deep --newuse @world"
1265
+ readonly EMERGE_UPDATE_COMMAND=" emerge --update --jobs ${compile_num_jobs :- SYS_CORES_COUNT} --load-average ${compile_num_jobs :- SYS_CORES_PLUS_ONE} --quiet --quiet-build --quiet-fail --deep --newuse @world"
1266
1266
readonly EMERGE_MAX_RETRIES=' 3'
1267
1267
printf ' \n'
1268
1268
@@ -1402,6 +1402,7 @@ print_usage()
1402
1402
printf ' %s\n' ' -b, --bitcoin-version Specify the Bitcoin version'
1403
1403
printf ' %s\n' ' -c, --compile Build Bitcoin from source'
1404
1404
printf ' %s\n' ' -h, --help Display this help message'
1405
+ printf ' %s\n' ' -j, --jobs Set the number of compile jobs'
1405
1406
printf ' %s\n' ' -p, --prune Set a prune value in MiB'
1406
1407
printf ' %s\n' ' -q, --quiet Suppress standard output'
1407
1408
printf ' %s\n' ' -r, --skip-reboot Skip reboot on system updates'
@@ -1506,9 +1507,12 @@ readonly VALID_BITCOIN_VERSION_LIST='0.9.5 0.10.0 0.10.1 0.10.2 0.10.3 0.10.4 \
1506
1507
0.20.0 0.20.1 0.20.2 0.21.0 0.21.1 0.21.2 22.0 22.1 23.0 23.1 23.2 24.0 \
1507
1508
24.0.1 24.1 24.2 25.0 25.1 25.2 26.0 26.1 26.2 27.0 27.1 27.2 28.0 28.1'
1508
1509
1510
+ # Bump this variable for new Bitcoin Core releases
1509
1511
target_bitcoin_version=' 28.1'
1510
1512
1513
+ # Instantiate the parameter variables
1511
1514
compile_bitcoin_flag=' false'
1515
+ compile_num_jobs=' '
1512
1516
prune_value=' -1'
1513
1517
quiet_output=' false'
1514
1518
skip_system_update=' false'
@@ -1536,11 +1540,31 @@ while [ $# -gt 0 ]; do
1536
1540
print_usage
1537
1541
exit 0
1538
1542
;;
1543
+ -j | --jobs)
1544
+ # ensure at leaset one additional argument is passed
1545
+ if [ $# -eq 1 ]; then
1546
+ throw_error ' -j/--jobs requires one argumenet'
1547
+ fi
1548
+
1549
+ # ensure the argument is a positive integer
1550
+ case " $2 " in
1551
+ 0)
1552
+ throw_error ' Cannot compile with 0 jobs'
1553
+ ;;
1554
+ ' ' | * [!0-9]* )
1555
+ throw_error " $2 is not a number"
1556
+ ;;
1557
+ * )
1558
+ compile_num_jobs=" $2 "
1559
+ ;;
1560
+ esac
1561
+ shift
1562
+ ;;
1539
1563
-p | --prune)
1540
1564
if [ $# -eq 1 ]; then
1541
1565
throw_error ' -p/--prune requires an argument'
1542
1566
fi
1543
- case $2 in
1567
+ case " $2 " in
1544
1568
* [!0-9]* ) # if $2 contains any non-numeric characters
1545
1569
throw_error " The prune value '$2 ' must be a positive integer or zero to disable pruning"
1546
1570
;;
@@ -1609,25 +1633,27 @@ else
1609
1633
fi
1610
1634
readonly TEMP_DIRECTORY
1611
1635
1612
- case " ${TARGET_KERNEL} " in
1613
- Linux | FreeBSD)
1614
- SYS_CORES_COUNT=" $( nproc) "
1615
- ;;
1616
- Darwin)
1617
- SYS_CORES_COUNT=" $( sysctl -n hw.physicalcpu) "
1618
- ;;
1619
- NetBSD | OpenBSD)
1620
- SYS_CORES_COUNT=" $( sysctl -n hw.ncpu) "
1621
- ;;
1622
- MINGW* | Cygwin)
1623
- throw_error ' Windows is not supported. Use Linux, macOS, or Windows Subsystem for Linux instead.'
1624
- ;;
1625
- * )
1626
- throw_error " ${TARGET_KERNEL} is not supported. Please run on Linux or macOS."
1627
- ;;
1628
- esac
1629
- readonly SYS_CORES_COUNT
1630
- readonly SYS_CORES_PLUS_ONE=" $(( SYS_CORES_COUNT + 1 )) "
1636
+ if [ -z " ${compile_num_jobs} " ]; then
1637
+ case " ${TARGET_KERNEL} " in
1638
+ Linux | FreeBSD)
1639
+ SYS_CORES_COUNT=" $( nproc) "
1640
+ ;;
1641
+ Darwin)
1642
+ SYS_CORES_COUNT=" $( sysctl -n hw.physicalcpu) "
1643
+ ;;
1644
+ NetBSD | OpenBSD)
1645
+ SYS_CORES_COUNT=" $( sysctl -n hw.ncpu) "
1646
+ ;;
1647
+ MINGW* | Cygwin)
1648
+ throw_error ' Windows is not supported. Use Linux, macOS, or Windows Subsystem for Linux instead.'
1649
+ ;;
1650
+ * )
1651
+ throw_error " ${TARGET_KERNEL} is not supported. Please run on Linux or macOS."
1652
+ ;;
1653
+ esac
1654
+ readonly SYS_CORES_COUNT
1655
+ readonly SYS_CORES_PLUS_ONE=" $(( SYS_CORES_COUNT + 1 )) "
1656
+ fi
1631
1657
1632
1658
ensure_sudo_dependency
1633
1659
ensure_xargs_dependency
0 commit comments