mirror of
https://abf.rosa.ru/djam/pipewire.git
synced 2025-02-24 16:12:57 +00:00
317 lines
9.6 KiB
RPMSpec
317 lines
9.6 KiB
RPMSpec
# For spec-helper
|
|
%define dont_remove_rpath 1
|
|
|
|
%define api 0.3
|
|
%define spa_api 0.2
|
|
%define major 0
|
|
%define libname %mklibname %{name} %{api} %{major}
|
|
%define devname %mklibname %{name} -d
|
|
|
|
# (mikhailnov) rosa-repos-pkgprefs (rosa-repos SRPM) makes dependency solvers
|
|
# prefer real jack libraries over these ones.
|
|
# We do NOT filter provides from %%_libdir/*/ (Fedora does filter them)
|
|
# because we have preferences set in rosa-repos-pkgprefs and pull
|
|
# /etc/ld.so.conf.d/*.conf configs if jack libraries from pipewire are installed.
|
|
%define libjack %mklibname jack_pipewire 0
|
|
%define libjacknet %mklibname jacknet_pipewire 0
|
|
%define libjackserver %mklibname jackserver_pipewire 0
|
|
|
|
# (mikhailnov) If someone needs both 32 and 64 bit pipewire-jack or pipewire-alsa,
|
|
# dnf will allow him to run:
|
|
# dnf install 'pipewire-jack(x86-64)' 'pipewire-jack(x86-32)'
|
|
# RPM file coloring will do the magic of dealing with same files in both packages.
|
|
# I do not see sense in inventing strange subpackages to avoid this.
|
|
|
|
Summary: Media Sharing Server
|
|
Name: pipewire
|
|
Version: 0.3.22
|
|
Release: 1
|
|
License: MIT
|
|
Group: System/Servers
|
|
Url: https://pipewire.org/
|
|
Source0: https://github.com/PipeWire/pipewire/archive/%{version}/%{name}-%{version}.tar.gz
|
|
Source1: %{name}.sysusers.conf
|
|
BuildRequires: doxygen
|
|
BuildRequires: graphviz
|
|
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)
|
|
BuildRequires: pkgconfig(sbc)
|
|
BuildRequires: pkgconfig(sdl2)
|
|
BuildRequires: pkgconfig(systemd)
|
|
BuildRequires: pkgconfig(vulkan)
|
|
BuildRequires: pkgconfig(ncurses)
|
|
Requires: %{libname} = %{EVRD}
|
|
Requires: rtkit
|
|
Recommends: %{name}-utils = %{EVRD}
|
|
Recommends: %{name}-alsa = %{EVRD}
|
|
Recommends: %{name}-jack = %{EVRD}
|
|
Recommends: %{name}-gstreamer = %{EVRD}
|
|
Requires(post): /bin/systemd-sysusers
|
|
|
|
%description
|
|
PipeWire is a multimedia server for Linux and other Unix like operating
|
|
systems.
|
|
|
|
%files
|
|
%doc COPYING LICENSE README.md
|
|
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
|
|
%config(noreplace) %{_sysconfdir}/%{name}/client*.conf
|
|
%dir %{_sysconfdir}/%{name}/media-session.d
|
|
%{_bindir}/%{name}
|
|
%{_bindir}/%{name}-media-session
|
|
%{_defaultdocdir}/%{name}/html
|
|
%{_mandir}/man1/%{name}.1*
|
|
%{_mandir}/man5/%{name}.conf.5*
|
|
%{_sysusersdir}/%{name}.conf
|
|
%{_userunitdir}/%{name}*
|
|
%{_datadir}/alsa-card-profile/mixer/paths
|
|
%{_datadir}/alsa-card-profile/mixer/profile-sets
|
|
%{_udevrulesdir}/90-%{name}-alsa.rules
|
|
%{_libdir}/%{name}-%{api}/lib%{name}-*.so
|
|
%{_libdir}/spa-%{spa_api}
|
|
%{_datadir}/locale/*/LC_MESSAGES/pipewire.mo
|
|
%{_sysconfdir}/pipewire/media-session.d/*
|
|
|
|
%post
|
|
%sysusers_create %{name}.conf
|
|
%systemd_user_post %{name}.service
|
|
%systemd_user_post %{name}.socket
|
|
|
|
#-------------------------------------------------------------------------
|
|
|
|
%package -n %{libname}
|
|
Summary: Libraries for PipeWire clients
|
|
Group: System/Libraries
|
|
|
|
%description -n %{libname}
|
|
This package contains the runtime libraries for any application that wishes
|
|
to interface with a PipeWire media server.
|
|
|
|
%files -n %{libname}
|
|
%doc COPYING
|
|
%{_libdir}/lib%{name}-%{api}.so.%{major}*
|
|
|
|
#-------------------------------------------------------------------------
|
|
|
|
%package -n %{devname}
|
|
Summary: Headers and libraries for PipeWire client development
|
|
Group: Development/C++
|
|
Requires: %{libname} = %{EVRD}
|
|
Requires: %{name}-alsa = %{EVRD}
|
|
Requires: %{name}-jack = %{EVRD}
|
|
Provides: %{name}-devel = %{EVRD}
|
|
|
|
%description -n %{devname}
|
|
Headers and libraries for developing applications that can communicate with
|
|
a PipeWire media server.
|
|
|
|
%files -n %{devname}
|
|
%doc COPYING
|
|
%{_includedir}/%{name}-%{api}
|
|
%{_includedir}/spa-%{spa_api}
|
|
%{_libdir}/lib%{name}-%{api}.so
|
|
%{_libdir}/pkgconfig/lib%{name}-%{api}.pc
|
|
%{_libdir}/pkgconfig/libspa-%{spa_api}.pc
|
|
%{_libdir}/%{name}-%{api}/jack/libjack*.so
|
|
|
|
#-------------------------------------------------------------------------
|
|
|
|
%package utils
|
|
Summary: PipeWire media server utilities
|
|
Group: System/Servers
|
|
Requires: %{name} = %{EVRD}
|
|
|
|
%description utils
|
|
This package contains command line utilities for the PipeWire media server.
|
|
|
|
%files utils
|
|
%doc COPYING LICENSE README.md
|
|
%{_bindir}/pw-mon
|
|
%{_bindir}/pw-metadata
|
|
%{_bindir}/pw-mididump
|
|
%{_bindir}/pw-midiplay
|
|
%{_bindir}/pw-midirecord
|
|
%{_bindir}/pw-cli
|
|
%{_bindir}/pw-dot
|
|
%{_bindir}/pw-top
|
|
%{_bindir}/pw-cat
|
|
%{_bindir}/pw-play
|
|
%{_bindir}/pw-profiler
|
|
%{_bindir}/pw-record
|
|
%{_bindir}/pw-reserve
|
|
%{_bindir}/pw-dump
|
|
%{_bindir}/spa-acp-tool
|
|
%{_bindir}/spa-inspect
|
|
%{_bindir}/spa-monitor
|
|
%{_bindir}/spa-resample
|
|
%{_bindir}/spa-json-dump
|
|
%{_mandir}/man1/pw-mon.1*
|
|
%{_mandir}/man1/pw-cli.1*
|
|
%{_mandir}/man1/pw-cat.1*
|
|
%{_mandir}/man1/pw-dot.1*
|
|
%{_mandir}/man1/pw-metadata.1*
|
|
%{_mandir}/man1/pw-mididump.1*
|
|
%{_mandir}/man1/pw-profiler.1*
|
|
|
|
#-------------------------------------------------------------------------
|
|
|
|
%package jack
|
|
Summary: PipeWire JACK implementation
|
|
Group: System/Libraries
|
|
Requires: %{name} = %{EVRD}
|
|
# XXX cycled deps...
|
|
Requires: %{libjack}%{_isa} = %{EVRD}
|
|
Requires: %{libjacknet}%{_isa} = %{EVRD}
|
|
Requires: %{libjackserver}%{_isa} = %{EVRD}
|
|
|
|
%description jack
|
|
This package provides a JACK implementation based on PipeWire.
|
|
|
|
%files jack
|
|
%{_bindir}/pw-jack
|
|
%{_mandir}/man1/pw-jack.1*
|
|
%config(noreplace) %{_sysconfdir}/pipewire/media-session.d/with-jack
|
|
%config(noreplace) %{_sysconfdir}/ld.so.conf.d/pipewire-jack-%{_arch}.conf
|
|
%config(noreplace) %{_sysconfdir}/pipewire/jack.conf
|
|
|
|
#-------------------------------------------------------------------------
|
|
|
|
%package -n %{libjack}
|
|
Summary: PipeWire Jack implementation
|
|
Group: System/Libraries
|
|
Requires: %{name}-jack%{_isa} = %{EVRD}
|
|
# prefer it over native Jack library if pipewire is installed
|
|
Enhances: pipewire
|
|
|
|
%description -n %{libjack}
|
|
libjack.so.0 from PipeWire, ABI-compatible with libjack.so.0 from Jack
|
|
|
|
%files -n %{libjack}
|
|
%{_libdir}/pipewire-%{api}/jack/libjack.so.0*
|
|
|
|
#-------------------------------------------------------------------------
|
|
|
|
%package -n %{libjacknet}
|
|
Summary: PipeWire Jack implementation
|
|
Group: System/Libraries
|
|
Requires: %{name}-jack%{_isa} = %{EVRD}
|
|
# prefer it over native Jack library if pipewire is installed
|
|
Enhances: pipewire
|
|
|
|
%description -n %{libjacknet}
|
|
libjacknet.so.0 from PipeWire, ABI-compatible with libjacknet.so.0 from Jack
|
|
|
|
%files -n %{libjacknet}
|
|
%{_libdir}/pipewire-%{api}/jack/libjacknet.so.0*
|
|
|
|
#-------------------------------------------------------------------------
|
|
|
|
%package -n %{libjackserver}
|
|
Summary: PipeWire Jack implementation
|
|
Group: System/Libraries
|
|
Requires: %{name}-jack%{_isa} = %{EVRD}
|
|
# prefer it over native Jack library if pipewire is installed
|
|
Enhances: pipewire
|
|
|
|
%description -n %{libjackserver}
|
|
libjackserver.so.0 from PipeWire, ABI-compatible with libjackserver.so.0 from Jack
|
|
|
|
%files -n %{libjackserver}
|
|
%{_libdir}/pipewire-%{api}/jack/libjackserver.so.0*
|
|
|
|
#-------------------------------------------------------------------------
|
|
|
|
%package pulseaudio
|
|
Summary: PipeWire PulseAudio implementation
|
|
Group: System/Libraries
|
|
Requires: %{name} = %{EVRD}
|
|
|
|
%description pulseaudio
|
|
This package provides a PulseAudio implementation based on PipeWire.
|
|
Native PulseAudio libraries (libpulse.so.0 etc.) from PulseAudio
|
|
communicate with a replacement of PulseAudio daemon from this package.
|
|
|
|
%files pulseaudio
|
|
%{_bindir}/pipewire-pulse
|
|
%config(noreplace) %{_sysconfdir}/pipewire/media-session.d/with-pulseaudio
|
|
%config(noreplace) %{_sysconfdir}/pipewire/pipewire-pulse.conf
|
|
|
|
%post pulseaudio
|
|
%systemd_user_post pipewire-pulse.service
|
|
%systemd_user_post pipewire-pulse.socket
|
|
|
|
#-------------------------------------------------------------------------
|
|
|
|
%package alsa
|
|
Summary: PipeWire media server ALSA support
|
|
Group: System/Servers
|
|
Requires: %{name} = %{EVRD}
|
|
|
|
%description alsa
|
|
This package contains an ALSA plugin for the PipeWire media server.
|
|
|
|
%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
|
|
|
|
#-------------------------------------------------------------------------
|
|
|
|
%package gstreamer
|
|
Summary: GStreamer elements for PipeWire
|
|
Group: System/Servers
|
|
Requires: %{name} = %{EVRD}
|
|
|
|
%description gstreamer
|
|
This package contains GStreamer elements to interface with a
|
|
PipeWire media server.
|
|
|
|
%files gstreamer
|
|
%doc COPYING
|
|
%{_libdir}/gstreamer-1.0/libgstpipewire.so
|
|
|
|
#-------------------------------------------------------------------------
|
|
|
|
%prep
|
|
%autosetup -p1
|
|
|
|
%build
|
|
%meson \
|
|
-Ddocs=true \
|
|
-Dman=true \
|
|
-Dgstreamer=true \
|
|
-Dsystemd=true
|
|
%meson_build
|
|
|
|
%install
|
|
%meson_install
|
|
|
|
mkdir -p %{buildroot}%{_sysconfdir}/alsa/conf.d/
|
|
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
|
|
|
|
#install sysuser config
|
|
install -d %{buildroot}%{_sysusersdir}/
|
|
install -m0644 %{SOURCE1} %{buildroot}%{_sysusersdir}/%{name}.conf
|
|
|
|
# Load PipeWire's ABI compatible libraries instead of native ones
|
|
mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d
|
|
echo "%{_libdir}/pipewire-%{api}/jack" > %{buildroot}%{_sysconfdir}/ld.so.conf.d/pipewire-jack-%{_arch}.conf
|