setup_linux 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. autoload -Uz log_group log_error log_status log_info log_debug
  2. if (( ! ${+commands[curl]} )) {
  3. log_error 'curl not available.'
  4. return 2
  5. }
  6. if (( ! ${+commands[jq]} )) {
  7. log_error 'jq not available.'
  8. return 2
  9. }
  10. local -a curl_opts=(--show-error --silent --location -O ${@})
  11. pushd ${project_root}
  12. typeset -g QT_VERSION
  13. read -r QT_VERSION <<< \
  14. "$(jq -r --arg target "${target}" \
  15. '.platformConfig[$target] | { qtVersion } | join(" ")' \
  16. ${buildspec_file})"
  17. log_group 'Installing obs-studio build dependencies...'
  18. mkdir -p ${project_root}/.deps
  19. local deps_version
  20. local deps_baseurl
  21. local deps_label
  22. local deps_hash
  23. IFS=';' read -r deps_version deps_baseurl deps_label deps_hash <<< \
  24. "$(jq -r --arg target "${target}" \
  25. '.dependencies["cef"] | {version, baseUrl, "label", "hash": .hashes[$target]} | join(";")' \
  26. ${buildspec_file})"
  27. if (( ! deps_version )) {
  28. log_error 'No valid cef spec found in buildspec.json.'
  29. return 2
  30. }
  31. log_group 'Setting up pre-built Chromium Embedded Framework...'
  32. pushd ${project_root}/.deps
  33. local _filename="cef_binary_${deps_version}_${target//-/_}.tar.xz"
  34. local _url=${deps_baseurl}/${_filename}
  35. local _target="cef_binary_${deps_version}_${target//-/_}"
  36. typeset -g CEF_VERSION=${deps_version}
  37. log_debug "Running curl ${curl_opts} ${_url}"
  38. curl ${curl_opts} ${_url} && \
  39. log_status "Downloaded ${deps_label} for ${target}."
  40. read -r artifact_checksum _ <<< "$(sha256sum ${_filename})"
  41. if [[ ${deps_hash} != ${artifact_checksum} ]] {
  42. log_error "Checksum of downloaded ${deps_label} does not match specification.
  43. Expected : ${deps_hash}
  44. Actual : ${artifact_checksum}"
  45. return 2
  46. }
  47. log_status "Checksum of downloaded ${deps_label} matches."
  48. mkdir -p ${_target} && pushd ${_target}
  49. XZ_OPT=-T0 tar --strip-components 1 -xJf ../${_filename} && log_status "${deps_label} extracted."
  50. popd
  51. local suffix
  52. if [[ ${CPUTYPE} != ${target##*-} ]] {
  53. local -A arch_mappings=(
  54. aarch64 arm64
  55. x86_64 amd64
  56. )
  57. suffix=":${arch_mappings[${target##*-}]}"
  58. sudo apt-get install -y --no-install-recommends \
  59. gcc-${${target##*-}//_/-}-linux-gnu g++-${${target##*-}//_/-}-linux-gnu
  60. }
  61. sudo apt-get install -y --no-install-recommends \
  62. build-essential \
  63. libcurl4-openssl-dev \
  64. libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev \
  65. libswresample-dev libswscale-dev \
  66. libjansson-dev \
  67. libx11-xcb-dev \
  68. libgles2-mesa-dev libgles2-mesa \
  69. libwayland-dev \
  70. libpipewire-0.3-dev \
  71. libpulse-dev \
  72. libx264-dev \
  73. libmbedtls-dev \
  74. libgl1-mesa-dev \
  75. libjansson-dev \
  76. libluajit-5.1-dev python3-dev \
  77. libx11-dev libxcb-randr0-dev libxcb-shm0-dev libxcb-xinerama0-dev \
  78. libxcb-composite0-dev libxinerama-dev libxcb1-dev libx11-xcb-dev libxcb-xfixes0-dev \
  79. swig libcmocka-dev libxss-dev libglvnd-dev \
  80. libxkbcommon-dev \
  81. libasound2-dev libfdk-aac-dev libfontconfig-dev libfreetype6-dev libjack-jackd2-dev \
  82. libpulse-dev libsndio-dev libspeexdsp-dev libudev-dev libv4l-dev libva-dev libvlc-dev \
  83. libpci-dev libdrm-dev \
  84. nlohmann-json3-dev libwebsocketpp-dev libasio-dev libvpl-dev libqrcodegencpp-dev
  85. if (( UBUNTU_2210_OR_LATER )) sudo apt-get install -y --no-install-recommends librist-dev libsrt-openssl-dev
  86. local -a _qt_packages=()
  87. if (( QT_VERSION == 6 )) {
  88. _qt_packages+=(
  89. qt6-base-dev
  90. libqt6svg6-dev
  91. qt6-base-private-dev
  92. )
  93. } else {
  94. log_error "Unsupported Qt version '${QT_VERSION}' specified."
  95. return 2
  96. }
  97. sudo apt-get install -y --no-install-recommends ${_qt_packages}