File mediastreamer2.spec of Package mediastreamer2
%define sobase libmediastreamer2
#%%define sover 11
%define sover %{nil}
%define enable_tests 0
Name: mediastreamer2
Version: 5.3.1
# Fedora release look standard from OpenSUSE build service:
# Release: <CI_CNT>.<B_CNT>
# Release: %%{?release_prefix}.<CI_CNT>.<B_CNT>
# where rpm macro %%{release_prefix} is defined in spec file
# Normally it looks like:
# Release: 63.fc38 for Fedora packages which is scripted as:
# Release: 0%%{?dist}
# OpenSUSE build service allows for this variant:
# Release: 63.1.fc38
# Release: <CI_CNT>.<B_CNT>%%{?dist}
#
# Add this to Project Config to tag Fedora packages with fcXX:
# ------------------------------
# # reset release name
# onepercentage%%if 0onepercentage%%{?fedora_version}
# Release: <CI_CNT>.<B_CNT> spec:<CI_CNT>.<B_CNT>twopercentage%%{?dist}
# onepercentage%%endif
# ------------------------------
Release: 0
Summary: Audio/Video real-time streaming
License: GPL-3.0-or-later
Group: Productivity/Telephony/Utilities
URL: https://linphone.org/technical-corner/mediastreamer2
Source: https://gitlab.linphone.org/BC/public/mediastreamer2/-/archive/%{version}/%{name}-%{version}.tar.bz2
#Patch0: mediastreamer2-00-fix-pkgconfig.patch
#Patch1: fix-srtp2-linphone.patch
#Patch2: fix-build-ffmpeg5.patch
#Patch2: mediastreamer2-01-fix-build-ffmpeg5.patch
#BuildRequires: bcmatroska2-devel >= 0.23.1
BuildRequires: bcmatroska2-devel >= 5.3.5
BuildRequires: broadvoice16-devel
BuildRequires: cmake
BuildRequires: doxygen
BuildRequires: gawk
BuildRequires: gcc-c++
BuildRequires: graphviz
BuildRequires: libyuv-devel
# Source code incompatible with system package:
# BuildRequires: zxing-cpp-devel
%if 0%{?suse_version}
BuildRequires: libgsm-devel
%else
BuildRequires: gsm-devel
%endif
BuildRequires: libjpeg-turbo >= 2.0.0
%if 0%{?fedora}
BuildRequires: turbojpeg-devel
BuildRequires: libsrtp-devel
%else
BuildRequires: libsrtp2-devel
#BuildRequires: libsrtp2-linphone-devel
%endif
BuildRequires: libpcap-devel
#%%if 0%%{?suse_version}
#BuildRequires: libsrtp2-devel
#%%else
#BuildRequires: libsrtp-devel
#%%endif
BuildRequires: libv4l-devel
BuildRequires: libvpx-devel
BuildRequires: libxml2-devel
BuildRequires: pkgconfig
BuildRequires: spandsp-devel
%if 0%{?suse_version}
BuildRequires: sqlite3-devel
%else
BuildRequires: libsqlite3x-devel
%endif
#BuildRequires: pkgconfig(Qt5Core) >= 5.12
BuildRequires: pkgconfig(Qt6Core)
#BuildRequires: pkgconfig(Qt5Gui)
BuildRequires: pkgconfig(Qt6Gui)
#BuildRequires: pkgconfig(Qt5Quick)
BuildRequires: pkgconfig(Qt6Quick)
BuildRequires: vim
BuildRequires: pkgconfig(alsa)
BuildRequires: bctoolbox-devel >= 5.3.5
BuildRequires: pkgconfig(bctoolbox) >= 5.3.0
BuildRequires: bcg729-devel >= 1.1.1
BuildRequires: pkgconfig(libbcg729)
BuildRequires: bzrtp-devel >= 5.3.5
#BuildRequires: pkgconfig(libbzrtp) >= 5.3.0
#%%if 0%%{?suse_version}
#BuildRequires: libpostquantumcryptoengine-devel >= 5.2.0
#BuildRequires: liboqs-devel => 0.7.1
#%%endif
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libupnp)
BuildRequires: pkgconfig(opus)
BuildRequires: ortp-devel >= 5.3.5
#BuildRequires: pkgconfig(ortp) >= 5.3.0
BuildRequires: pkgconfig(speex)
BuildRequires: pkgconfig(speexdsp)
BuildRequires: pkgconfig(theora)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(xv)
BuildRequires: libaom-devel
BuildRequires: pkgconfig(aom)
%if 0%{?suse_version} >= 1500
BuildRequires: libjpeg-devel >= 8.2.0
BuildRequires: dav1d-devel
%endif
%if 0%{?fedora_version}
BuildRequires: libdav1d-devel
%endif
BuildRequires: pkgconfig(dav1d)
BuildRequires: chrpath
BuildRequires: pkgconfig(glew)
BuildRequires: pkgconfig(glu)
#BuildRequires: pkgconfig(libavcodec) >= 51.0.0
#BuildRequires: pkgconfig(libswscale) >= 0.7.0
%description
Mediastreamer2 is a library to make audio and video real-time
streaming and processing. It is written in pure C and based upon the
oRTP library.
%package -n %{name}-plugins
Summary: Mediastreamer2 plugins
Group: System/Libraries
Provides: %{name}-plugins = %{version}
%description -n %{name}-plugins
Mediastreamer2 plugins
- libmsqogl.so (Qt GL video plugin)
%package -n %{sobase}%{sover}
Summary: Audio/video real-time streaming library, base part
Group: System/Libraries
%description -n %{sobase}%{sover}
Mediastreamer2 is a library to make audio and video real-time
streaming and processing. It is written in pure C and based upon the
oRTP library.
%package doc
BuildArch: noarch
Summary: Documentation for the mediastreamer2 library
Group: Documentation/HTML
Requires: %{name} = %{version}
%description doc
Mediastreamer2 is a library to make audio and video real-time
streaming and processing. It is written in pure C and based upon the
oRTP library.
This package contains documentation files
%package devel
Summary: Headers and libraries for the mediastreamer2 library
Group: Development/Libraries/C and C++
Requires: %{name} = %{version}
Requires: %{sobase}%{sover} = %{version}
Requires: bcmatroska2-devel
#%%if 0%%{?suse_version}
#Requires: libpostquantumcryptoengine-devel >= 5.2.0
#Requires: liboqs-devel => 0.7.1
#%%endif
%description devel
Mediastreamer2 is a library to make audio and video real-time
streaming and processing. It is written in pure C and based upon the
oRTP library.
This package contains header files and development libraries needed to
develop programs using the mediastreamer2 library.
%prep
%autosetup -N
#%%if 0%{?fedora} > 1
#%%patchN is deprecated (1 usages found), use %%patch N (or %%patch -P N)
#%%patch 0 -p1
#%%else
#%%patch 0 -p1
#%%endif
#%%patch1 -p1
#%%if 0%%{?suse_version} || 0%%{?fedora_version} < 36
# Patch to allow ffmpeg 5:
# No longer needed due to use of libaom
#if pkg-config --atleast-version 59.37.100 libavcodec; then
#%%patch 1 -p1
#fi
#%%else
#%%if 0%%{?fedora} > 1
#%%patch 1 -p1
#%%else
#%%patch 1 -p1
#%%endif
#%%endif
%build
#
# Zxing/ZXing fix (but source code incompatible with system package zxing:
#
# echo "Replace FindZxing.cmake so Zxing can be found"
# Method 1:
# find /home/abuild/rpmbuild/BUILD/%%{name}-%%{version}/cmake -name FindZxing.cmake -delete
# ls -al /home/abuild/rpmbuild/BUILD/%%{name}-%%{version}/cmake
# Method 2:
# cp -v /home/abuild/rpmbuild/SOURCES/FindZXing.cmake /home/abuild/rpmbuild/BUILD/%%{name}-%%{version}/cmake/FindZXing.cmake
# cp -v /home/abuild/rpmbuild/SOURCES/FindZXing.cmake /home/abuild/rpmbuild/BUILD/%%{name}-%%{version}/cmake/FindZxing.cmake
# Method 1 (continued):
# cp -v /home/abuild/rpmbuild/SOURCES/FindZXing.cmake /home/abuild/rpmbuild/SOURCES/FindZxing.cmake
# echo "Rename Zxing to ZXing in CMakeLists.txt"
# sed -i 's/Zxing/ZXing/g' /home/abuild/rpmbuild/BUILD/%%{name}-%%{version}/CMakeLists.txt
# echo "/home/abuild/rpmbuild/BUILD/%%{name}-%%{version}/CMakeLists.txt"
# echo "-----------------------------------"
# cat /home/abuild/rpmbuild/BUILD/%%{name}-%%{version}/CMakeLists.txt
# echo "-----------------------------------"
# ls -al /home/abuild/rpmbuild/SOURCES
#
#
export CFLAGS="%(echo %{optflags}) -fcommon -Wno-implicit-function-declaration"
export CXXFLAGS="$CFLAGS"
%cmake \
-DCMAKE_MODULE_PATH="/home/abuild/rpmbuild/SOURCES" \
-DCMAKE_SHARED_LINKER_FLAGS="-flto=auto -Wl,--as-needed -Wl,-z,now" \
-DCMAKE_INSTALL_PREFIX=/usr \
%if 0%{?fedora}
-DCMAKE_INSTALL_LIBDIR=lib64 \
%endif
%if %{enable_tests} == 0
-DENABLE_TOOLS=OFF \
-DENABLE_UNIT_TESTS=OFF \
%endif
-DENABLE_STATIC=OFF \
-DENABLE_QT_GL=YES \
-DENABLE_FFMPEG=OFF \
-DENABLE_STRICT=OFF
%cmake_build
%install
%if 0%{?fedora} > 0
rm -f $HOME/.rpmmacros
#export QA_RPATHS=$(( 0x0001|0x0002 ))
export QA_RPATHS=$(( 0x0001|0x0002|0x0010 ))
%endif
%cmake_install
mkdir -p %{buildroot}%{_docdir}/%{name}/
mv -T %{buildroot}%{_datadir}/doc/%{name}-5.4.0/ \
%{buildroot}%{_docdir}/%{name}/
%if %{enable_tests}
chrpath -d %{buildroot}%{_bindir}/mediastreamer2-mediastream
chrpath -d %{buildroot}%{_bindir}/mediastreamer2-mkvstream
chrpath -d %{buildroot}%{_bindir}/mediastreamer2-tester
%endif
#chrpath -d %%{buildroot}%%{_libdir}/%%{sobase}.so.%%{sover}*
chrpath -d %{buildroot}%{_libdir}/libmediastreamer2.so
%post -n %{sobase}%{sover} -p /sbin/ldconfig
%postun -n %{sobase}%{sover} -p /sbin/ldconfig
%files
%license LICENSE.txt
%if %{enable_tests}
%{_bindir}/mediastreamer2-mediastream
%{_bindir}/mediastreamer2-mkvstream
%endif
%files -n %{sobase}%{sover}
#%%{_libdir}/%%{sobase}.so.%%{sover}*
%{_libdir}/%{sobase}.so
%files doc
%doc README.md
%dir %{_docdir}/%{name}/
%doc %{_docdir}/%{name}/*
%files -n %{name}-plugins
%dir %{_libdir}/mediastreamer/plugins
%dir %{_libdir}/mediastreamer
%dir %{_datadir}/images/
%{_libdir}/mediastreamer/plugins/libmsqogl.so
%{_datadir}/images/nowebcamCIF.jpg
%files devel
%dir %{_includedir}/OpenGL
%dir %{_includedir}/OpenGL/EGL
%dir %{_includedir}/OpenGL/GLES2
%dir %{_includedir}/OpenGL/GLES3
%dir %{_includedir}/OpenGL/KHR
%{_includedir}/mediastreamer2/
%{_includedir}/OpenGL/EGL/egl.h
%{_includedir}/OpenGL/EGL/eglext.h
%{_includedir}/OpenGL/EGL/eglplatform.h
%{_includedir}/OpenGL/GLES2/gl2.h
%{_includedir}/OpenGL/GLES2/gl2ext.h
%{_includedir}/OpenGL/GLES2/gl2platform.h
%{_includedir}/OpenGL/GLES3/gl3.h
%{_includedir}/OpenGL/GLES3/gl31.h
%{_includedir}/OpenGL/GLES3/gl32.h
%{_includedir}/OpenGL/GLES3/gl3platform.h
%{_includedir}/OpenGL/KHR/khrplatform.h
%{_includedir}/OpenGL/LICENSE
%{_includedir}/OpenGL/README.md
%{_includedir}/OpenGL/angle_windowsstore.h
#%%{_libdir}/libmediastreamer.so
%if %{enable_tests}
%{_bindir}/mediastreamer2-tester
%{_datadir}/mediastreamer2-tester/
%endif
%{_datadir}/Mediastreamer2/
#%{_libdir}/pkgconfig/mediastreamer.pc
#%%{_libdir}/mediastreamer/
#%%{_libdir}/mediastreamer/plugins/
#%%{_libdir}/mediastreamer/plugins/libmsqogl.so
%changelog