jobextra/obs-studio/PKGBUILD-aur.rc

176 lines
5.4 KiB
Plaintext

# Maintainer: tytan652 <tytan652 at tytanium dot xyz>
DISTRIB_ID=`lsb_release --id | cut -f2 -d$'\t'`
pkgname=obs-studio-rc
_pkgver=28.1.0-beta1
pkgver=${_pkgver//-/_}
pkgrel=1
epoch=3
pkgdesc="Beta cycle of the free and open source software for video recording and live streaming. With everything except service integration"
arch=("x86_64" "aarch64")
url="https://github.com/obsproject/obs-studio"
license=("GPL3")
_mbedtlsver=2.28
_pythonver=3.10
depends=(
"jack" "gtk-update-icon-cache" "x264" "rnnoise" "pciutils" "qt6-svg"
# "libxinerama" "provided by "vlc-luajit"
# "libxkbcommon-x11" provided by "qt6-base"
# "jansson" "curl" provided by "ftl-sdk"
# Needed to use Qt on Wayland platform
"qt6-wayland"
# Both needed to load linux-capture, so those two are no longer optional
"libxcomposite" "pipewire"
# Needed to use PipeWire capture
"xdg-desktop-portal"
# Needed by obs-browser
"libxss" "libxrandr" "nss" "at-spi2-core"
# AUR Packages
"ffmpeg-obs>=5" "vlc-luajit" "ftl-sdk"
)
# To manage mbedtls rebuild easily, this will prevent you to rebuild OBS on non-updated system
# For Manjaro user this feature is disabled
# Also OBS will need a patch when mbedtls 3 is on the repo
if [[ $DISTRIB_ID == 'ManjaroLinux' ]]; then
depends+=('mbedtls')
else
depends+=("mbedtls>=$_mbedtlsver")
fi
## About vlc-luajit
# The official VLC package will make OBS crash when a VLC source is used.
# The issue is that VLC and OBS are compiled with different lua version.
# So I also created vlc-luajit, a VLC package compiled with the same lua as OBS.
# But to make people unable to install VLC official package with obs-studio-tytan652.
# I decided to make vlc-luajit a dependency of OBS rather than an optional one.
## About ffmpeg-obs
# Read ffmpeg-obs PKGBUILD for more info
makedepends=(
"cmake" "git" "libfdk-aac" "swig" "luajit" "sndio" "lsb-release"
# Needed by obs-websocket
'asio' 'nlohmann-json' 'websocketpp'
# AUR Packages
"libajantv2"
)
# To manage python rebuild easily, this will prevent you to rebuild OBS on non-updated system
# For Manjaro user this feature is disabled
if [[ $DISTRIB_ID == 'ManjaroLinux' ]]; then
makedepends+=('python')
else
makedepends+=("python>=$_pythonver")
fi
optdepends=(
"libfdk-aac: FDK AAC codec support"
"intel-media-driver: Hardware encoding (>= Broadwell)"
"libva-intel-driver: Hardware encoding (<= Haswell)"
"libva-mesa-driver: Hardware encoding"
"swig: Scripting"
"luajit: Lua scripting"
"sndio: Sndio input client"
"v4l2loopback-dkms: Virtual camera output"
"libajantv2: AJA NTV 2 support"
)
# To manage python rebuild easily, this will prevent you to rebuild OBS on non-updated system
# For Manjaro user this feature is disabled
if [[ $DISTRIB_ID == 'ManjaroLinux' ]]; then
optdepends+=("python: Python scripting")
else
optdepends+=("python>=$_pythonver: Python scripting")
fi
provides=("obs-studio=$pkgver" "obs-vst" "obs-websocket")
conflicts=("obs-studio" "obs-vst" "obs-websocket")
options=('debug')
source=(
"obs-studio::git+https://github.com/obsproject/obs-studio.git#tag=$_pkgver"
"obs-browser::git+https://github.com/obsproject/obs-browser.git"
"obs-websocket::git+https://github.com/obsproject/obs-websocket.git"
"qr::git+https://github.com/nayuki/QR-Code-generator.git"
)
sha256sums=(
"SKIP"
"SKIP"
"SKIP"
"SKIP"
)
if [[ $DISTRIB_ID == 'ManjaroLinux' ]]; then
source+=(
"$pkgname.hook"
"$pkgname.sh"
)
sha256sums+=(
"2313f237e80b5160c5716e30cd7ac0a6a51c09a7ec83485ee33362de6e390009"
"72b6aca44bfdc854b68c101c3304b927fa2411d6c05567f07252b335617d917d"
)
fi
if [[ $CARCH == 'x86_64' ]]; then
optdepends+=("decklink: Blackmagic Design DeckLink support")
fi
if [[ $CARCH == 'x86_64' ]]; then
makedepends+=("cef-minimal-obs=103.0.0_5060_shared_textures_143.2591+g4204d54+chromium_103.0.5060.134_1")
provides+=("obs-browser")
conflicts+=("obs-linuxbrowser" "obs-browser")
_browser=ON
else
_browser=OFF
fi
prepare() {
cd "$srcdir/obs-studio"
git config submodule.plugins/obs-browser.url $srcdir/obs-browser
git config submodule.plugins/obs-websocket.url $srcdir/obs-websocket
git submodule update
cd plugins/obs-websocket
sed -i 's|EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/deps/json/CMakeLists.txt||' CMakeLists.txt
sed -i 's|AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/deps/websocketpp/CMakeLists.txt||' CMakeLists.txt
sed -i 's|AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/deps/asio/asio/include/asio.hpp||' CMakeLists.txt
sed -i "s|AND EXISTS|EXISTS|" CMakeLists.txt
sed -i "s|add_subdirectory(deps/json)|find_package(nlohmann_json 3.10.0 REQUIRED)|" CMakeLists.txt
git config submodule.deps/qr.url $srcdir/qr
git submodule update deps/qr
}
build() {
cd "$srcdir"/obs-studio
mkdir -p build; cd build
cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DENABLE_RTMPS=ON \
-DQT_VERSION=6 \
-DENABLE_LIBFDK=ON \
-DENABLE_JACK=ON \
-DENABLE_SNDIO=ON \
-DENABLE_BROWSER=$_browser \
-DCEF_ROOT_DIR=/opt/cef-obs \
-DBETA="$_pkgver" ..
sed -i "s|#define OBS_VERSION |#define OBS_VERSION \"$_pkgver-$pkgrel\" //|" config/obsconfig.h
make
}
package() {
cd obs-studio/build
make install DESTDIR="$pkgdir"
if [[ $DISTRIB_ID == 'ManjaroLinux' ]]; then
install -D -m644 "$srcdir/$pkgname.hook" -t "${pkgdir}"/usr/share/libalpm/hooks/
install -D -m755 "$srcdir/$pkgname.sh" -t "${pkgdir}"/usr/share/libalpm/scripts/
fi
}