File obs-studio.spec of Package obs-studio (Revision 861e7abb978e61aa8c2a5ebde272e119)

Currently displaying revision 861e7abb978e61aa8c2a5ebde272e119 , Show latest

271
 
1
2
# Chromium Embedded Framework
3
%ifarch x86_64
4
%bcond_with cef
5
%define cef_binary cef_binary_5060_linux64
6
%else
7
%bcond_with cef
8
%endif
9
10
%bcond_without websockets
11
%bcond_with    split_obs_x264
12
13
# 31.0.0~beta1 wants at least 6.1 lets just use 7 straight away
14
# zypper info --provides $(zypper se -t package -s ffmpeg-7 | awk -F '|' '/devel/ {print $2}') | grep pkgconfig | perl -p -e 's|^\s+pkgconfig\(([^\)]+)\) = (\S+)|%%global minimum_$1_version $2|g'
15
%global minimum_libavcodec_version 61.19.100
16
%global minimum_libavdevice_version 61.3.100
17
%global minimum_libavfilter_version 10.4.100
18
%global minimum_libavformat_version 61.7.100
19
%global minimum_libavutil_version 59.39.100
20
%global minimum_libpostproc_version 58.3.100
21
%global minimum_libswresample_version 5.3.100
22
%global minimum_libswscale_version 8.3.100
23
24
%if 0%{?suse_version} && 0%{?suse_version} < 1600
25
%global force_gcc_version 13
26
%global python_version 311
27
%else
28
%global python_version 3
29
%endif
30
31
%if 0%{?suse_version} > 1500
32
%bcond_without nvenc
33
%else
34
%bcond_with    nvenc
35
%endif
36
37
Name:           obs-studio
38
Version:        31.0.3
39
Release:        0
40
Summary:        A recording/broadcasting program
41
Group:          Productivity/Multimedia/Video/Editors and Convertors
42
License:        GPL-2.0
43
URL:            https://obsproject.com/
44
# we fetch the tarball with a source service, because some subprojects are
45
# not included in the offical tarball (e.g. obs-browser)
46
Source:         %{name}-%{version}.tar.xz
47
%if %{with cef}
48
Source17:       %{cef_binary}.tar.bz2
49
%endif
50
Patch1:         0001-Prefix-modinfo-with-sbin-since-not-in-normal-path.patch
51
Patch2:         libx264-optional.patch
52
Patch3:         ffmpeg-x11-linking.patch
53
Patch4:         11906.patch
54
BuildRequires:  update-desktop-files
55
BuildRequires:  cmake >= 2.8.12
56
BuildRequires:  pkgconfig(fdk-aac)
57
BuildRequires:  fdupes
58
BuildRequires:  fontconfig-devel
59
BuildRequires:  freetype2-devel
60
BuildRequires:  gcc%{?force_gcc_version}
61
BuildRequires:  gcc%{?force_gcc_version}-c++
62
BuildRequires:  hicolor-icon-theme
63
BuildRequires:  libXcomposite-devel
64
BuildRequires:  libXinerama-devel
65
BuildRequires:  libXrandr-devel
66
BuildRequires:  libcurl-devel
67
BuildRequires:  libjansson-devel
68
BuildRequires:  pciutils-devel
69
BuildRequires:  pipewire-devel
70
BuildRequires:  libpulse-devel
71
BuildRequires:  cmake(Qt6Core)
72
BuildRequires:  cmake(Qt6Svg)
73
BuildRequires:  qt6-base-private-devel
74
BuildRequires:  libudev-devel
75
BuildRequires:  libv4l-devel
76
%if %{without split_obs_x264}
77
BuildRequires:  libx264-devel
78
%endif
79
BuildRequires:  mbedtls-devel
80
BuildRequires:  pipewire-devel
81
BuildRequires:  pkgconfig
82
BuildRequires:  pkgconfig(alsa)
83
BuildRequires:  pkgconfig(jack)
84
BuildRequires:  pkgconfig(libavcodec)  >= %{minimum_libavcodec_version}
85
BuildRequires:  pkgconfig(libavdevice) >= %{minimum_libavdevice_version}
86
BuildRequires:  pkgconfig(libavfilter) >= %{minimum_libavfilter_version}
87
BuildRequires:  pkgconfig(libavformat) >= %{minimum_libavformat_version}
88
BuildRequires:  pkgconfig(libavutil)   >= %{minimum_libavutil_version}
89
%ifarch %{ix86} x86_64
90
# comment out until resolved: nothing provides pkgconfig(libmfx)
91
# BuildRequires:  pkgconfig(libmfx)
92
%endif
93
BuildRequires:  pkgconfig(librist)
94
BuildRequires:  pkgconfig(libswresample) >= %{minimum_libswresample_version}
95
BuildRequires:  pkgconfig(libswscale)    >= %{minimum_libswscale_version}
96
BuildRequires:  pkgconfig(libva)
97
BuildRequires:  pkgconfig(lua)
98
BuildRequires:  pkgconfig(luajit)
99
BuildRequires:  pkgconfig(srt) >= 1.4
100
BuildRequires:  pkgconfig(uuid)
101
BuildRequires:  pkgconfig(rnnoise)
102
%if %{with nvenc}
103
BuildRequires:  pkgconfig(ffnvcodec) >= 12.1.14.0
104
%endif
105
BuildRequires:  pkgconfig(vpl)
106
BuildRequires:  libdatachannel-devel
107
BuildRequires:  pkgconfig(nlohmann_json) >= 3
108
%if %{with websockets}
109
BuildRequires:  pkgconfig(websocketpp) >= 0.8.0
110
BuildRequires:  pkgconfig(asio) >= 1.12.1
111
BuildRequires:  pkgconfig(qrcodegencpp)
112
%endif
113
BuildRequires:  python%{python_version}-devel >= 3.8
114
%if 0%{?suse_version} != 1315 || 0%{?is_opensuse}
115
BuildRequires:  speexdsp-devel
116
%endif
117
BuildRequires:  sndio-devel
118
BuildRequires:  swig
119
BuildRequires:  uthash-devel
120
BuildRequires:  vlc-devel
121
%if %{with cef}
122
BuildRequires:  mozilla-nss
123
BuildRequires:  mozilla-nspr
124
%endif
125
# these deps couldn't be tracked
126
Requires:       librist4
127
Requires:       libsrt1_5
128
Requires:       libspeexdsp1
129
Recommends:     qt6-wayland
130
ExclusiveArch:  x86_64 aarch64
131
132
Recommends:     obs-studio-x264
133
134
# these are plugins, built as libs and as such should not be mixed up with their originals
135
%global __provides_exclude_from ^(%{_libdir}/obs-plugins/.*\\.so.*|%{_libdir}/obs-scripting/.*\\.so.*)$
136
%global __requires_exclude libcef\\.so
137
138
%description
139
Open Broadcaster Software is free and open source software for video recording and live streaming.
140
141
%if %{with split_obs_x264}
142
%package x264
143
Summary:        libx264 support for obs-studio
144
#
145
Requires:       obs-studio = %{version}-%{release}
146
%description x264
147
Open Broadcaster Software is free and open source software for video recording and live streaming.
148
149
This package holds the obs-x264 plugin for obs-studio
150
%endif
151
152
%package devel
153
Summary:        A recording/broadcasting program - Development Files
154
Group:          Development/Multimedia
155
Requires:       %{name} = %{version}
156
157
%description devel
158
Open Broadcaster Software is free and open source software for video recording and live streaming.
159
160
%prep
161
%autosetup -p1
162
%if %{with cef}
163
tar xvf %{SOURCE17} -C %{_builddir}
164
%endif
165
166
%build
167
%if 0%{?force_gcc_version}
168
export CC="gcc-%{?force_gcc_version}"
169
export CXX="g++-%{?force_gcc_version}"
170
%endif
171
172
mkdir -p build && cd build
173
# does not like cmake macro as it fails to link in math.h (-lma
174
# the compile flags must be relaxed in order to compile obs-studio successfully
175
export CFLAGS="%{optflags} -Wno-error=type-limits -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-error=return-type -Wno-error=unused-but-set-variable -Wno-error=pointer-sign -Wno-error=reorder -Wno-error=switch -Wno-error=catch-value="
176
export CXXFLAGS="%{optflags} -Wno-error=type-limits -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-error=return-type -Wno-error=unused-but-set-variable -Wno-error=pointer-sign -Wno-error=reorder -Wno-error=switch -Wno-error=catch-value="
177
178
cmake \
179
  -DCMAKE_CXX_STANDARD=17 \
