123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #!/bin/bash
- ##############################################################################
- # macOS dependency management function
- ##############################################################################
- #
- # This script file can be included in build scripts for macOS or run directly
- #
- ##############################################################################
- # Halt on errors
- set -eE
- install_obs-deps() {
- status "Set up precompiled macOS OBS dependencies v${1}"
- ensure_dir "${DEPS_BUILD_DIR}"
- step "Download..."
- check_and_fetch "https://github.com/obsproject/obs-deps/releases/download/${1}/macos-deps-${1}-universal.tar.xz" "${2}"
- mkdir -p obs-deps
- step "Unpack..."
- /usr/bin/tar -xf "./macos-deps-${1}-universal.tar.xz" -C ./obs-deps
- /usr/bin/xattr -r -d com.apple.quarantine ./obs-deps
- }
- install_qt-deps() {
- status "Set up precompiled dependency Qt v${1}"
- ensure_dir "${DEPS_BUILD_DIR}"
- step "Download..."
- check_and_fetch "https://github.com/obsproject/obs-deps/releases/download/${1}/macos-deps-qt-${1}-universal.tar.xz" "${2}"
- mkdir -p obs-deps
- step "Unpack..."
- /usr/bin/tar -xf "./macos-deps-qt-${1}-universal.tar.xz" -C ./obs-deps
- /usr/bin/xattr -r -d com.apple.quarantine ./obs-deps
- }
- install_obs-studio() {
- if [ "${OBS_BRANCH}" ]; then
- CHECKOUT_REF="${OBS_BRANCH}"
- else
- CHECKOUT_REF="tags/${OBS_VERSION:-${CI_OBS_VERSION}}"
- fi
- ensure_dir "${OBS_BUILD_DIR}"
- if [ ! -d "${OBS_BUILD_DIR}/.git" ]; then
- /usr/bin/git clone --recursive https://github.com/obsproject/obs-studio "$(pwd)"
- /usr/bin/git fetch origin --tags
- /usr/bin/git checkout ${CHECKOUT_REF} -b obs-plugin-build
- else
- if ! /usr/bin/git show-ref --verify --quiet refs/heads/obs-plugin-build; then
- /usr/bin/git checkout ${CHECKOUT_REF} -b obs-plugin-build
- else
- /usr/bin/git checkout obs-plugin-build
- fi
- fi
- }
- install_dependencies() {
- status "Installing Homebrew dependencies"
- trap "caught_error 'install_dependencies'" ERR
- BUILD_DEPS=(
- "obs-deps ${MACOS_DEPS_VERSION:-${CI_DEPS_VERSION}} ${MACOS_DEPS_HASH:-${CI_DEPS_HASH}}"
- "qt-deps ${MACOS_DEPS_VERSION:-${CI_DEPS_VERSION}} ${QT_HASH:-${CI_QT_HASH}}"
- "obs-studio ${OBS_VERSION:-${CI_OBS_VERSION}}"
- )
- install_homebrew_deps
- for DEPENDENCY in "${BUILD_DEPS[@]}"; do
- set -- ${DEPENDENCY}
- trap "caught_error ${DEPENDENCY}" ERR
- FUNC_NAME="install_${1}"
- ${FUNC_NAME} ${2} ${3}
- done
- }
- install-dependencies-standalone() {
- CHECKOUT_DIR="$(/usr/bin/git rev-parse --show-toplevel)"
- if [ -f "${CHECKOUT_DIR}/CI/include/build_environment.sh" ]; then
- source "${CHECKOUT_DIR}/CI/include/build_environment.sh"
- fi
- PRODUCT_NAME="${PRODUCT_NAME:-obs-plugin}"
- DEPS_BUILD_DIR="${CHECKOUT_DIR}/../obs-build-dependencies"
- OBS_BUILD_DIR="${CHECKOUT_DIR}/../obs-studio"
- source "${CHECKOUT_DIR}/CI/include/build_support.sh"
- source "${CHECKOUT_DIR}/CI/include/build_support_macos.sh"
- status "Setting up plugin build dependencies"
- check_macos_version
- check_archs
- install_dependencies
- }
- print_usage() {
- echo -e "Usage: ${0}\n" \
- "-h, --help : Print this help\n" \
- "-q, --quiet : Suppress most build process output\n" \
- "-v, --verbose : Enable more verbose build process output\n" \
- "-a, --architecture : Specify build architecture (default: universal, alternative: x86_64, arm64)\n"
- }
- install-dependencies-main() {
- if [ -z "${_RUN_OBS_BUILD_SCRIPT}" ]; then
- while true; do
- case "${1}" in
- -h | --help ) print_usage; exit 0 ;;
- -q | --quiet ) export QUIET=TRUE; shift ;;
- -v | --verbose ) export VERBOSE=TRUE; shift ;;
- -a | --architecture ) ARCH="${2}"; shift 2 ;;
- -- ) shift; break ;;
- * ) break ;;
- esac
- done
- install-dependencies-standalone
- fi
- }
- install-dependencies-main $*
|