diff options
author | XenHat | 2022-11-12 21:46:01 -0500 |
---|---|---|
committer | XenHat | 2022-11-12 21:46:01 -0500 |
commit | a25125c05bc778c8eb4397c04ee21daf50cd4d73 (patch) | |
tree | 5a2a3c34a981ab80ec75ecb645e12a3378a57675 /compile.bash | |
parent | 26d7efc5e6e22cbf712b16c8605952295ffab65d (diff) | |
download | aur-a25125c05bc778c8eb4397c04ee21daf50cd4d73.tar.gz |
update to origin/main + a few tweaks
Diffstat (limited to 'compile.bash')
-rwxr-xr-x | compile.bash | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/compile.bash b/compile.bash new file mode 100755 index 000000000000..737f7d07cd83 --- /dev/null +++ b/compile.bash @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +set -e +virtualenv ".venv" -p python3 +. ".venv/bin/activate" +echo "Installing autobuild..." +pip install --upgrade certifi --quiet +pip3 install --upgrade llbase --quiet +if command -v autobuild >/dev/null 2>&1 && [[ "$(autobuild --version)" == "autobuild 9.0.0" ]]; then + pip3 uninstall --yes autobuild --quiet +fi +pip3 install --no-cache --upgrade autobuild --quiet + +# we have a lot of files, relax ulimit to help performance +ulimit -n 20000 +build_jobs=$(nproc) +if [[ ${build_jobs} -gt 1 ]]; then + # The viewer requires an average of 4GB of memory per core to link + mempercorekb=$((4 * 1048576)) + requiredmemorykb=$(($(nproc) * mempercorekb)) + # Source: Total Used Free + free_output="$(free --kilo --total | tr -s ' ')" + totalmemorykb=$(grep Total <<< "$free_output" | cut -d ' ' -f 2) + freememorykb=$(grep Total <<< "$free_output" | cut -d ' ' -f 4) + #echo "Total memory: $totalmemorykb (includes swap)" + #echo "Free memory: $freememorykb" + #echo "Required memory: $requiredmemorykb" + if [[ ${requiredmemorykb} -gt ${totalmemorykb} ]]; then + echo "Not enough physical memory to build with all cores, adjusting" + echo "Estimated required memory to build with all cores: $((requiredmemorykb/1024/1024)) GB" + if [[ ${requiredmemorykb} -gt ${freememorykb} ]]; then + jobs=1 + echo "Allocating build jobs according to available memory (${freememorykb}/${requiredmemorykb})..." + while [[ $((jobs * mempercorekb)) -lt ${freememorykb} ]]; do + jobs=$((jobs+1)) + echo -e "${jobs}...$(((jobs * mempercorekb)/1024/1024))GB" + done + build_jobs=${jobs} + fi + fi +fi +if pacman -Qq ccache &> /dev/null; then + export PATH="/usr/lib/ccache/bin/:$PATH" + export CCACHE_SLOPPINESS="file_macro,locale,time_macros" + export CCACHE_NOHASHDIR="true" +fi +export AUTOBUILD_CPU_COUNT=$build_jobs +schedtool -B -n 1 -e ionice -n 1 autobuild configure -A 64 -c ReleaseOS -- \ + -DLL_TESTS:BOOL=OFF \ + -DDISABLE_FATAL_WARNINGS=ON \ + -DUSE_LTO:BOOL=OFF \ + -DDCMAKE_CXX_FLAGS="-march=x86-64-v2 -mtune=native" \ + -DVIEWER_CHANNEL="Alchemy Test" + +echo "Building with ${AUTOBUILD_CPU_COUNT} jobs (adjusted)" +schedtool -B -n 1 -e ionice -n 1 autobuild build -A64 -c ReleaseOS --no-configure |