180
  -DCMAKE_INSTALL_PREFIX=/usr \
181
  -DCMAKE_C_FLAGS:STRING="$CFLAGS" \
182
  -DCMAKE_CXX_FLAGS:STRING="$CXXFLAGS" \
183
  -DUNIX_STRUCTURE=1 \
184
%if "%{_lib}" == "lib64"
185
  -DOBS_MULTIARCH_SUFFIX=64 \
186
%endif
187
  -DOBS_VERSION_OVERRIDE="$(echo "%{version}" | grep -oE "^[^+]+")" \
188
  -DENABLE_AJA=OFF \
189
%if %{with nvenc}
190
  -DENABLE_NVENC=ON \
191
%else
192
  -DENABLE_NVENC=OFF \
193
%endif
194
%if 0%{?sle_version} > 150000 && 0%{?sle_version} < 150500 && 0%{?is_opensuse}
195
  -DENABLE_PIPEWIRE=OFF \
196
%endif
197
  -DENABLE_JACK=ON \
198
  -DENABLE_LIBFDK=ON \
199
  -DENABLE_SNDIO=ON \
200
%if %{with websockets}
201
  -DENABLE_WEBSOCKET=ON \
202
%else
203
  -DENABLE_WEBSOCKET=OFF \
204
%endif
205
%if %{with cef}
206
  -DBUILD_BROWSER=ON \
