check_ubuntu 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. autoload -Uz log_info log_status log_error log_debug log_warning log_group
  2. log_group 'Check Linux build requirements'
  3. log_debug 'Checking Linux distribution name and version...'
  4. # Check for Ubuntu version 22.10 or later, which have srt and librist available via apt-get
  5. typeset -g -i UBUNTU_2210_OR_LATER=0
  6. if [[ -f /etc/os_release ]] {
  7. local dist_name
  8. local dist_version
  9. read -r dist_name dist_version <<< "$(source /etc/os_release; print "${NAME} ${VERSION_ID}")"
  10. autoload -Uz is-at-least
  11. if [[ ${dist_name} == Ubuntu ]] && is-at-least 22.10 ${dist_version}; then
  12. typeset -g -i UBUNTU_2210_OR_LATER=1
  13. fi
  14. }
  15. log_debug 'Checking for apt-get...'
  16. if (( ! ${+commands[apt-get]} )) {
  17. log_error 'No apt-get command found. Please install apt'
  18. return 2
  19. } else {
  20. log_debug "Apt-get located at ${commands[apt-get]}"
  21. }
  22. local -a dependencies=("${(fA)$(<${SCRIPT_HOME}/.Aptfile)}")
  23. local -a install_list
  24. local binary
  25. sudo apt-get update -qq
  26. for dependency (${dependencies}) {
  27. local -a tokens=(${=dependency//(,|:|\')/})
  28. if [[ ! ${tokens[1]} == 'package' ]] continue
  29. if [[ ${#tokens} -gt 2 && ${tokens[3]} == 'bin' ]] {
  30. binary=${tokens[4]}
  31. } else {
  32. binary=${tokens[2]}
  33. }
  34. if (( ! ${+commands[${binary}]} )) install_list+=(${tokens[2]})
  35. }
  36. log_debug "List of dependencies to install: ${install_list}"
  37. if (( ${#install_list} )) {
  38. if (( ! ${+CI} )) log_warning 'Dependency installation via apt may require elevated privileges'
  39. local -a apt_args=(
  40. ${CI:+-y}
  41. --no-install-recommends
  42. )
  43. if (( _loglevel == 0 )) apt_args+=(--quiet)
  44. sudo apt-get ${apt_args} install ${install_list}
  45. }
  46. rehash
  47. log_group