mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
128 lines
3.7 KiB
Plaintext
128 lines
3.7 KiB
Plaintext
autoload -Uz log_error log_status log_info mkcd
|
|
|
|
if (( ! ${+commands[curl]} )) {
|
|
log_error 'curl not found. Please install curl.'
|
|
return 2
|
|
}
|
|
|
|
if (( ! ${+commands[jq]} )) {
|
|
log_error 'jq not found. Please install jq.'
|
|
return 2
|
|
}
|
|
|
|
if (( ! ${+project_root} )) {
|
|
log_error "'project_root' not set. Please set before running ${0}."
|
|
return 2
|
|
}
|
|
|
|
if (( ! ${+target} )) {
|
|
log_error "'target' not set. Please set before running ${0}."
|
|
return 2
|
|
}
|
|
|
|
local -a curl_opts=()
|
|
if (( ! ${+CI} )) {
|
|
curl_opts+=(--progress-bar)
|
|
} else {
|
|
curl_opts+=(--show-error --silent)
|
|
}
|
|
curl_opts+=(--location -O ${@})
|
|
|
|
pushd ${project_root}
|
|
|
|
local _qt_version
|
|
local _deployment_target
|
|
read -r _qt_version _deployment_target <<< \
|
|
"$(jq -r --arg target "${target}" \
|
|
'.platformConfig[$target] | { qtVersion, deploymentTarget } | join (" ")' \
|
|
${buildspec_file})"
|
|
|
|
typeset -g QT_VERSION=${_qt_version}
|
|
typeset -g DEPLOYMENT_TARGET=${_deployment_target}
|
|
|
|
if (( ! (${skips[(Ie)all]} + ${skips[(Ie)deps]}) )) {
|
|
mkdir -p ${project_root:h}/obs-build-dependencies
|
|
|
|
local dependency
|
|
local deps_version
|
|
local deps_baseurl
|
|
local deps_label
|
|
local deps_hash
|
|
local _filename
|
|
local _url
|
|
local _target
|
|
local artifact_checksum
|
|
|
|
for dependency ('prebuilt' "qt${QT_VERSION}") {
|
|
IFS=';' read -r deps_version deps_baseurl deps_label deps_hash <<< \
|
|
"$(jq -r --arg dependency "${dependency}" --arg target "${target}" \
|
|
'.dependencies[$dependency] | {version, baseUrl, "label", "hash": .hashes[$target]} | join(";")' \
|
|
${buildspec_file})"
|
|
|
|
if [[ -z "${deps_version}" ]] {
|
|
log_error "No ${dependency} spec found in ${buildspec_file}."
|
|
return 2
|
|
}
|
|
log_info "Setting up ${deps_label}..."
|
|
|
|
pushd ${project_root:h}/obs-build-dependencies
|
|
|
|
case ${dependency} {
|
|
prebuilt)
|
|
_filename="macos-deps-${deps_version}-${target##*-}.tar.xz"
|
|
_url="${deps_baseurl}/${deps_version}/${_filename}"
|
|
_target="plugin-deps-${deps_version}-qt${QT_VERSION}-${target##*-}"
|
|
typeset -g OBS_DEPS_VERSION=${deps_version}
|
|
;;
|
|
qt*)
|
|
if (( ${+CI} )) {
|
|
_filename="macos-deps-qt${QT_VERSION}-${deps_version}-universal.tar.xz"
|
|
deps_hash="$(jq -r --arg dependency "${dependency}" \
|
|
'.dependencies[$dependency].hashes["macos-universal"]' \
|
|
${buildspec_file})"
|
|
} else {
|
|
_filename="macos-deps-qt${QT_VERSION}-${deps_version}-${target##*-}.tar.xz"
|
|
}
|
|
_url="${deps_baseurl}/${deps_version}/${_filename}"
|
|
_target="plugin-deps-${deps_version}-qt${QT_VERSION}-${target##*-}"
|
|
;;
|
|
}
|
|
|
|
if [[ ! -f ${_filename} ]] {
|
|
log_debug "Running curl ${curl_opts} ${_url}"
|
|
curl ${curl_opts} ${_url} && \
|
|
log_status "Downloaded ${deps_label} for ${target}."
|
|
} else {
|
|
log_status "Found downloaded ${deps_label}"
|
|
}
|
|
|
|
read -r artifact_checksum _ <<< "$(sha256sum ${_filename})"
|
|
if [[ ${deps_hash} != ${artifact_checksum} ]] {
|
|
log_error "Checksum of downloaded ${deps_label} does not match specification.
|
|
Expected : ${deps_hash}
|
|
Actual : ${artifact_checksum}"
|
|
return 2
|
|
}
|
|
log_status "Checksum of downloaded ${deps_label} matches."
|
|
|
|
if (( ! (${skips[(Ie)all]} + ${skips[(Ie)unpack]}) )) {
|
|
mkdir -p ${_target} && pushd ${_target}
|
|
|
|
XZ_OPT=-T0 tar -xzf ../${_filename} && log_status "${deps_label} extracted."
|
|
popd
|
|
}
|
|
}
|
|
|
|
popd
|
|
pushd ${project_root:h}/obs-build-dependencies
|
|
xattr -r -d com.apple.quarantine *
|
|
log_status 'Removed quarantine flag from downloaded dependencies...'
|
|
popd
|
|
} else {
|
|
local deps_version
|
|
read -r deps_version <<< \
|
|
"$(jq -r '.dependencies.prebuilt.version' ${buildspec_file})"
|
|
|
|
typeset -g OBS_DEPS_VERSION=${deps_version}
|
|
}
|