+# TODO: suid/capabilities for ptp-helper? (-Dptp-helper-permissions=capabilities or -Dptp-helper-setuid-user=/-Dptp-helper-setuid-group=)
+#
+# Conditional build:
+%bcond_without apidocs # hotdoc based API documentation
+%bcond_without ptp_helper # ptp-helper (requires rust)
+%bcond_without static_libs # static libraries
+
+%define gstmver 1.0
+
Summary: GStreamer Streaming-media framework runtime
Summary(pl.UTF-8): GStreamer - biblioteki środowiska do obróbki strumieni
Name: gstreamer
-Version: 0.10.36
-Release: 2
+Version: 1.24.2
+Release: 1
License: LGPL v2+
Group: Libraries
-Source0: http://gstreamer.freedesktop.org/src/gstreamer/%{name}-%{version}.tar.xz
-# Source0-md5: 15389c73e091b1dda915279c388b9cb2
-Source1: %{name}-rpmdeps.sh
-Patch0: %{name}-without_ps_pdf.patch
-Patch1: %{name}-eps.patch
-Patch2: %{name}-inspect-rpm-format.patch
-URL: http://gstreamer.net/
-BuildRequires: autoconf >= 2.60
-BuildRequires: automake >= 1:1.11
+Source0: https://gstreamer.freedesktop.org/src/gstreamer/%{name}-%{version}.tar.xz
+# Source0-md5: fd0faca3054dd579768f81288be822d4
+Patch0: %{name}-inspect-rpm-format.patch
+URL: https://gstreamer.freedesktop.org/
+BuildRequires: automake
+BuildRequires: bash-completion-devel >= 1:2.0
BuildRequires: bison >= 1.875
-BuildRequires: docbook-dtd30-sgml
BuildRequires: docbook-dtd412-xml
-BuildRequires: docbook-utils >= 0.6.10
+BuildRequires: elfutils-devel
BuildRequires: flex >= 2.5.31
-BuildRequires: gettext-devel >= 0.17
-BuildRequires: glib2-devel >= 1:2.24
+BuildRequires: gettext-tools >= 0.17
+BuildRequires: glib2-devel >= 1:2.64.0
+%if %(locale -a | grep -q '^C\.UTF-8$'; echo $?)
+BuildRequires: glibc-localedb-all
+%endif
BuildRequires: glibc-misc
-BuildRequires: gnome-doc-tools
-BuildRequires: gobject-introspection-devel >= 0.6.8
-BuildRequires: gtk-doc >= 1.6
-BuildRequires: libtool >= 1.4
-BuildRequires: libxml2-devel >= 1:2.6.26
-BuildRequires: nasm
+BuildRequires: gobject-introspection-devel >= 1.31.1
+%{?with_apidocs:BuildRequires: hotdoc >= 0.11.0}
+BuildRequires: libcap-devel
+%ifarch %{ix86} %{x8664} x32 %{arm} hppa ia64 mips ppc ppc64 sh
+BuildRequires: libunwind-devel
+%endif
+BuildRequires: meson >= 1.1
+BuildRequires: ninja >= 1.5
BuildRequires: perl-base
BuildRequires: pkgconfig >= 1:0.9.0
-BuildRequires: python >= 2.1
+BuildRequires: python3 >= 1:3.2
+BuildRequires: python3-modules >= 1:3.2
+%{?with_ptp_helper:BuildRequires: rust >= 1.48}
+BuildRequires: rpm-build >= 4.6
+BuildRequires: rpmbuild(macros) >= 1.736
+BuildRequires: sed >= 4.0
BuildRequires: tar >= 1:1.22
-BuildRequires: transfig
-BuildRequires: xmlto
BuildRequires: xz
-Requires: glib2 >= 1:2.24
+Requires: glib2 >= 1:2.64.0
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-%define vmajor %(echo %{version} | cut -d. -f1,2)
-%define _gstlibdir %{_libdir}/gstreamer-%{vmajor}
-%define _gstincludedir %{_includedir}/gstreamer-%{vmajor}
-
-%define rpmlibdir /usr/lib/rpm
+%define gstlibdir %{_libdir}/gstreamer-%{gstmver}
+%define gstlibexecdir %{_libexecdir}/gstreamer-%{gstmver}
+%define gstincludedir %{_includedir}/gstreamer-%{gstmver}
%description
GStreamer is a streaming-media framework, based on graphs of filters
Summary(pl.UTF-8): Pliki nagłówkowe do środowiska obróbki strumieni GStreamer
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
-Requires: glib2-devel >= 1:2.24
-Requires: libxml2-devel >= 1:2.6.26
+Requires: glib2-devel >= 1:2.64.0
Obsoletes: gstreamer-plugins-bad-devel < 0.10.10
+Conflicts: gstreamer-plugins-bad-devel < 1.14
%description devel
This package contains the includes files necessary to develop
%package apidocs
Summary: GStreamer API documentation
-Summary(pl.UTF-8): Dokumentacja API Gstreamera
+Summary(pl.UTF-8): Dokumentacja API GStreamera
Group: Documentation
-Requires: gtk-doc-common
+BuildArch: noarch
%description apidocs
GStreamer API documentation.
%description apidocs -l pl.UTF-8
-Dokumentacja API Gstreamera.
+Dokumentacja API GStreamera.
+
+%package gdb
+Summary: GStreamer pretty printers for GDB
+Summary(pl.UTF-8): Funkcje wypisujące dane GStreamer dla GDB
+Group: Development/Debuggers
+Requires: %{name} = %{version}-%{release}
+Requires: gdb
+
+%description gdb
+This package contains Python scripts for GDB pretty printing of the
+GStreamer types.
+
+%description gdb -l pl.UTF-8
+Ten pakiet zawiera skrypty Pythona dla GDB służące do ładnego
+wypisywania typów GStreamer.
+
+%package -n bash-completion-gstreamer
+Summary: Bash completion for GStreamer utilities
+Summary(pl.UTF-8): Bashowe uzupełnianie parametrów narzędzi GStreamera
+Group: Applications/Shells
+Requires: %{name} = %{version}-%{release}
+Requires: bash-completion >= 1:2.0
+
+%description -n bash-completion-gstreamer
+Bash completion for GStreamer utilities: gst-inspect and gst-launch.
+
+%description -n bash-completion-gstreamer -l pl.UTF-8
+Bashowe uzupełnianie parametrów narzędzi GStreamera: gst-inspect oraz
+gst-launch.
%prep
%setup -q
%patch0 -p1
-%patch1 -p1
-%patch2 -p1
+
+%{__sed} -i -e '1s,/usr/bin/env python3,%{__python3},' docs/gst-plugins-doc-cache-generator.py
%build
-# po/Makefile.in.in is modified
-#{__gettextize}
-%{__libtoolize}
-%{__aclocal} -I common/m4 -I m4 -I .
-%{__autoconf}
-%{__autoheader}
-%{__automake}
-%configure \
- --disable-examples \
- --disable-pspdf \
- --disable-silent-rules \
- --disable-tests \
- --enable-docbook \
- --enable-gtk-doc \
- --with-html-dir=%{_gtkdocdir}
-
-%{__make}
+%meson build \
+ %{!?with_static_libs:--default-library=shared} \
+ %{?with_apidocs:-Ddoc=enabled} \
+ -Dexamples=disabled \
+ -Dtests=disabled
+
+%ninja_build -C build
+
+%if %{with apidocs}
+cd build/docs
+for component in base check controller gstreamer net ; do
+ LC_ALL=C.UTF-8 hotdoc run --conf-file ${component}-doc.json
+done
+for component in coreelements coretracers ; do
+ LC_ALL=C.UTF-8 hotdoc run --conf-file plugin-${component}.json
+done
+%endif
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{%{_docdir}/%{name}-devel-%{version},%{rpmlibdir}}
-%{__make} install \
- DESTDIR=$RPM_BUILD_ROOT
+%ninja_install -C build
-install %{SOURCE1} $RPM_BUILD_ROOT%{rpmlibdir}/gstreamerdeps.sh
+%find_lang %{name} --all-name --with-gnome
-mv $RPM_BUILD_ROOT%{_docdir}/%{name}-{%{vmajor},%{version}}
-mv $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/{manual,pwg} \
- $RPM_BUILD_ROOT%{_docdir}/%{name}-devel-%{version}
+%py3_comp $RPM_BUILD_ROOT%{_datadir}/gstreamer-1.0/gdb
+%py3_ocomp $RPM_BUILD_ROOT%{_datadir}/gstreamer-1.0/gdb
-%find_lang %{name} --all-name --with-gnome
+# no static modules - shut up check files
+%if %{with static_libs}
+%{__rm} $RPM_BUILD_ROOT%{gstlibdir}/lib*.a
+%{__rm} $RPM_BUILD_ROOT%{gstlibdir}/pkgconfig/*.pc
+%endif
-# no *.la for modules - shut up check files
-%{__rm} $RPM_BUILD_ROOT%{_gstlibdir}/lib*.la
-# *.la for libs kept - no .private dependencies in *.pc
+%if %{with apidocs}
+install -d $RPM_BUILD_ROOT%{_docdir}/gstreamer-%{gstmver}
+cp -pr build/docs/{base,check,controller,gstreamer,net}-doc $RPM_BUILD_ROOT%{_docdir}/gstreamer-%{gstmver}
+cp -pr build/docs/plugin-{coreelements,coretracers} $RPM_BUILD_ROOT%{_docdir}/gstreamer-%{gstmver}
+%endif
%clean
rm -rf $RPM_BUILD_ROOT
%files -f %{name}.lang
%defattr(644,root,root,755)
-%doc AUTHORS ChangeLog NEWS README TODO
-%attr(755,root,root) %{_bindir}/gst-*
-%attr(755,root,root) %{_libdir}/libgstbase-0.10.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libgstbase-0.10.so.0
-%attr(755,root,root) %{_libdir}/libgstcheck-0.10.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libgstcheck-0.10.so.0
-%attr(755,root,root) %{_libdir}/libgstcontroller-0.10.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libgstcontroller-0.10.so.0
-%attr(755,root,root) %{_libdir}/libgstdataprotocol-0.10.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libgstdataprotocol-0.10.so.0
-%attr(755,root,root) %{_libdir}/libgstnet-0.10.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libgstnet-0.10.so.0
-%attr(755,root,root) %{_libdir}/libgstreamer-0.10.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libgstreamer-0.10.so.0
-%dir %{_gstlibdir}
-%attr(755,root,root) %{_gstlibdir}/gst-plugin-scanner
-%attr(755,root,root) %{_gstlibdir}/libgstcoreelements.so
-%attr(755,root,root) %{_gstlibdir}/libgstcoreindexers.so
-%{_mandir}/man1/gst-*.1*
-%{_libdir}/girepository-1.0/Gst-0.10.typelib
-%{_libdir}/girepository-1.0/GstBase-0.10.typelib
-%{_libdir}/girepository-1.0/GstCheck-0.10.typelib
-%{_libdir}/girepository-1.0/GstController-0.10.typelib
-%{_libdir}/girepository-1.0/GstNet-0.10.typelib
+%doc AUTHORS ChangeLog MAINTAINERS NEWS README.md RELEASE
+%attr(755,root,root) %{_bindir}/gst-inspect-1.0
+%attr(755,root,root) %{_bindir}/gst-launch-1.0
+%attr(755,root,root) %{_bindir}/gst-stats-1.0
+%attr(755,root,root) %{_bindir}/gst-typefind-1.0
+%attr(755,root,root) %{_libdir}/libgstbase-%{gstmver}.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libgstbase-%{gstmver}.so.0
+%attr(755,root,root) %{_libdir}/libgstcheck-%{gstmver}.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libgstcheck-%{gstmver}.so.0
+%attr(755,root,root) %{_libdir}/libgstcontroller-%{gstmver}.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libgstcontroller-%{gstmver}.so.0
+%attr(755,root,root) %{_libdir}/libgstnet-%{gstmver}.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libgstnet-%{gstmver}.so.0
+%attr(755,root,root) %{_libdir}/libgstreamer-%{gstmver}.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libgstreamer-%{gstmver}.so.0
+%if "%{_libexecdir}" != "%{_libdir}"
+%dir %{gstlibexecdir}
+%endif
+%attr(755,root,root) %{gstlibexecdir}/gst-plugin-scanner
+%if %{with ptp_helper}
+# %caps(cap_net_bind_service,cap_net_admin,cap_sys_nice=ep) ?
+%attr(755,root,root) %{gstlibexecdir}/gst-ptp-helper
+%endif
+%dir %{gstlibdir}
+%attr(755,root,root) %{gstlibdir}/libgstcoreelements.so
+%attr(755,root,root) %{gstlibdir}/libgstcoretracers.so
+# common for some plugins
+%dir %{_datadir}/gstreamer-1.0
+%{_mandir}/man1/gst-inspect-1.0.1*
+%{_mandir}/man1/gst-launch-1.0.1*
+%{_mandir}/man1/gst-stats-1.0.1*
+%{_mandir}/man1/gst-typefind-1.0.1*
+%{_libdir}/girepository-1.0/Gst-%{gstmver}.typelib
+%{_libdir}/girepository-1.0/GstBase-%{gstmver}.typelib
+%{_libdir}/girepository-1.0/GstCheck-%{gstmver}.typelib
+%{_libdir}/girepository-1.0/GstController-%{gstmver}.typelib
+%{_libdir}/girepository-1.0/GstNet-%{gstmver}.typelib
%files devel
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libgstbase-0.10.so
-%attr(755,root,root) %{_libdir}/libgstcheck-0.10.so
-%attr(755,root,root) %{_libdir}/libgstcontroller-0.10.so
-%attr(755,root,root) %{_libdir}/libgstdataprotocol-0.10.so
-%attr(755,root,root) %{_libdir}/libgstnet-0.10.so
-%attr(755,root,root) %{_libdir}/libgstreamer-0.10.so
-%{_libdir}/libgstbase-0.10.la
-%{_libdir}/libgstcheck-0.10.la
-%{_libdir}/libgstcontroller-0.10.la
-%{_libdir}/libgstdataprotocol-0.10.la
-%{_libdir}/libgstnet-0.10.la
-%{_libdir}/libgstreamer-0.10.la
-%{_docdir}/%{name}-devel-%{version}
-%{_gstincludedir}
-%{_pkgconfigdir}/gstreamer-0.10.pc
-%{_pkgconfigdir}/gstreamer-base-0.10.pc
-%{_pkgconfigdir}/gstreamer-check-0.10.pc
-%{_pkgconfigdir}/gstreamer-controller-0.10.pc
-%{_pkgconfigdir}/gstreamer-dataprotocol-0.10.pc
-%{_pkgconfigdir}/gstreamer-net-0.10.pc
-%{_aclocaldir}/gst-element-check-0.10.m4
-%attr(755,root,root) %{rpmlibdir}/gstreamerdeps.sh
-%{_datadir}/gir-1.0/Gst-0.10.gir
-%{_datadir}/gir-1.0/GstBase-0.10.gir
-%{_datadir}/gir-1.0/GstCheck-0.10.gir
-%{_datadir}/gir-1.0/GstController-0.10.gir
-%{_datadir}/gir-1.0/GstNet-0.10.gir
+%if %{with apidocs}
+%attr(755,root,root) %{gstlibexecdir}/gst-hotdoc-plugins-scanner
+%attr(755,root,root) %{gstlibexecdir}/gst-plugins-doc-cache-generator
+%endif
+%attr(755,root,root) %{_libdir}/libgstbase-%{gstmver}.so
+%attr(755,root,root) %{_libdir}/libgstcheck-%{gstmver}.so
+%attr(755,root,root) %{_libdir}/libgstcontroller-%{gstmver}.so
+%attr(755,root,root) %{_libdir}/libgstnet-%{gstmver}.so
+%attr(755,root,root) %{_libdir}/libgstreamer-%{gstmver}.so
+%dir %{gstincludedir}
+%{gstincludedir}/gst
+%{_pkgconfigdir}/gstreamer-%{gstmver}.pc
+%{_pkgconfigdir}/gstreamer-base-%{gstmver}.pc
+%{_pkgconfigdir}/gstreamer-check-%{gstmver}.pc
+%{_pkgconfigdir}/gstreamer-controller-%{gstmver}.pc
+%{_pkgconfigdir}/gstreamer-net-%{gstmver}.pc
+%{_aclocaldir}/gst-element-check-%{gstmver}.m4
+%{_datadir}/gir-1.0/Gst-%{gstmver}.gir
+%{_datadir}/gir-1.0/GstBase-%{gstmver}.gir
+%{_datadir}/gir-1.0/GstCheck-%{gstmver}.gir
+%{_datadir}/gir-1.0/GstController-%{gstmver}.gir
+%{_datadir}/gir-1.0/GstNet-%{gstmver}.gir
+%if %{with static_libs}
%files static
%defattr(644,root,root,755)
-%{_libdir}/libgstbase-0.10.a
-%{_libdir}/libgstcheck-0.10.a
-%{_libdir}/libgstcontroller-0.10.a
-%{_libdir}/libgstdataprotocol-0.10.a
-%{_libdir}/libgstnet-0.10.a
-%{_libdir}/libgstreamer-0.10.a
+%{_libdir}/libgstbase-%{gstmver}.a
+%{_libdir}/libgstcheck-%{gstmver}.a
+%{_libdir}/libgstcontroller-%{gstmver}.a
+%{_libdir}/libgstnet-%{gstmver}.a
+%{_libdir}/libgstreamer-%{gstmver}.a
+%endif
+%if %{with apidocs}
%files apidocs
%defattr(644,root,root,755)
-%{_gtkdocdir}/gstreamer-0.10
-%{_gtkdocdir}/gstreamer-libs-0.10
-%{_gtkdocdir}/gstreamer-plugins-0.10
+%dir %{_docdir}/gstreamer-%{gstmver}
+%{_docdir}/gstreamer-%{gstmver}/base-doc
+%{_docdir}/gstreamer-%{gstmver}/check-doc
+%{_docdir}/gstreamer-%{gstmver}/controller-doc
+%{_docdir}/gstreamer-%{gstmver}/gstreamer-doc
+%{_docdir}/gstreamer-%{gstmver}/net-doc
+%{_docdir}/gstreamer-%{gstmver}/plugin-coreelements
+%{_docdir}/gstreamer-%{gstmver}/plugin-coretracers
+%endif
+
+%files gdb
+%defattr(644,root,root,755)
+%{_datadir}/gdb/auto-load%{_libdir}/libgstreamer-%{gstmver}.so.*.*.*-gdb.py
+%{_datadir}/gstreamer-1.0/gdb
+
+%files -n bash-completion-gstreamer
+%defattr(644,root,root,755)
+%{bash_compdir}/gst-inspect-1.0
+%{bash_compdir}/gst-launch-1.0
+%attr(755,root,root) %{gstlibexecdir}/gst-completion-helper
+%attr(755,root,root) %{_datadir}/bash-completion/helpers/gst