Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:mareksapota
obs-studio
obs-studio.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File obs-studio.spec of Package obs-studio
# # spec file for package obs-studio # # Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # %define libdatachannel_src libdatachannel-0.20.2 # Using a current snapshot because releases are 2yr old. %define QR_Code_generator_src QR-Code-generator-99f057910d0146ff1de07ad65a15ebb5ce527397 %define install_dir %{buildroot}/opt/obs-studio/ Name: obs-studio Version: 30.1.2 Release: 0 Summary: Free and open source software for live streaming and screen recording License: GPL-2.0-or-later URL: https://obsproject.com/ Source0: %{name}-%{version}.tar.zst Source1: %{libdatachannel_src}.tar.zst Source2: %{QR_Code_generator_src}.tar.zst Source3: obs-studio-bin.sh Source4: %{name}.rpmlintrc # Makes x264 optional for building and allows running OBS without libx264 present. Patch1: obs-studio-disable-x264.patch # Needed for unpacking sources BuildRequires: zstd BuildRequires: cmake # git needed during build, see https://github.com/obsproject/obs-studio/issues/7705 BuildRequires: git BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: swig BuildRequires: ffmpeg-6-libavcodec-devel BuildRequires: ffmpeg-6-libavdevice-devel BuildRequires: ffmpeg-6-libavformat-devel BuildRequires: qt6-base-devel BuildRequires: qt6-svg-devel BuildRequires: qt6-gui-private-devel BuildRequires: mbedtls-devel BuildRequires: libXss-devel BuildRequires: Mesa-devel BuildRequires: pipewire-devel BuildRequires: vlc-devel BuildRequires: pciutils-devel BuildRequires: pkgconfig(libcurl) BuildRequires: pkgconfig(jansson) BuildRequires: pkgconfig(libpulse) BuildRequires: pkgconfig(speexdsp) BuildRequires: pkgconfig(libudev) BuildRequires: pkgconfig(libv4l2) BuildRequires: pkgconfig(xcomposite) BuildRequires: pkgconfig(xinerama) BuildRequires: pkgconfig(xrandr) BuildRequires: pkgconfig(luajit) BuildRequires: pkgconfig(python3) BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(fontconfig) BuildRequires: pkgconfig(alsa) BuildRequires: pkgconfig(jack) BuildRequires: pkgconfig(vpl) BuildRequires: pkgconfig(libva) BuildRequires: pkgconfig(nlohmann_json) BuildRequires: pkgconfig(librist) BuildRequires: pkgconfig(srt) BuildRequires: pkgconfig(uuid) BuildRequires: pkgconfig(websocketpp) BuildRequires: pkgconfig(asio) # Dependency for bundled libdatachannel BuildRequires: pkgconfig(gnutls) # Needed to fix dynamic linking on obs-websocket BuildRequires: patchelf # Needed to replace duplicate files with soft/hard links BuildRequires: fdupes # Needed to properly install desktop file BuildRequires: update-desktop-files %description OBS Studio is software designed for capturing, compositing, encoding, recording, and streaming video content, efficiently. %package devel Summary: Development files for obs-studio Requires: %{name} = %{version} %description devel OBS Studio is software designed for capturing, compositing, encoding, recording, and streaming video content, efficiently. Development files. %prep %setup -q -a1 -a2 # Remove version from directory names mv '%{libdatachannel_src}' libdatachannel mv '%{QR_Code_generator_src}' QR-Code-generator %autopatch -p1 %build # Build libdatachannel, not available in Tumbleweed cmake -S libdatachannel/ -B libdatachannel/build/ \ -DUSE_GNUTLS=1 \ -DUSE_MBEDTLS=0 \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=libdatachannel/install-prefix/ make -C libdatachannel/build/ %{?_smp_mflags} make -C libdatachannel/build/ install # Build libqrcodegencpp. libqrcodegencpp1 is in Tumbleweed but without the # -devel version that is needed here. env CXXFLAGS='-fPIC' make -C QR-Code-generator/cpp/ qrcodegen.o # Makefile doesn't have an option to build a shared library, build one manually. gcc -shared -o QR-Code-generator/cpp/libqrcodegencpp.so QR-Code-generator/cpp/qrcodegen.o # Build obs-studio # cmake can't find luajit on its own and needs to be fed the includedir. cmake -B build/ \ -DCMAKE_INSTALL_PREFIX=%{install_dir} \ -DCMAKE_BUILD_TYPE=Release \ -DLINUX_PORTABLE=ON \ -DBUILD_BROWSER=OFF \ -DENABLE_AJA=OFF \ -DENABLE_X264=OFF \ -DENABLE_JACK=ON \ -DLUAJIT_INCLUDE_DIR="$(pkg-config --variable=includedir luajit)" \ -DLibDataChannel_ROOT=libdatachannel/install-prefix/ \ -DOBS_VERSION_OVERRIDE=%{version} \ -Dqrcodegencpp_INCLUDE_DIR=QR-Code-generator/cpp/ \ -Dqrcodegencpp_LIBRARY=QR-Code-generator/cpp/libqrcodegencpp.so make -C build/ %{?_smp_mflags} %install make -C build/ install # Copy the bundled shared libraries into the plugin directory so obs-studio can # find them during runtime. cp libdatachannel/install-prefix/lib64/libdatachannel.so* %{install_dir}/obs-plugins/64bit/ cp QR-Code-generator/cpp/libqrcodegencpp.so %{install_dir}/obs-plugins/64bit/ # Replace absolute shared library import path with a searchable one. patchelf --replace-needed "$(pwd)/QR-Code-generator/cpp/libqrcodegencpp.so" \ libqrcodegencpp.so \ %{install_dir}/obs-plugins/64bit/obs-websocket.so # Replace duplicate files with soft/hard links, makes rpmlint happy # shared libraries, .so %fdupes -s %{install_dir}/obs-plugins/ # svg and png %fdupes %{install_dir}/data/obs-studio/themes/ # cmake files %fdupes %{install_dir}/cmake/ # locales %fdupes -s %{install_dir}/data/obs-plugins/ # Strip debugging symbols from binaries and libraries find %{install_dir} -name '*.so*' -exec strip '{}' \; strip %{install_dir}/bin/64bit/obs strip %{install_dir}/bin/64bit/obs-ffmpeg-mux # Fix pkgconfig paths, remove the RPM install prefix. sed -i -e 's:%{buildroot}::' %{install_dir}/lib64/pkgconfig/libobs.pc # obs-studio uses paths relative to the CWD when executed. A script is needed # to change CWD to the obs-studio bin directory before executing obs-studio. %{__install} -D -m0755 %{S:3} %{buildroot}%{_bindir}/obs-studio # Rename the .desktop file to avoid conflicts with Flatpak installed versions. %{__install} -D -m0644 \ UI/xdg-data/com.obsproject.Studio.desktop \ %{buildroot}/usr/share/applications/com.obsproject.obs-studio.desktop sed -i -e 's:Exec=obs:Exec=obs-studio:' \ %{buildroot}/usr/share/applications/com.obsproject.obs-studio.desktop %suse_update_desktop_file com.obsproject.obs-studio %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files %license COPYING COMMITMENT %doc README.rst CONTRIBUTING.rst COC.rst AUTHORS %dir /opt/obs-studio/ /opt/obs-studio/bin/ /opt/obs-studio/data/ /opt/obs-studio/obs-plugins/ %{_bindir}/obs-studio /usr/share/applications/com.obsproject.obs-studio.desktop %files devel /opt/obs-studio/cmake/ /opt/obs-studio/include/ /opt/obs-studio/lib64/ %changelog
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor