Add logging functions (with colors!)

This commit is contained in:
JeremyStar™ 2024-03-10 21:58:24 +01:00
parent b87295a493
commit 04cfde15ea

View file

@ -1,20 +1,62 @@
#!/bin/bash #!/bin/bash
set -eo pipefail set -eo pipefail
# Banner
echo " _ _ _ _ _ _ _ _ "
echo " (_)___| |_ _ __ ___ | | _____ _ __ _ __ ___| | ___ _ __ | |_(_)_ __ ___ (_)_______ __| |"
echo " | / __| __| '_ \` _ \\ _____| |/ / _ \\ '__| '_ \\ / _ \\ |_____ / _ \\| '_ \\| __| | '_ \` _ \\| |_ / _ \\/ _\` |"
echo " | \\__ \\ |_| | | | | |_____| < __/ | | | | | __/ |_____| (_) | |_) | |_| | | | | | | |/ / __/ (_| |"
echo " _/ |___/\\__|_| |_| |_| |_|\\_\\___|_| |_| |_|\\___|_| \\___/| .__/ \\__|_|_| |_| |_|_/___\\___|\\__,_|"
echo "|__/ |_|"
echo ""
# Variables # Variables
## Cloning (update these if you fork this project)
export "BUILDTOOL_REPOSITORY=https://git.staropensource.de/JeremyStarTM/kernel-optimized.git" export "BUILDTOOL_REPOSITORY=https://git.staropensource.de/JeremyStarTM/kernel-optimized.git"
export "BUILDTOOL_PACKAGES=base-devel git rustup"
export "BUILDTOOL_BUILDCMDLINE=nice -20 env MAKEFLAGS=-j$(nproc)"
export "BUILDTOOL_CLONEDIR=jstm-kernel-optimized" export "BUILDTOOL_CLONEDIR=jstm-kernel-optimized"
## Base packages to install, packages will be added by questions
export "BUILDTOOL_PACKAGES=base-devel git rustup"
## Building command line stuff
export "BUILDTOOL_BUILDCMDLINE=nice -20 env MAKEFLAGS=-j$(nproc)"
## OOOOoooo colors! (not true color tho)
export "BUILDTOOL_COLOR_SPECIAL=\e[0;35m"
export "BUILDTOOL_COLOR_WARN=\e[0;33m"
export "BUILDTOOL_COLOR_ERROR=\e[0;31m"
export "BUILDTOOL_COLOR_RESET=\e[0m"
# Logging
## Empty
function empty() {
echo ""
}
## Special
function special() {
echo -e "${BUILDTOOL_COLOR_SPECIAL}${*}${BUILDTOOL_COLOR_RESET}"
}
## Informational (header)
function infoh() {
echo -e "${BUILDTOOL_COLOR_RESET}:: ${*}"
}
## Informational (extension)
function infoe() {
echo -e "${BUILDTOOL_COLOR_RESET} ${*}"
}
## Warning (header)
function warnh() {
echo -e "${BUILDTOOL_COLOR_WARN}:: Warning: ${*}${BUILDTOOL_COLOR_RESET}"
}
## Warning (extension)
function warne() {
echo -e "${BUILDTOOL_COLOR_WARN} : ${*}${BUILDTOOL_COLOR_RESET}"
}
## Error (header)
function errorh() {
echo -e "${BUILDTOOL_COLOR_ERROR}:: Error: ${*}${BUILDTOOL_COLOR_RESET}"
}
## Error (extension)
function errore() {
echo -e "${BUILDTOOL_COLOR_ERROR} : ${*}${BUILDTOOL_COLOR_RESET}"
}
# Banner
special "${BUILDTOOL_COLOR_RESET}${BUILDTOOL_COLOR_SPECIAL} _ _ _ _ _ _ _ _ "
special " (_)___| |_ _ __ ___ | | _____ _ __ _ __ ___| | ___ _ __ | |_(_)_ __ ___ (_)_______ __| |"
special " | / __| __| '_ \` _ \\ _____| |/ / _ \\ '__| '_ \\ / _ \\ |_____ / _ \\| '_ \\| __| | '_ \` _ \\| |_ / _ \\/ _\` |"
special " | \\__ \\ |_| | | | | |_____| < __/ | | | | | __/ |_____| (_) | |_) | |_| | | | | | | |/ / __/ (_| |"
special " _/ |___/\\__|_| |_| |_| |_|\\_\\___|_| |_| |_|\\___|_| \\___/| .__/ \\__|_|_| |_| |_|_/___\\___|\\__,_|${BUILDTOOL_COLOR_RESET}"
special "|__/ |_|"
empty
# Checks # Checks
## Check for Arch Linux ## Check for Arch Linux
@ -23,33 +65,33 @@ export "BUILDTOOL_CLONEDIR=jstm-kernel-optimized"
source "/etc/os-release" source "/etc/os-release"
if [ "${NAME}" != "Arch Linux" ] || [ "${PRETTY_NAME}" != "Arch Linux" ] || [ "${ID}" != "arch" ]; then if [ "${NAME}" != "Arch Linux" ] || [ "${PRETTY_NAME}" != "Arch Linux" ] || [ "${ID}" != "arch" ]; then
if [ "${BUILDTOOL_COMPILE_NONARCH}" != "true" ]; then if [ "${BUILDTOOL_COMPILE_NONARCH}" != "true" ]; then
echo ":: Error: Not running on Arch Linux." errorh "Not running on Arch Linux"
echo " This kernel can only compile on Arch Linux." errore "This kernel can only compile on Arch Linux"
echo " If you are sure that you want to compile this kernel on other distributions" errore "If you are sure that you want to compile this kernel on other distributions"
echo " set the \$BUILDTOOL_COMPILE_NONARCH environment variable to \"true\"" errore "set the \$BUILDTOOL_COMPILE_NONARCH environment variable to \"true\""
exit 1 exit 1
else else
echo ":: Warning: Compiling on a non-arch distribution. This may lead to unexpected errors!" warnh "Compiling on a non-arch distribution. This may lead to unexpected errors!"
fi fi
fi fi
) )
## Check for root ## Check for root
if [ "${UID}" == "0" ]; then if [ "${UID}" == "0" ]; then
echo ":: Error: Can't build kernel as root." errorh "Can't build kernel as root"
echo " Please create a new user for building the kernel." errore "Please create a new user for building the kernel"
exit 1 exit 1
fi fi
## Check for sudo ## Check for sudo
if ! which sudo &> /dev/null; then if ! which sudo &> /dev/null; then
echo ":: Error: Could not find sudo in \$PATH." errorh "Could not find sudo in \$PATH"
echo " Please ensure that you have sudo installed." errore "Please ensure that you have sudo installed"
exit 1 exit 1
fi fi
# Questions # Questions
## Ask if mold should replace ld/lld ## Ask if mold should replace ld/lld
function ask_mold() { function ask_mold() {
read -rp ":: Do you want to use mold as your linker (much faster) [Y/n]? " BUILDTOOL_MOLD read -rp "$(infoh "Do you want to use mold as your linker (much faster) [Y/n]? ")" BUILDTOOL_MOLD
case "${BUILDTOOL_MOLD}" in case "${BUILDTOOL_MOLD}" in
"y"|"Y"|"") "y"|"Y"|"")
export "BUILDTOOL_PACKAGES=${BUILDTOOL_PACKAGES} mold" export "BUILDTOOL_PACKAGES=${BUILDTOOL_PACKAGES} mold"
@ -57,26 +99,26 @@ function ask_mold() {
;; ;;
"n"|"N") ;; "n"|"N") ;;
*) *)
echo "Invalid answer. Please answer with Y or N." errorh "Invalid answer. Please answer with Y or N"
ask_mold ask_mold
esac esac
} }
## Ask if the governor should be adjusted ## Ask if the governor should be adjusted
function ask_cpupower() { function ask_cpupower() {
read -rp ":: Do you want to adjust the cpu governor (improves build performance) [Y/n]? " BUILDTOOL_CPUPOWER read -rp "$(infoh "Do you want to adjust the cpu governor (improves build performance) [Y/n]? ")" BUILDTOOL_CPUPOWER
case "${BUILDTOOL_CPUPOWER}" in case "${BUILDTOOL_CPUPOWER}" in
"y"|"Y"|"") "y"|"Y"|"")
export "BUILDTOOL_PACKAGES=${BUILDTOOL_PACKAGES} cpupower" export "BUILDTOOL_PACKAGES=${BUILDTOOL_PACKAGES} cpupower"
;; ;;
"n"|"N") ;; "n"|"N") ;;
*) *)
echo "Invalid answer. Please answer with Y or N." errorh "Invalid answer. Please answer with Y or N"
ask_cpupower ask_cpupower
esac esac
} }
## Ask for building in tmpfs ## Ask for building in tmpfs
function ask_tmpfs() { function ask_tmpfs() {
read -rp ":: Do you want to build in a tmpfs (improves build performance, protects your disk from wearing out faster, ~32 GiB memory required) [Y/n]? " BUILDTOOL_TMPFS read -rp "$(infoh "Do you want to build in a tmpfs (improves build performance, protects your disk from wearing out faster, ~32 GiB memory required) [Y/n]? ")" BUILDTOOL_TMPFS
case "${BUILDTOOL_TMPFS}" in case "${BUILDTOOL_TMPFS}" in
"y"|"Y"|"") "y"|"Y"|"")
export "BUILDTOOL_CLONEDIR=/tmp/${BUILDTOOL_CLONEDIR}" export "BUILDTOOL_CLONEDIR=/tmp/${BUILDTOOL_CLONEDIR}"
@ -85,13 +127,13 @@ function ask_tmpfs() {
export "BUILDTOOL_CLONEDIR=$(pwd)/${BUILDTOOL_CLONEDIR}" export "BUILDTOOL_CLONEDIR=$(pwd)/${BUILDTOOL_CLONEDIR}"
;; ;;
*) *)
echo "Invalid answer. Please answer with Y or N." errorh "Invalid answer. Please answer with Y or N"
ask_tmpfs ask_tmpfs
esac esac
} }
## Ask for kernel config modification using xconfig ## Ask for kernel config modification using xconfig
function ask_xconfig() { function ask_xconfig() {
read -rp ":: Do you want to configure the kernel using xconfig before build [y/N]? " BUILDTOOL_XCONFIG read -rp "$(infoh "Do you want to configure the kernel using xconfig before build [y/N]? ")" BUILDTOOL_XCONFIG
case "${BUILDTOOL_XCONFIG}" in case "${BUILDTOOL_XCONFIG}" in
"y"|"Y") "y"|"Y")
export "BUILDTOOL_PKGBUILD_XCONFIG=_makexconfig=SET" export "BUILDTOOL_PKGBUILD_XCONFIG=_makexconfig=SET"
@ -100,13 +142,13 @@ function ask_xconfig() {
export "BUILDTOOL_PKGBUILD_XCONFIG=_makexconfig=" export "BUILDTOOL_PKGBUILD_XCONFIG=_makexconfig="
;; ;;
*) *)
echo "Invalid answer. Please answer with Y or N." errorh "Invalid answer. Please answer with Y or N"
ask_xconfig ask_xconfig
esac esac
} }
## Ask for kernel config modification using xconfig ## Ask for kernel config modification using xconfig
function ask_nconfig() { function ask_nconfig() {
read -rp ":: Do you want to configure the kernel using nconfig before build [y/N]? " BUILDTOOL_NCONFIG read -rp "$(infoh "Do you want to configure the kernel using nconfig before build [y/N]? ")" BUILDTOOL_NCONFIG
case "${BUILDTOOL_NCONFIG}" in case "${BUILDTOOL_NCONFIG}" in
"y"|"Y") "y"|"Y")
export "BUILDTOOL_PKGBUILD_NCONFIG=_makenconfig=SET" export "BUILDTOOL_PKGBUILD_NCONFIG=_makenconfig=SET"
@ -115,13 +157,13 @@ function ask_nconfig() {
export "BUILDTOOL_PKGBUILD_NCONFIG=_makenconfig=" export "BUILDTOOL_PKGBUILD_NCONFIG=_makenconfig="
;; ;;
*) *)
echo "Invalid answer. Please answer with Y or N." errorh "Invalid answer. Please answer with Y or N"
ask_nconfig ask_nconfig
esac esac
} }
## Ask if the final kernel configuration should be copied ## Ask if the final kernel configuration should be copied
function ask_cpfinalconfig() { function ask_cpfinalconfig() {
read -rp ":: Do you want to copy the final kernel configuration before build [y/N]? " BUILDTOOL_CPFINALCONFIG read -rp "$(infoh "Do you want to copy the final kernel configuration before build [y/N]? ")" BUILDTOOL_CPFINALCONFIG
case "${BUILDTOOL_CPFINALCONFIG}" in case "${BUILDTOOL_CPFINALCONFIG}" in
"y"|"Y") "y"|"Y")
export "BUILDTOOL_PKGBUILD_CPFINALCONFIG=_copyfinalconfig=SET" export "BUILDTOOL_PKGBUILD_CPFINALCONFIG=_copyfinalconfig=SET"
@ -130,18 +172,18 @@ function ask_cpfinalconfig() {
export "BUILDTOOL_PKGBUILD_CPFINALCONFIG=_copyfinalconfig=" export "BUILDTOOL_PKGBUILD_CPFINALCONFIG=_copyfinalconfig="
;; ;;
*) *)
echo "Invalid answer. Please answer with Y or N." errorh "Invalid answer. Please answer with Y or N"
ask_cpfinalconfig ask_cpfinalconfig
esac esac
} }
## Ask if only active modules should be compiled into the kernel ## Ask if only active modules should be compiled into the kernel
function ask_modprobeddb() { function ask_modprobeddb() {
read -rp ":: Do you want to only build active kernel modules (modprobed-db must be installed, read \"https://wiki.archlinux.org/index.php/Modprobed-db\" first) [y/N]? " BUILDTOOL_MODPROBEDDB read -rp "$(infoh "Do you want to only build active kernel modules (modprobed-db must be installed, read \"https://wiki.archlinux.org/index.php/Modprobed-db\" first) [y/N]? ")" BUILDTOOL_MODPROBEDDB
case "${BUILDTOOL_MODPROBEDDB}" in case "${BUILDTOOL_MODPROBEDDB}" in
"y"|"Y") "y"|"Y")
if ! which modprobed-db &> /dev/null; then if ! which modprobed-db &> /dev/null; then
echo ":: Error: Could not find modprobed-db in \$PATH." errorh "Could not find modprobed-db in \$PATH."
echo " Please ensure that you have modprobed-db installed." errore "Please ensure that you have modprobed-db installed."
ask_modprobeddb ask_modprobeddb
return 1 return 1
fi fi
@ -152,71 +194,71 @@ function ask_modprobeddb() {
export "BUILDTOOL_PKGBUILD_MODPROBEDDB=_localmodcfg=" export "BUILDTOOL_PKGBUILD_MODPROBEDDB=_localmodcfg="
;; ;;
*) *)
echo "Invalid answer. Please answer with Y or N." errorh "Invalid answer. Please answer with Y or N"
ask_modprobeddb ask_modprobeddb
esac esac
} }
## Ask for sub architecture ## Ask for sub architecture
function ask_subarchitecture() { function ask_subarchitecture() {
echo ":: Displaying sub architecture list" infoh "Displaying sub architecture list"
echo " 1. AMD Opteron/Athlon64/Hammer/K8 (MK8)" infoe " 1. AMD Opteron/Athlon64/Hammer/K8 (MK8)"
echo " 2. AMD Opteron/Athlon64/Hammer/K8 with SSE3 (MK8SSE3)" infoe " 2. AMD Opteron/Athlon64/Hammer/K8 with SSE3 (MK8SSE3)"
echo " 3. AMD 61xx/7x50/PhenomX3/X4/II/K10 (MK10)" infoe " 3. AMD 61xx/7x50/PhenomX3/X4/II/K10 (MK10)"
echo " 4. AMD Barcelona (MBARCELONA)" infoe " 4. AMD Barcelona (MBARCELONA)"
echo " 5. AMD Bobcat (MBOBCAT)" infoe " 5. AMD Bobcat (MBOBCAT)"
echo " 6. AMD Jaguar (MJAGUAR)" infoe " 6. AMD Jaguar (MJAGUAR)"
echo " 7. AMD Bulldozer (MBULLDOZER)" infoe " 7. AMD Bulldozer (MBULLDOZER)"
echo " 8. AMD Piledriver (MPILEDRIVER)" infoe " 8. AMD Piledriver (MPILEDRIVER)"
echo " 9. AMD Steamroller (MSTEAMROLLER)" infoe " 9. AMD Steamroller (MSTEAMROLLER)"
echo " 10. AMD Excavator (MEXCAVATOR)" infoe "10. AMD Excavator (MEXCAVATOR)"
echo " 11. AMD Zen (MZEN)" infoe "11. AMD Zen (MZEN)"
echo " 12. AMD Zen 2 (MZEN2)" infoe "12. AMD Zen 2 (MZEN2)"
echo " 13. AMD Zen 3 (MZEN3)" infoe "13. AMD Zen 3 (MZEN3)"
echo " 14. AMD Zen 4 (MZEN4)" infoe "14. AMD Zen 4 (MZEN4)"
echo " 15. Intel P4 / older Netburst based Xeon (MPSC)" infoe "15. Intel P4 / older Netburst based Xeon (MPSC)"
echo " 16. Intel Core 2 (MCORE2)" infoe "16. Intel Core 2 (MCORE2)"
echo " 17. Intel Atom (MATOM)" infoe "17. Intel Atom (MATOM)"
echo " 18. Intel Nehalem (MNEHALEM)" infoe "18. Intel Nehalem (MNEHALEM)"
echo " 19. Intel Westmere (MWESTMERE)" infoe "19. Intel Westmere (MWESTMERE)"
echo " 20. Intel Silvermont (MSILVERMONT)" infoe "20. Intel Silvermont (MSILVERMONT)"
echo " 21. Intel Goldmont (MGOLDMONT)" infoe "21. Intel Goldmont (MGOLDMONT)"
echo " 22. Intel Goldmont Plus (MGOLDMONTPLUS)" infoe "22. Intel Goldmont Plus (MGOLDMONTPLUS)"
echo " 23. Intel Sandy Bridge (MSANDYBRIDGE)" infoe "23. Intel Sandy Bridge (MSANDYBRIDGE)"
echo " 24. Intel Ivy Bridge (MIVYBRIDGE)" infoe "24. Intel Ivy Bridge (MIVYBRIDGE)"
echo " 25. Intel Haswell (MHASWELL)" infoe "25. Intel Haswell (MHASWELL)"
echo " 26. Intel Broadwell (MBROADWELL)" infoe "26. Intel Broadwell (MBROADWELL)"
echo " 27. Intel Skylake (MSKYLAKE)" infoe "27. Intel Skylake (MSKYLAKE)"
echo " 28. Intel Skylake X (MSKYLAKEX)" infoe "28. Intel Skylake X (MSKYLAKEX)"
echo " 29. Intel Cannon Lake (MCANNONLAKE)" infoe "29. Intel Cannon Lake (MCANNONLAKE)"
echo " 30. Intel Ice Lake (MICELAKE)" infoe "30. Intel Ice Lake (MICELAKE)"
echo " 31. Intel Cascade Lake (MCASCADELAKE)" infoe "31. Intel Cascade Lake (MCASCADELAKE)"
echo " 32. Intel Cooper Lake (MCOOPERLAKE)" infoe "32. Intel Cooper Lake (MCOOPERLAKE)"
echo " 33. Intel Tiger Lake (MTIGERLAKE)" infoe "33. Intel Tiger Lake (MTIGERLAKE)"
echo " 34. Intel Sapphire Rapids (MSAPPHIRERAPIDS)" infoe "34. Intel Sapphire Rapids (MSAPPHIRERAPIDS)"
echo " 35. Intel Rocket Lake (MROCKETLAKE)" infoe "35. Intel Rocket Lake (MROCKETLAKE)"
echo " 36. Intel Alder Lake (MALDERLAKE)" infoe "36. Intel Alder Lake (MALDERLAKE)"
echo " 37. Intel Raptor Lake (MRAPTORLAKE)" infoe "37. Intel Raptor Lake (MRAPTORLAKE)"
echo " 38. Intel Meteor Lake (MMETEORLAKE)" infoe "38. Intel Meteor Lake (MMETEORLAKE)"
echo " 39. Intel Emerald Rapids (MEMERALDRAPIDS)" infoe "39. Intel Emerald Rapids (MEMERALDRAPIDS)"
echo " 40. Generic-x86-64 (GENERIC_CPU)" infoe "40. Generic-x86-64 (GENERIC_CPU)"
echo " 41. Generic-x86-64-v2 (GENERIC_CPU2)" infoe "41. Generic-x86-64-v2 (GENERIC_CPU2)"
echo " 42. Generic-x86-64-v3 (GENERIC_CPU3)" infoe "42. Generic-x86-64-v3 (GENERIC_CPU3)"
echo " 43. Generic-x86-64-v4 (GENERIC_CPU4)" infoe "43. Generic-x86-64-v4 (GENERIC_CPU4)"
echo " 44. Intel-Native optimizations autodetected by the compiler (MNATIVE_INTEL)" infoe "44. Intel-Native optimizations autodetected by the compiler (MNATIVE_INTEL)"
echo " 45. AMD-Native optimizations autodetected by the compiler (MNATIVE_AMD)" infoe "45. AMD-Native optimizations autodetected by the compiler (MNATIVE_AMD)"
read -rp ":: Which sub architecture do you want to build Linux for (see above, enter 40 if unsure) [40]? " BUILDTOOL_SUBARCHITECTURE read -rp ":: Which sub architecture do you want to build Linux for (see above, enter 40 if unsure) [40]? " BUILDTOOL_SUBARCHITECTURE
case "${BUILDTOOL_SUBARCHITECTURE}" in case "${BUILDTOOL_SUBARCHITECTURE}" in
"") "")
export "BUILDTOOL_PKGBUILD_SUBARCHITECTURE=_subarch=40" export "BUILDTOOL_PKGBUILD_SUBARCHITECTURE=_subarch=40"
;; ;;
*[!0-9]*) *[!0-9]*)
echo ":: Error: Invalid subarchitecture" errorh "Invalid subarchitecture"
ask_subarchitecture ask_subarchitecture
return 1 return 1
;; ;;
*) *)
if [ ! "${BUILDTOOL_SUBARCHITECTURE}" -gt 0 ] || [ ! "${BUILDTOOL_SUBARCHITECTURE}" -lt 46 ]; then if [ ! "${BUILDTOOL_SUBARCHITECTURE}" -gt 0 ] || [ ! "${BUILDTOOL_SUBARCHITECTURE}" -lt 46 ]; then
echo ":: Error: Invalid subarchitecture." errorh "Invalid subarchitecture"
ask_subarchitecture ask_subarchitecture
else else
export "BUILDTOOL_PKGBUILD_SUBARCHITECTURE=_subarch=${BUILDTOOL_SUBARCHITECTURE}" export "BUILDTOOL_PKGBUILD_SUBARCHITECTURE=_subarch=${BUILDTOOL_SUBARCHITECTURE}"
@ -226,7 +268,7 @@ function ask_subarchitecture() {
} }
## Ask for kernel debug mode ## Ask for kernel debug mode
function ask_debug() { function ask_debug() {
read -rp ":: Do you want to enable kernel debug mode [y/N/i(gnore)]? " BUILDTOOL_DEBUG read -rp "$(infoh "Do you want to enable kernel debug mode [y/N/i(gnore)]? ")" BUILDTOOL_DEBUG
case "${BUILDTOOL_DEBUG}" in case "${BUILDTOOL_DEBUG}" in
"y"|"Y") "y"|"Y")
export "BUILDTOOL_PKGBUILD_DEBUG=_debug=y" export "BUILDTOOL_PKGBUILD_DEBUG=_debug=y"
@ -238,7 +280,7 @@ function ask_debug() {
export "BUILDTOOL_PKGBUILD_DEBUG=_debug=" export "BUILDTOOL_PKGBUILD_DEBUG=_debug="
;; ;;
*) *)
echo "Invalid answer. Please answer with Y, N or I." errorh "Invalid answer. Please answer with Y, N or I"
ask_debug ask_debug
esac esac
} }
@ -247,21 +289,21 @@ function ask_clonedir_conflictresolution() {
if [ ! -d "${BUILDTOOL_CLONEDIR}" ]; then if [ ! -d "${BUILDTOOL_CLONEDIR}" ]; then
return return
elif [ -a "${BUILDTOOL_CLONEDIR}" ] && [ ! -d "${BUILDTOOL_CLONEDIR}" ]; then elif [ -a "${BUILDTOOL_CLONEDIR}" ] && [ ! -d "${BUILDTOOL_CLONEDIR}" ]; then
echo ":: Warning: Something that isn't a directory exists at location \"${BUILDTOOL_CLONEDIR}\"" warnh "Something that isn't a directory exists at location \"${BUILDTOOL_CLONEDIR}\""
fi fi
read -rp ":: Warning: \"${BUILDTOOL_CLONEDIR}\" already exists. What should be done to resolve the conflict [A(bort)/r(ecompile)/f(resh)]? " BUILDTOOL_CLONEDIR_CONFLICT read -rp "$(infoh "Warning: \"${BUILDTOOL_CLONEDIR}\" already exists. What should be done to resolve the conflict [A(bort)/r(ecompile)/f(resh)]? ")" BUILDTOOL_CLONEDIR_CONFLICT
case "${BUILDTOOL_CLONEDIR_CONFLICT}" in case "${BUILDTOOL_CLONEDIR_CONFLICT}" in
"a"|"A"|"") "a"|"A"|"")
echo ":: Error: Conflict resolution failed." errorh "Conflict resolution failed"
exit 1 exit 1
;; ;;
"r"|"R") ;; "r"|"R") ;;
"f"|"F") "f"|"F")
echo ":: Removing existing \$BUILDTOOL_CLONEDIR directory" infoh "Removing existing \$BUILDTOOL_CLONEDIR directory"
#rm -rf "${BUILDTOOL_CLONEDIR}" #rm -rf "${BUILDTOOL_CLONEDIR}"
;; ;;
*) *)
echo "Invalid answer. Please answer with Y, N or I." errorh "Invalid answer. Please answer with Y, N or I."
ask_debug ask_debug
esac esac
} }
@ -278,45 +320,45 @@ ask_clonedir_conflictresolution
# Pre-building # Pre-building
## Install dependencies ## Install dependencies
echo ":: Installing dependencies" infoh "Installing dependencies"
if ! sudo pacman -Syu --asdeps --needed ${BUILDTOOL_PACKAGES}; then if ! sudo pacman -Syu --asdeps --needed ${BUILDTOOL_PACKAGES}; then
echo ":: Error: Installing dependencies failed: pacman returned with non-zero exit code" errorh "Installing dependencies failed: pacman returned with non-zero exit code"
exit 1 exit 1
fi fi
if ! rustup default nightly; then if ! rustup default nightly; then
echo ":: Error: Installing dependencies failed: rustup returned with non-zero exit code" errorh "Installing dependencies failed: rustup returned with non-zero exit code"
exit 1 exit 1
fi fi
## Adjust cpu governor ## Adjust cpu governor
case "${BUILDTOOL_CPUPOWER}" in case "${BUILDTOOL_CPUPOWER}" in
"y"|"Y"|"") "y"|"Y"|"")
echo ":: Adjusting cpu governor" infoh "Adjusting cpu governor"
if ! sudo cpupower frequency-set -g performance; then if ! sudo cpupower frequency-set -g performance; then
echo ":: Error: Adjusting cpu governor failed: cpupower returned with non-zero exit code" errorh "Adjusting cpu governor failed: cpupower returned with non-zero exit code"
return 1 return 1
fi fi
;; ;;
"n"|"N") ;; "n"|"N") ;;
*) *)
echo ":: Error: Internal inconsistency detected: Value of \$BUILDTOOL_CPUPOWER is not a valid boolean answer" errorh "Internal inconsistency detected: Value of \$BUILDTOOL_CPUPOWER is not a valid boolean answer"
exit 2 exit 2
;; ;;
esac esac
# Clone repository # Clone repository
echo ":: Cloning repository" infoh "Cloning repository"
git clone "${BUILDTOOL_REPOSITORY}" "${BUILDTOOL_CLONEDIR}" git clone "${BUILDTOOL_REPOSITORY}" "${BUILDTOOL_CLONEDIR}"
cd "${BUILDTOOL_CLONEDIR}" cd "${BUILDTOOL_CLONEDIR}"
# Print debug information # Print debug information
if [ "${BUILDTOOL_DEBUG}" == "true" ]; then if [ "${BUILDTOOL_DEBUG}" == "true" ]; then
echo ":: Printing debug information" infoh "Printing debug information"
echo "++ env ++" echo "+++ env +++"
env|grep "BUILDTOOL_"|sort env|grep "BUILDTOOL_"|sort
echo "++ env ++" echo "+++ env +++"
echo "build cmdline: ${BUILDTOOL_BUILDCMDLINE} "${BUILDTOOL_PKGBUILD_XCONFIG}" "${BUILDTOOL_PKGBUILD_NCONFIG}" "${BUILDTOOL_PKGBUILD_CPFINALCONFIG}" "${BUILDTOOL_PKGBUILD_MODPROBEDDB}" "${BUILDTOOL_PKGBUILD_SUBARCHITECTURE}" "${BUILDTOOL_PKGBUILD_DEBUG}" makepkg --syncdeps -p PKGBUILD.buildtool" echo "build cmdline: ${BUILDTOOL_BUILDCMDLINE} "${BUILDTOOL_PKGBUILD_XCONFIG}" "${BUILDTOOL_PKGBUILD_NCONFIG}" "${BUILDTOOL_PKGBUILD_CPFINALCONFIG}" "${BUILDTOOL_PKGBUILD_MODPROBEDDB}" "${BUILDTOOL_PKGBUILD_SUBARCHITECTURE}" "${BUILDTOOL_PKGBUILD_DEBUG}" makepkg --syncdeps -p PKGBUILD.buildtool"
fi fi
# Build kernel
echo ":: Building kernel"
${BUILDTOOL_BUILDCMDLINE} "${BUILDTOOL_PKGBUILD_XCONFIG}" "${BUILDTOOL_PKGBUILD_NCONFIG}" "${BUILDTOOL_PKGBUILD_CPFINALCONFIG}" "${BUILDTOOL_PKGBUILD_MODPROBEDDB}" "${BUILDTOOL_PKGBUILD_SUBARCHITECTURE}" "${BUILDTOOL_PKGBUILD_DEBUG}" makepkg --syncdeps -p PKGBUILD.buildtool ${BUILDTOOL_BUILDCMDLINE} "${BUILDTOOL_PKGBUILD_XCONFIG}" "${BUILDTOOL_PKGBUILD_NCONFIG}" "${BUILDTOOL_PKGBUILD_CPFINALCONFIG}" "${BUILDTOOL_PKGBUILD_MODPROBEDDB}" "${BUILDTOOL_PKGBUILD_SUBARCHITECTURE}" "${BUILDTOOL_PKGBUILD_DEBUG}" makepkg --syncdeps -p PKGBUILD.buildtool
# Build package
infoh "Building package"