2022-03-16 23:13:26 +01:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
# Linux dependency management function
|
|
|
|
##############################################################################
|
|
|
|
#
|
|
|
|
# This script file can be included in build scripts for Linux or run directly
|
|
|
|
# with the -s/--standalone switch
|
|
|
|
#
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
# Halt on errors
|
|
|
|
set -eE
|
|
|
|
|
|
|
|
install_build-deps() {
|
|
|
|
shift
|
|
|
|
status "Install OBS build dependencies"
|
|
|
|
trap "caught_error 'install_build-deps'" ERR
|
|
|
|
|
|
|
|
sudo apt-get install -y $@
|
|
|
|
}
|
|
|
|
|
|
|
|
install_obs-deps() {
|
|
|
|
shift
|
|
|
|
status "Install OBS dependencies"
|
|
|
|
trap "caught_error 'install_obs-deps'" ERR
|
|
|
|
|
|
|
|
if [ -z "${DISABLE_PIPEWIRE}" ]; then
|
|
|
|
sudo apt-get install -y $@ libpipewire-0.3-dev
|
|
|
|
else
|
|
|
|
sudo apt-get install -y $@
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2022-07-31 12:20:13 -04:00
|
|
|
install_qt5-deps() {
|
2022-03-16 23:13:26 +01:00
|
|
|
shift
|
2022-07-31 12:20:13 -04:00
|
|
|
status "Install Qt5 dependencies"
|
|
|
|
trap "caught_error 'install_qt5-deps'" ERR
|
2022-03-16 23:13:26 +01:00
|
|
|
|
|
|
|
sudo apt-get install -y $@
|
|
|
|
}
|
|
|
|
|
2022-07-31 12:20:13 -04:00
|
|
|
install_qt6-deps() {
|
|
|
|
shift
|
|
|
|
status "Install Qt6 dependencies"
|
|
|
|
trap "caught_error 'install_qt6-deps'" ERR
|
|
|
|
|
|
|
|
_QT6_AVAILABLE="$(sudo apt-cache madison ${1})"
|
|
|
|
if [ "${_QT6_AVAILABLE}" ]; then
|
|
|
|
sudo apt-get install -y $@
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2022-03-16 23:13:26 +01:00
|
|
|
install_cef() {
|
|
|
|
shift
|
|
|
|
status "Setup for dependency CEF v${1}"
|
|
|
|
ensure_dir "${DEPS_BUILD_DIR}"
|
|
|
|
|
|
|
|
if [ "${CI}" -a "${RESTORED_CEF}" ]; then
|
|
|
|
_SKIP=TRUE
|
|
|
|
elif [ -d "${DEPS_BUILD_DIR}/cef_binary_${1}_linux64" -a -f "${DEPS_BUILD_DIR}/cef_binary_${1}_linux64/build/libcef_dll_wrapper/libcef_dll_wrapper.a" ]; then
|
|
|
|
_SKIP=TRUE
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -z "${_SKIP}" ]; then
|
|
|
|
step "Download..."
|
|
|
|
${CURLCMD:-curl -O} https://cdn-fastly.obsproject.com/downloads/cef_binary_${1}_linux64.tar.bz2
|
|
|
|
step "Unpack..."
|
|
|
|
tar -xf cef_binary_${1}_linux64.tar.bz2
|
|
|
|
else
|
|
|
|
step "Found existing Chromium Embedded Framework and loader library..."
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
install_plugin-deps() {
|
|
|
|
shift
|
|
|
|
status "Install plugin dependencies"
|
|
|
|
trap "caught_error 'install_plugin-deps'" ERR
|
|
|
|
|
|
|
|
sudo apt-get install -y $@
|
|
|
|
}
|
|
|
|
|
|
|
|
install_dependencies() {
|
|
|
|
status "Set up apt"
|
|
|
|
trap "caught_error 'install_dependencies'" ERR
|
|
|
|
|
|
|
|
BUILD_DEPS=(
|
|
|
|
"build-deps cmake ninja-build pkg-config clang clang-format build-essential curl ccache"
|
|
|
|
"obs-deps libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libswresample-dev \
|
|
|
|
libswscale-dev libx264-dev libcurl4-openssl-dev libmbedtls-dev libgl1-mesa-dev libjansson-dev \
|
|
|
|
libluajit-5.1-dev python3-dev libx11-dev libxcb-randr0-dev libxcb-shm0-dev libxcb-xinerama0-dev \
|
2022-02-20 17:37:49 -08:00
|
|
|
libxcb-composite0-dev libxinerama-dev libxcb1-dev libx11-xcb-dev libxcb-xfixes0-dev swig libcmocka-dev \
|
2022-03-16 23:13:26 +01:00
|
|
|
libpci-dev libxss-dev libglvnd-dev libgles2-mesa libgles2-mesa-dev libwayland-dev libxkbcommon-dev"
|
2022-07-31 12:20:13 -04:00
|
|
|
"qt5-deps qtbase5-dev qtbase5-private-dev libqt5svg5-dev qtwayland5"
|
|
|
|
"qt6-deps qt6-base-dev qt6-base-private-dev libqt6svg6-dev qt6-wayland"
|
2022-03-16 23:13:26 +01:00
|
|
|
"cef ${LINUX_CEF_BUILD_VERSION:-${CI_LINUX_CEF_VERSION}}"
|
|
|
|
"plugin-deps libasound2-dev libfdk-aac-dev libfontconfig-dev libfreetype6-dev libjack-jackd2-dev \
|
|
|
|
libpulse-dev libsndio-dev libspeexdsp-dev libudev-dev libv4l-dev libva-dev libvlc-dev libdrm-dev"
|
|
|
|
)
|
|
|
|
|
|
|
|
sudo dpkg --add-architecture amd64
|
|
|
|
sudo apt-get -qq update
|
|
|
|
|
|
|
|
for DEPENDENCY in "${BUILD_DEPS[@]}"; do
|
|
|
|
set -- ${DEPENDENCY}
|
|
|
|
trap "caught_error ${DEPENDENCY}" ERR
|
|
|
|
FUNC_NAME="install_${1}"
|
|
|
|
${FUNC_NAME} ${@}
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
install-dependencies-standalone() {
|
|
|
|
CHECKOUT_DIR="$(/usr/bin/git rev-parse --show-toplevel)"
|
|
|
|
PRODUCT_NAME="OBS-Studio"
|
|
|
|
DEPS_BUILD_DIR="${CHECKOUT_DIR}/../obs-build-dependencies"
|
|
|
|
source "${CHECKOUT_DIR}/CI/include/build_support.sh"
|
|
|
|
source "${CHECKOUT_DIR}/CI/include/build_support_linux.sh"
|
|
|
|
|
|
|
|
status "Setup of OBS build dependencies"
|
|
|
|
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" \
|
|
|
|
"--disable-pipewire : Disable building with Pipewire support (default: off)\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 ;;
|
|
|
|
--disable-pipewire ) DISABLE_PIPEWIRE=TRUE; shift ;;
|
|
|
|
-- ) shift; break ;;
|
|
|
|
* ) break ;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
|
|
install-dependencies-standalone
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
install-dependencies-main $*
|