pipewire/pipewire.spec

446 lines
14 KiB
RPMSpec
Raw Normal View History

2020-10-05 22:59:15 +03:00
%global __provides_exclude_from ^%{_libdir}/%{name}-%{api}/.*$
%global __requires_exclude_from ^%{_libdir}/%{name}-%{api}/.*$
%define api 0.3
%define spa_api 0.2
%define major 0
%define libname %mklibname %{name} %{api} %{major}
%define devname %mklibname %{name} -d
%define jmajor 0
%define libjack %mklibname jack %{jmajor}
%define libjacknet %mklibname jacknet %{jmajor}
%define libjackserver %mklibname jackserver %{jmajor}
%define libnamejack %mklibname %{name}-jack %{jmajor}
%define libnamejacknet %mklibname %{name}-jacknet %{jmajor}
%define libnamejackserver %mklibname %{name}-jackserver %{jmajor}
%define devjack %mklibname jack -d
%define pmajor 0
%define libpulse %mklibname pulseaudio %{pmajor}
%define libpulseglib2 %mklibname pulseglib2 %{pmajor}
%define libnamepulse %mklibname %{name}-pulseaudio %{pmajor}
%define libnamepulseglib2 %mklibname %{name}-pulseglib2 %{pmajor}
%define devpulse %mklibname pulseaudio -d
2020-10-04 20:34:07 +09:00
2018-10-10 17:05:21 +03:00
Summary: Media Sharing Server
2020-10-05 22:59:15 +03:00
Name: pipewire
2020-10-04 20:34:07 +09:00
Version: 0.3.13
2020-10-05 22:59:15 +03:00
Release: 1
2020-10-04 20:34:07 +09:00
License: MIT
2020-10-05 22:59:15 +03:00
Group: System/Servers
Url: https://pipewire.org/
Source0: https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/%{version}/%{name}-%{version}.tar.gz
2020-10-04 20:34:07 +09:00
Source1: %{name}.sysusers.conf
2020-10-05 22:59:15 +03:00
## fedora patches
Patch0: 0001-conf-disable-bluez5.patch
2018-10-10 17:05:21 +03:00
## upstream patches
2020-10-04 20:34:07 +09:00
Patch1: 0001-pulse-limit-get_writable_size.patch
Patch2: 0001-alsa-monitor-avoid-crash-in-release.patch
Patch3: 0001-acp-pass-right-user_data-to-event.patch
Patch4: 0001-media-session-make-sure-we-don-t-read-invalid-data.patch
BuildRequires: doxygen
BuildRequires: graphviz
2020-10-05 22:59:15 +03:00
BuildRequires: meson
BuildRequires: xmltoman
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(bluez)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(gio-unix-2.0)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gstreamer-1.0)
BuildRequires: pkgconfig(gstreamer-allocators-1.0)
BuildRequires: pkgconfig(gstreamer-base-1.0)
BuildRequires: pkgconfig(gstreamer-net-1.0)
BuildRequires: pkgconfig(gstreamer-plugins-base-1.0)
BuildRequires: pkgconfig(jack)
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libudev)
BuildRequires: pkgconfig(libv4l2)
2018-10-10 17:05:21 +03:00
BuildRequires: pkgconfig(sbc)
BuildRequires: pkgconfig(sdl2)
2020-10-05 22:59:15 +03:00
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(vulkan)
2020-10-04 20:34:07 +09:00
Requires: %{libname} = %{EVRD}
2018-10-10 17:05:21 +03:00
Requires: rtkit
2020-10-05 22:59:15 +03:00
Requires: systemd
Requires(post): systemd
2018-10-10 17:05:21 +03:00
%description
PipeWire is a multimedia server for Linux and other Unix like operating
systems.
2018-10-10 17:25:43 +03:00
%files
2020-10-05 22:59:15 +03:00
%doc COPYING LICENSE README.md
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
%{_bindir}/%{name}
%{_bindir}/%{name}-media-session
%{_defaultdocdir}/%{name}/html
%{_mandir}/man1/%{name}.1*
%{_mandir}/man5/%{name}.conf.5*
2020-10-04 20:34:07 +09:00
%{_sysusersdir}/%{name}.conf
2020-10-05 22:59:15 +03:00
%{_userunitdir}/%{name}.*
2020-10-04 20:34:07 +09:00
%post
%sysusers_create %{name}.conf
2020-10-05 22:59:15 +03:00
%systemd_user_post %{name}.service
%systemd_user_post %{name}.socket
2020-10-04 20:34:07 +09:00
#-------------------------------------------------------------------------
2020-10-05 22:59:15 +03:00
2020-10-04 20:34:07 +09:00
%package -n %{libname}
Summary: Libraries for PipeWire clients
2018-10-10 17:05:21 +03:00
Group: System/Libraries
2020-10-05 22:59:15 +03:00
Requires: %{name} = %{EVRD}
Requires: %{name}-libs = %{EVRD}
2018-10-10 17:05:21 +03:00
2020-10-04 20:34:07 +09:00
%description -n %{libname}
This package contains the runtime libraries for any application that wishes
to interface with a PipeWire media server.
2018-10-10 17:05:21 +03:00
2018-10-10 17:25:43 +03:00
%files -n %{libname}
2020-10-05 22:59:15 +03:00
%doc COPYING
%{_libdir}/lib%{name}-%{api}.so.%{major}*
2018-10-10 17:25:43 +03:00
2020-10-04 20:34:07 +09:00
#-------------------------------------------------------------------------
2018-10-10 17:05:21 +03:00
2020-10-05 22:59:15 +03:00
%package libs
Summary: Libraries for PipeWire clients
Group: System/Libraries
Requires: %{name} = %{EVRD}
2020-10-04 20:34:07 +09:00
Requires: %{libname} = %{EVRD}
2020-10-05 22:59:15 +03:00
Requires: %{libnamejack} = %{EVRD}
Requires: %{libnamejacknet} = %{EVRD}
Requires: %{libnamejackserver} = %{EVRD}
Requires: %{libnamepulse} = %{EVRD}
Requires: %{libnamepulseglib2} = %{EVRD}
2020-10-04 20:34:07 +09:00
2020-10-05 22:59:15 +03:00
%description libs
This package contains the runtime libraries for any application that wishes
to interface with a PipeWire media server.
2020-10-04 20:34:07 +09:00
2020-10-05 22:59:15 +03:00
%files libs
%doc COPYING LICENSE README.md
%{_datadir}/alsa-card-profile/mixer/paths
%{_datadir}/alsa-card-profile/mixer/profile-sets
%{_libdir}/%{name}-%{api}/lib%{name}-*.so
%{_libdir}/spa-%{spa_api}
%{_prefix}/lib/udev/rules.d/90-%{name}-alsa.rules
2020-10-04 20:34:07 +09:00
#-------------------------------------------------------------------------
%package -n %{devname}
Summary: Headers and libraries for PipeWire client development
2018-10-10 17:05:21 +03:00
Group: Development/C++
2020-10-04 20:34:07 +09:00
Requires: %{libname} = %{EVRD}
2020-10-05 22:59:15 +03:00
Requires: %{libnamejack} = %{EVRD}
Requires: %{libnamejacknet} = %{EVRD}
Requires: %{libnamejackserver} = %{EVRD}
Requires: %{libnamepulse} = %{EVRD}
Requires: %{libnamepulseglib2} = %{EVRD}
2020-10-04 20:34:07 +09:00
Provides: %{name}-devel = %{EVRD}
2018-10-10 17:05:21 +03:00
2020-10-04 20:34:07 +09:00
%description -n %{devname}
Headers and libraries for developing applications that can communicate with
a PipeWire media server.
2018-10-10 17:05:21 +03:00
2018-10-10 17:25:43 +03:00
%files -n %{devname}
2020-10-05 22:59:15 +03:00
%doc COPYING
%{_includedir}/%{name}-%{api}
%{_includedir}/spa-%{spa_api}
%{_libdir}/lib%{name}-%{api}.so
%{_libdir}/pkgconfig/lib%{name}-%{api}.pc
2018-10-10 17:25:43 +03:00
%{_libdir}/pkgconfig/libspa-%{spa_api}.pc
2020-10-05 22:59:15 +03:00
%{_libdir}/%{name}-%{api}/jack/libjack*.so
%{_libdir}/%{name}-%{api}/pulse/libpulse*.so
2018-10-10 17:25:43 +03:00
2020-10-04 20:34:07 +09:00
#-------------------------------------------------------------------------
2018-10-10 17:05:21 +03:00
2020-10-04 20:34:07 +09:00
%package utils
2018-10-10 17:05:21 +03:00
Summary: PipeWire media server utilities
Group: System/Servers
2020-10-04 20:34:07 +09:00
Requires: %{libname} = %{EVRD}
2020-10-05 22:59:15 +03:00
Requires: %{name} = %{EVRD}
Requires: %{libnamejack} = %{EVRD}
Requires: %{libnamejacknet} = %{EVRD}
Requires: %{libnamejackserver} = %{EVRD}
Requires: %{libnamepulse} = %{EVRD}
Requires: %{libnamepulseglib2} = %{EVRD}
2018-10-10 17:05:21 +03:00
2020-10-04 20:34:07 +09:00
%description utils
This package contains command line utilities for the PipeWire media server.
2018-10-10 17:05:21 +03:00
2018-10-10 17:25:43 +03:00
%files utils
2020-10-05 22:59:15 +03:00
%doc COPYING LICENSE README.md
%{_bindir}/pw-*
%{_bindir}/spa-*
%{_mandir}/man1/pw-*.1*
2018-10-10 17:25:43 +03:00
2020-10-04 20:34:07 +09:00
#-------------------------------------------------------------------------
2018-10-10 17:05:21 +03:00
2020-10-05 22:59:15 +03:00
%package jack-audio-connection-kit
Summary: PipeWire JACK implementation
Group: System/Libraries
Requires: %{libjack} = %{EVRD}
Requires: %{libjacknet} = %{EVRD}
Requires: %{libjackserver} = %{EVRD}
Provides: jack-audio-connection-kit = %{EVRD}
Conflicts: jack-audio-connection-kit >= 1.9.14
Conflicts: jack-audio-connection-kit-dbus >= 1.9.14
2020-10-04 20:34:07 +09:00
2020-10-05 22:59:15 +03:00
%description jack-audio-connection-kit
This package provides a JACK implementation based on PipeWire.
2020-10-04 20:34:07 +09:00
2020-10-05 22:59:15 +03:00
%files jack-audio-connection-kit
#-------------------------------------------------------------------------
%package -n %{libjack}
Summary: Library associated with jack for the PipeWire media server
Group: System/Libraries
Requires: %{libnamejack} = %{EVRD}
Conflicts: %{libjack} >= 1.9.14
%description -n %{libjack}
This package contains a shared library for the Jack Audio Connection Kit
for the PipeWire media server.
%files -n %{libjack}
%doc COPYING
%{_libdir}/libjack.so.%{jmajor}*
#-------------------------------------------------------------------------
%package -n %{libjacknet}
Summary: Library associated with jack for the PipeWire media server
Group: System/Libraries
Requires: %{libnamejacknet} = %{EVRD}
Conflicts: %{libjacknet} >= 1.9.14
%description -n %{libjacknet}
This package contains a shared library for the Jack Audio Connection Kit
for the PipeWire media server.
2018-10-10 17:05:21 +03:00
2020-10-05 22:59:15 +03:00
%files -n %{libjacknet}
%doc COPYING
%{_libdir}/libjacknet.so.%{jmajor}*
2020-10-04 20:34:07 +09:00
#-------------------------------------------------------------------------
2020-10-05 22:59:15 +03:00
%package -n %{libjackserver}
Summary: Library associated with jack server, needed for jackd/jackdbus
Group: System/Libraries
Requires: %{libnamejackserver} = %{EVRD}
Conflicts: %{libjackserver} >= 1.9.14
%description -n %{libjackserver}
This package contains a shared library for the Jack Audio Connection Kit
Server for the PipeWire media server.
%files -n %{libjackserver}
%doc COPYING
%{_libdir}/libjackserver.so.%{jmajor}*
#-------------------------------------------------------------------------
%package pulseaudio
Summary: PipeWire PulseAudio implementation
Group: System/Libraries
Requires: %{libpulse} = %{EVRD}
Requires: %{libpulseglib2} = %{EVRD}
Provides: pulseaudio-libs = %{EVRD}
Provides: pulseaudio-libs-glib2 = %{EVRD}
Conflicts: pulseaudio-libs >= 13.0
Conflicts: pulseaudio-libs-glib2 >= 13.0
%description pulseaudio
This package provides a PulseAudio implementation based on PipeWire.
%files pulseaudio
#-------------------------------------------------------------------------
%package -n %{libpulse}
Summary: Libraries for PulseAudio clients for the PipeWire media server
2020-10-04 20:34:07 +09:00
Group: System/Servers
2020-10-05 22:59:15 +03:00
Requires: %{libnamepulse} = %{EVRD}
Conflicts: %{libpulse} >= 13.0
2018-10-10 17:05:21 +03:00
2020-10-05 22:59:15 +03:00
%description -n %{libpulse}
This package contains the runtime libraries for any application that wishes
to interface with a PulseAudio sound server for the PipeWire media server.
2018-10-10 17:25:43 +03:00
2020-10-05 22:59:15 +03:00
%files -n %{libpulse}
%doc COPYING
%{_libdir}/libpulse.so.%{pmajor}*
%{_libdir}/libpulse-simple.so.%{pmajor}*
2020-10-04 20:34:07 +09:00
#-------------------------------------------------------------------------
2020-10-05 22:59:15 +03:00
%package -n %{libpulseglib2}
Summary: GLIB 2.x bindings for PulseAudio clients for PipeWire
2020-10-04 20:34:07 +09:00
Group: System/Servers
2020-10-05 22:59:15 +03:00
Requires: %{libnamepulseglib2} = %{EVRD}
Conflicts: %{libpulseglib2} >= 13.0
2020-10-04 20:34:07 +09:00
2020-10-05 22:59:15 +03:00
%description -n %{libpulseglib2}
This package contains bindings to integrate the PulseAudio client library with
a GLIB 2.x based application for the PipeWire media server.
2020-10-04 20:34:07 +09:00
2020-10-05 22:59:15 +03:00
%files -n %{libpulseglib2}
%doc COPYING
%{_libdir}/libpulse-mainloop-glib.so.%{pmajor}*
#-------------------------------------------------------------------------
%package -n %{libnamejack}
Summary: Library associated with jack for the PipeWire media server
Group: System/Libraries
%description -n %{libnamejack}
This package contains a shared library for the Jack Audio Connection Kit
for the PipeWire media server.
%files -n %{libnamejack}
%doc COPYING
%{_libdir}/%{name}-%{api}/jack/libjack.so.*
#-------------------------------------------------------------------------
%package -n %{libnamejacknet}
Summary: Library associated with jack for the PipeWire media server
Group: System/Libraries
%description -n %{libnamejacknet}
This package contains a shared library for the Jack Audio Connection Kit
for the PipeWire media server.
%files -n %{libnamejacknet}
%doc COPYING
%{_libdir}/libjacknet.so.%{jmajor}*
%{_libdir}/%{name}-%{api}/jack/libjacknet.so.*
2020-10-04 20:34:07 +09:00
#-------------------------------------------------------------------------
2020-10-05 22:59:15 +03:00
%package -n %{libnamejackserver}
Summary: Library associated with jack server, needed for jackd/jackdbus
Group: System/Libraries
%description -n %{libnamejackserver}
This package contains a shared library for the Jack Audio Connection Kit
Server for the PipeWire media server.
%files -n %{libnamejackserver}
%doc COPYING
%{_libdir}/%{name}-%{api}/jack/libjackserver.so.*
#-------------------------------------------------------------------------
%package -n %{libnamepulse}
Summary: Libraries for PulseAudio clients for the PipeWire media server
2020-10-04 20:34:07 +09:00
Group: System/Servers
2020-10-05 22:59:15 +03:00
%description -n %{libnamepulse}
This package contains the runtime libraries for any application that wishes
to interface with a PulseAudio sound server for the PipeWire media server.
%files -n %{libnamepulse}
%doc COPYING
%{_libdir}/%{name}-%{api}/pulse/libpulse.so*
%{_libdir}/%{name}-%{api}/pulse/libpulse-simple.so.*
#-------------------------------------------------------------------------
2020-10-04 20:34:07 +09:00
2020-10-05 22:59:15 +03:00
%package -n %{libnamepulseglib2}
Summary: GLIB 2.x bindings for PulseAudio clients for PipeWire
Group: System/Servers
%description -n %{libnamepulseglib2}
This package contains bindings to integrate the PulseAudio client library with
a GLIB 2.x based application for the PipeWire media server.
2020-10-04 20:34:07 +09:00
2020-10-05 22:59:15 +03:00
%files -n %{libnamepulseglib2}
%doc COPYING
%{_libdir}/%{name}-%{api}/pulse/libpulse-mainloop-glib.so.*
2020-10-04 20:34:07 +09:00
#-------------------------------------------------------------------------
2020-10-05 22:59:15 +03:00
%package alsa
Summary: PipeWire media server ALSA support
2020-10-04 20:34:07 +09:00
Group: System/Servers
Requires: %{libname} = %{EVRD}
2020-10-05 22:59:15 +03:00
Requires: %{name} = %{EVRD}
2020-10-04 20:34:07 +09:00
2020-10-05 22:59:15 +03:00
%description alsa
This package contains an ALSA plugin for the PipeWire media server.
2020-10-04 20:34:07 +09:00
2020-10-05 22:59:15 +03:00
%files alsa
%doc COPYING
%config(noreplace) %{_sysconfdir}/alsa/conf.d/50-%{name}.conf
%config(noreplace) %{_sysconfdir}/alsa/conf.d/99-%{name}-default.conf
%{_datadir}/alsa/alsa.conf.d/50-%{name}.conf
%{_datadir}/alsa/alsa.conf.d/99-%{name}-default.conf
%{_libdir}/alsa-lib/libasound_module_ctl_%{name}.so
%{_libdir}/alsa-lib/libasound_module_pcm_%{name}.so
2020-10-04 20:34:07 +09:00
#-------------------------------------------------------------------------
2020-10-05 22:59:15 +03:00
%package gstreamer
Summary: GStreamer elements for PipeWire
2020-10-04 20:34:07 +09:00
Group: System/Servers
2020-10-05 22:59:15 +03:00
Requires: %{libname} = %{EVRD}
Requires: %{name} = %{EVRD}
2020-10-04 20:34:07 +09:00
2020-10-05 22:59:15 +03:00
%description gstreamer
This package contains GStreamer elements to interface with a
PipeWire media server.
2020-10-04 20:34:07 +09:00
2020-10-05 22:59:15 +03:00
%files gstreamer
%doc COPYING
%{_libdir}/gstreamer-1.0/libgst%{name}.*
2020-10-04 20:34:07 +09:00
#-------------------------------------------------------------------------
2018-10-10 17:05:21 +03:00
%prep
2020-10-05 22:59:15 +03:00
%setup -q -b0
%patch0 -p1 -b .0000
%patch1 -p1 -b .0001
%patch2 -p1 -b .0002
%patch3 -p1 -b .0003
%patch4 -p1 -b .0004
2018-10-10 17:05:21 +03:00
%build
2020-10-04 20:34:07 +09:00
%meson \
2020-10-05 22:59:15 +03:00
-Ddocs=true \
-Dman=true \
-Dgstreamer=true \
-Dsystemd=true
2018-10-10 17:05:21 +03:00
%meson_build
%install
%meson_install
2020-10-05 22:59:15 +03:00
ln -s %{name}-%{api}/jack/libjack.so.0 %{buildroot}%{_libdir}/libjack.so.0.1.0
2020-10-04 20:34:07 +09:00
ln -s libjack.so.0.1.0 %{buildroot}%{_libdir}/libjack.so.0
2020-10-05 22:59:15 +03:00
ln -s %{name}-%{api}/jack/libjackserver.so.0 %{buildroot}%{_libdir}/libjackserver.so.0.1.0
2020-10-04 20:34:07 +09:00
ln -s libjackserver.so.0.1.0 %{buildroot}%{_libdir}/libjackserver.so.0
2020-10-05 22:59:15 +03:00
ln -s %{name}-%{api}/jack/libjacknet.so.0 %{buildroot}%{_libdir}/libjacknet.so.0.1.0
2020-10-04 20:34:07 +09:00
ln -s libjacknet.so.0.1.0 %{buildroot}%{_libdir}/libjacknet.so.0
2020-10-05 22:59:15 +03:00
ln -s %{name}-%{api}/pulse/libpulse.so.0 %{buildroot}%{_libdir}/libpulse.so.0
ln -s %{name}-%{api}/pulse/libpulse-simple.so.0 %{buildroot}%{_libdir}/libpulse-simple.so.0
ln -s %{name}-%{api}/pulse/libpulse-mainloop-glib.so.0 %{buildroot}%{_libdir}/libpulse-mainloop-glib.so.0
2020-10-04 20:34:07 +09:00
mkdir -p %{buildroot}%{_sysconfdir}/alsa/conf.d/
2020-10-05 22:59:15 +03:00
cp %{buildroot}%{_datadir}/alsa/alsa.conf.d/50-%{name}.conf %{buildroot}%{_sysconfdir}/alsa/conf.d/50-%{name}.conf
cp %{buildroot}%{_datadir}/alsa/alsa.conf.d/99-%{name}-default.conf %{buildroot}%{_sysconfdir}/alsa/conf.d/99-%{name}-default.conf
2018-10-10 17:05:21 +03:00
2020-10-04 20:34:07 +09:00
# upstream should use udev.pc
mkdir -p %{buildroot}%{_prefix}/lib/udev/rules.d
2020-10-05 22:59:15 +03:00
mv %{buildroot}/lib/udev/rules.d/90-%{name}-alsa.rules %{buildroot}%{_prefix}/lib/udev/rules.d
2020-10-04 20:34:07 +09:00
#install sysuser config
install -d %{buildroot}%{_sysusersdir}/
install -m0644 %{SOURCE1} %{buildroot}%{_sysusersdir}/%{name}.conf