setup_ubuntu 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. log_group 'Installing obs-studio build dependencies...'
  13. mkdir -p ${project_root}/.deps
  14. local deps_version
  15. local deps_baseurl
  16. local deps_label
  17. local deps_hash
  18. IFS=';' read -r deps_version deps_baseurl deps_label deps_hash deps_revision <<< \
  19. "$(jq -r --arg target "${target}" '
  20. .configurePresets[]
  21. | select(.name=="dependencies")
  22. | .vendor["obsproject.com/obs-studio"].dependencies["cef"]
  23. | {version, baseUrl, "label", "hash": .hashes[$target], "revision": .revision[$target]}
  24. | join(";")
  25. ' ${project_root}/CMakePresets.json)"
  26. if (( ! deps_version )) {
  27. log_error 'No valid cef spec found in buildspec.json.'
  28. return 2
  29. }
  30. log_group 'Setting up pre-built Chromium Embedded Framework...'
  31. pushd ${project_root}/.deps
  32. local _filename="cef_binary_${deps_version}_${target//ubuntu-/linux_}${deps_revision:+"_v${deps_revision}"}.tar.xz"
  33. local _url=${deps_baseurl}/${_filename}
  34. local _target="cef_binary_${deps_version}_${target//ubuntu-/linux_}"
  35. typeset -g CEF_VERSION=${deps_version}
  36. log_debug "Running curl ${curl_opts} ${_url}"
  37. curl ${curl_opts} ${_url} && \
  38. log_status "Downloaded ${deps_label} for ${target}."
  39. read -r artifact_checksum _ <<< "$(sha256sum ${_filename})"
  40. if [[ ${deps_hash} != ${artifact_checksum} ]] {
  41. log_error "Checksum of downloaded ${deps_label} does not match specification.
  42. Expected : ${deps_hash}
  43. Actual : ${artifact_checksum}"
  44. return 2
  45. }
  46. log_status "Checksum of downloaded ${deps_label} matches."
  47. mkdir -p ${_target} && pushd ${_target}
  48. XZ_OPT=-T0 tar --strip-components 1 -xJf ../${_filename} && log_status "${deps_label} extracted."
  49. popd
  50. log_group 'Installing obs-studio build dependencies from apt...'
  51. sudo apt-get install -y --no-install-recommends \
  52. build-essential libglib2.0-dev \
  53. extra-cmake-modules lsb-release dh-cmake \
  54. libcurl4-openssl-dev \
  55. libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev \
  56. libswresample-dev libswscale-dev \
  57. libjansson-dev \
  58. libx11-xcb-dev \
  59. libgles2-mesa-dev \
  60. libwayland-dev \
  61. libpipewire-0.3-dev \
  62. libpulse-dev \
  63. libx264-dev \
  64. libmbedtls-dev \
  65. libgl1-mesa-dev \
  66. libjansson-dev \
  67. uthash-dev \
  68. libsimde-dev \
  69. libluajit-5.1-dev python3-dev \
  70. libx11-dev libxcb-randr0-dev libxcb-shm0-dev libxcb-xinerama0-dev \
  71. libxcb-composite0-dev libxinerama-dev libxcb1-dev libx11-xcb-dev libxcb-xfixes0-dev \
  72. swig libcmocka-dev libxss-dev libglvnd-dev \
  73. libxkbcommon-dev libatk1.0-dev libatk-bridge2.0-dev libxcomposite-dev libxdamage-dev \
  74. libasound2-dev libfdk-aac-dev libfontconfig-dev libfreetype6-dev libjack-jackd2-dev \
  75. libpulse-dev libsndio-dev libspeexdsp-dev libudev-dev libv4l-dev libva-dev libvlc-dev \
  76. libpci-dev libdrm-dev \
  77. nlohmann-json3-dev libwebsocketpp-dev libasio-dev libqrcodegencpp-dev \
  78. libffmpeg-nvenc-dev librist-dev libsrt-openssl-dev \
  79. qt6-base-dev libqt6svg6-dev qt6-base-private-dev \
  80. libvpl-dev libvpl2