summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: bef5ad4b9500820e0002545c73f28a414e4b09c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# Maintainer: tytan652 <tytan652 at tytanium dot xyz>

# NOTE: If the CEF version (for the browser source) is not available in your architecture, OBS will be built without it.

pkgname=obs-studio-tytan652
# Use same CEF as obs project PPA
_cefver=76.1.13+gf19c584+chromium-76.0.3809.132
#_cefver=87.1.14+ga29e9a3+chromium-87.0.4280.141
pkgver=26.1.2
pkgrel=8
pkgdesc="Free and open source software for video recording and live streaming. With Browser dock and sources, VST 2 filter, FTL protocol, working VLC sources and my bind interface PR."
arch=("i686" "x86_64")
url="https://github.com/obsproject/obs-studio"
license=("GPL2")
depends=("ffmpeg" "jansson" "libxinerama" "libxkbcommon-x11" "mbedtls"
         "qt5-svg" "curl" "jack" "gtk-update-icon-cache"
         
         "qt5-x11extras"
         
         # AUR Packages
         "vlc-luajit" "ftl-sdk")
# 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.
makedepends=("cmake" "git" "libfdk-aac" "libxcomposite" "x264"
             "swig" "luajit" "python")
optdepends=(
            "libfdk-aac: FDK AAC codec support"
            "libxcomposite: XComposite capture support"
            "libva-intel-driver: hardware encoding"
            "libva-mesa-driver: hardware encoding"
            "swig: Scripting"
            "luajit: Lua scripting"
            "python: scripting support"
            "v4l2loopback-dkms: Virtual camera output"
)
provides=("obs-studio=$pkgver")
conflicts=("obs-studio" "obs-linuxbrowser")
source=(
        "obs-studio::git+https://github.com/obsproject/obs-studio.git#tag=$pkgver"
        "python_fix.patch" # https://patch-diff.githubusercontent.com/raw/obsproject/obs-studio/pull/3335.patch
        "use_system_ftl-sdk.patch" # https://patch-diff.githubusercontent.com/raw/obsproject/obs-studio/pull/4018.patch
        "bind_iface.patch" # https://patch-diff.githubusercontent.com/raw/obsproject/obs-studio/pull/4219.patch
        "obs-browser::git+https://github.com/obsproject/obs-browser.git"
        "obs-vst::git+https://github.com/obsproject/obs-vst.git#commit=cca219fa3613dbc65de676ab7ba29e76865fa6f8"
)
source_x86_64=("https://cef-builds.spotifycdn.com/cef_binary_${_cefver}_linux64_minimal.tar.bz2")
source_i686=("https://cef-builds.spotifycdn.com/cef_binary_${_cefver}_linux32_minimal.tar.bz2")
#source_aarch64=("https://cef-builds.spotifycdn.com/cef_binary_${_cefver}_linuxarm64_minimal.tar.bz2") will be available for OBS 27
sha256sums=(
        "SKIP"
        "430d7d0a7e1006c1f6309ad7d4912033dadd542b641f9d41259a5bad568379c9"
        "c19c48fa8cc2821281ae452acc19c3003010224ecf2f2080991a5398bac4ec2e"
        "109ffd8702b7b3973f4167f8821196b304df268205bf19e277281e65a0448182"
        "SKIP"
        "SKIP"
)
sha256sums_x86_64=("6b0dfa8ddafcec822fcd20018cf081959ffa6d0565be3793da1f596ac0733c38")
#sha256sums_x86_64=("")
sha256sums_i686=("baa0624e2d6b86a60d18117cb65e125f882ef66cf413cd7ac63a480d904004f0")
#sha256sums_i686=("")
#sha256sums_aarch64=("")

if [[ $CARCH == 'x86_64' ]]; then
  CEF=ON
  CEF_ARCH=64
elif [[ $CARCH == 'i686' ]]; then
  CEF=ON
  CEF_ARCH=32
#elif [[ $CARCH == 'aarch64' ]]; then
#  CEF=ON
#  CEF_ARCH=arm64
else
  CEF=OFF
fi

prepare() {
  # Build CEF wrapper
  cd "$srcdir/cef_binary_${_cefver}_linux${CEF_ARCH}_minimal"

  sed -i 's/-Werror/#-Werror/g' cmake/cef_variables.cmake
  cmake .
  make libcef_dll_wrapper

  cd "$srcdir/obs-studio"
  #git config submodule.plugins/obs-vst.url $srcdir/obs-vst
  git config submodule.plugins/obs-browser.url $srcdir/obs-browser
  git submodule update

  # libobs/util: Fix loading Python binary modules on *nix (https://github.com/obsproject/obs-studio/pull/3335)
  patch -Np1 < "$srcdir/python_fix.patch"
  # obs-outputs: Use system-wide FTL-SDK if present (https://github.com/obsproject/obs-studio/pull/4018)
  patch -Np1 < "$srcdir/use_system_ftl-sdk.patch"
  # Add network interface binding for RTMP on Linux (https://github.com/obsproject/obs-studio/pull/4219)
  patch -Np1 < "$srcdir/bind_iface.patch"

  cd plugins
  # Replace obs-vst submodule by the repo with same last commit. Will be reverted when 27 is out.
  rm -rf obs-vst
  cp -r $srcdir/obs-vst obs-vst

  cd obs-vst
  # obs-vst: fix memory leak
  git cherry-pick -n 944c1c962748ee48ab0eca24bacc5354c169eb60
  # obs-vst: Fix VST_PATH use under Linux
  git cherry-pick -n f34327d98c0a54a6da29d37f0b8db790b6adbe4e
}

build() {
  cd obs-studio

  mkdir -p build; cd build

  cmake \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_INSTALL_LIBDIR=lib \
    -DBUILD_BROWSER=$CEF \
    -DCEF_ROOT_DIR="$srcdir/cef_binary_${_cefver}_linux${CEF_ARCH}_minimal" \
    -DOBS_VERSION_OVERRIDE=$pkgver ..

  make
}

package() {
  cd obs-studio/build

  make install DESTDIR="$pkgdir"
}

# vim: ts=2:sw=2:expandtab