setup_macos 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. autoload -Uz log_error log_status log_info mkcd
  2. if (( ! ${+commands[curl]} )) {
  3. log_error 'curl not found. Please install curl.'
  4. return 2
  5. }
  6. if (( ! ${+commands[jq]} )) {
  7. log_error 'jq not found. Please install jq.'
  8. return 2
  9. }
  10. if (( ! ${+project_root} )) {
  11. log_error "'project_root' not set. Please set before running ${0}."
  12. return 2
  13. }
  14. if (( ! ${+target} )) {
  15. log_error "'target' not set. Please set before running ${0}."
  16. return 2
  17. }
  18. local -a curl_opts=()
  19. if (( ! ${+CI} )) {
  20. curl_opts+=(--progress-bar)
  21. } else {
  22. curl_opts+=(--show-error --silent)
  23. }
  24. curl_opts+=(--location -O ${@})
  25. pushd ${project_root}
  26. log_info 'Setting up obs-deps...'
  27. read -r deps_version deps_hash <<< \
  28. "$(jq -r --arg key "obs-deps" --arg target "${target}" \
  29. '.dependencies[$key][$target] | {version, hash} | join(" ")' \
  30. ${buildspec_file})"
  31. if [[ -z "${deps_version}" ]] {
  32. log_error 'No obs-deps version found in buildspec.json.'
  33. return 2
  34. }
  35. log_status 'Found obs-deps specification.'
  36. mkcd ${project_root:h}/obs-build-dependencies
  37. if [[ ! -f macos-deps-${deps_version}-${target##*-}.tar.xz ]] {
  38. curl ${curl_opts} \
  39. "https://github.com/obsproject/obs-deps/releases/download/${deps_version}/macos-deps-${deps_version}-${target##*-}.tar.xz" && \
  40. log_status "Downloaded obs-deps for ${target}."
  41. } else {
  42. log_status 'Found downloaded obs-deps.'
  43. }
  44. read -r artifact_checksum _ <<< "$(sha256sum macos-deps-${deps_version}-${target##*-}.tar.xz)"
  45. if [[ ${deps_hash} != ${artifact_checksum} ]] {
  46. log_error "Checksum of downloaded obs-deps does not match specification.
  47. Expected : ${deps_hash}
  48. Actual : ${artifact_checksum}"
  49. return 2
  50. }
  51. log_status 'Checksum of downloaded obs-deps matches.'
  52. mkcd obs-plugin-deps
  53. XZ_OPT=-T0 tar -xzf ../macos-deps-${deps_version}-${target##*-}.tar.xz && log_status 'obs-deps extracted.'
  54. popd
  55. pushd ${project_root}
  56. log_info 'Setting up Qt...'
  57. read -r qt_version qt_hash <<< \
  58. "$(jq -r --arg key "obs-deps-qt" --arg target "${target}" \
  59. '.dependencies[$key][$target] | {version, hash} | join(" ")' \
  60. ${buildspec_file})"
  61. if [[ -z "${qt_version}" ]] {
  62. log_error 'No obs-deps version found in buildspec.json.'
  63. return 2
  64. }
  65. log_status 'Found Qt specification.'
  66. mkcd ${project_root:h}/obs-build-dependencies
  67. if [[ ! -f macos-deps-qt-${deps_version}-${target##*-}.tar.xz ]] {
  68. curl ${curl_opts} \
  69. "https://github.com/obsproject/obs-deps/releases/download/${deps_version}/macos-deps-qt-${deps_version}-${target##*-}.tar.xz" && \
  70. log_status "Downloaded Qt for ${target}"
  71. } else {
  72. log_status 'Found downloaded Qt.'
  73. }
  74. read -r artifact_checksum _ <<< "$(sha256sum macos-deps-qt-${deps_version}-${target##*-}.tar.xz)"
  75. if [[ ${qt_hash} != ${artifact_checksum} ]] {
  76. log_error "Checksum of downloaded Qt does not match specification.
  77. Expected : ${qt_hash}
  78. Actual : ${artifact_checksum}"
  79. return 2
  80. }
  81. log_status 'Checksum of downloaded Qt matches.'
  82. mkcd obs-plugin-deps
  83. XZ_OPT=-T0 tar -xzf ../macos-deps-qt-${qt_version}-${target##*-}.tar.xz && log_status 'Qt extracted.'
  84. xattr -r -d com.apple.quarantine *
  85. log_status 'Removed quarantine flag from downloaded dependencies...'
  86. popd