207
  -DCEF_ROOT_DIR="%{_builddir}/%{cef_binary}" \
208
%else
209
  -DBUILD_BROWSER=OFF \
210
%endif
211
  ..
212
213
%cmake_build
214
215
%install
216
%cmake_install
217
%suse_update_desktop_file com.obsproject.Studio
218
%fdupes %{buildroot}%{_datadir}/obs/
219
220
%post
221
/sbin/ldconfig
222
%icon_theme_cache_postun
223
224
%postun
225
/sbin/ldconfig
226
%icon_theme_cache_postun
227
228
%files
229
%{_bindir}/obs
230
%{_bindir}/obs-ffmpeg-mux
231
%if %{with nvenc}
232
%{_bindir}/obs-nvenc-test
233
%endif
234
# Upstream forces libs dir regardless of arch and building plugins is encumbered
235
# by moving them to the proper directory.
236
%{_libdir}/obs-plugins/
237
%if %{with split_obs_x264}
238
%exclude %{_libdir}/obs-plugins/obs-x264.so
239
%endif
240
%{_libdir}/libobs.so.*
241
%{_libdir}/libobs-frontend-api.so.*
242
%{_libdir}/libobs-opengl.so.*
243
%{_libdir}/libobs-scripting.so.*
244
%{_libdir}/obs-scripting/
245
%dir %{_datadir}/metainfo
246
%{_datadir}/metainfo/com.obsproject.Studio.metainfo.xml
247
%{_datadir}/applications/com.obsproject.Studio.desktop
248
%{_datadir}/icons/hicolor
249
%{_datadir}/obs/
250
%if %{with split_obs_x264}
251
%exclude %{_datadir}/obs/obs-x264/
252
%endif
253
254
%if %{with split_obs_x264}
255
%files x264
256
%{_libdir}/obs-plugins/obs-x264.so
257
%{_datadir}/obs/obs-x264/
258
%endif
259
260
%files devel
261
%{_libdir}/libobs.so
262
%{_libdir}/libobs-frontend-api.so
263
%{_libdir}/libobs-opengl.so
264
%{_libdir}/libobs-scripting.so
265
%{_libdir}/cmake
266
%{_libdir}/pkgconfig/libobs.pc
267
%{_includedir}/obs
268
%{_libdir}/pkgconfig/obs-frontend-api.pc
269
270
%changelog
271