pipewire/pipewire.spec

403 lines
12 KiB
RPMSpec
Raw Normal View History

%define commit 5497d2d907ed8614c2c0b6482ea709cc7314f301
%define commit_short %(echo %{commit} | head -c 6)
# For spec-helper
%define dont_remove_rpath 1
2020-10-05 22:59:15 +03:00
%define api 0.3
%define spa_api 0.2
%define major 0
%define libname %mklibname %{name} %{api} %{major}
%define devname %mklibname %{name} -d
# Some packages depend from "pulseaudio" or "jack",
# satisfy such dependencies but be sure to prive a much lower version
# to avoid taking priority over real pulseaudio or jack when
# version of PipeWire becomes higher.
%define fake_version 0.%{version}.fake
# (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.
2020-10-04 20:34:07 +09:00
# Do not process tons of files by typelib() generatir
# XXX Paths in typelib() generator must be fixed
%global __requires_exclude_from %{_datadir}/doc
%global __provides_exclude_from %{_datadir}/doc
2018-10-10 17:05:21 +03:00
Summary: Media Sharing Server
2020-10-05 22:59:15 +03:00
Name: pipewire
2022-04-15 22:35:44 +03:00
Version: 0.3.50
Release: 1
2020-10-04 20:34:07 +09:00
License: MIT
Group: Sound
2020-10-05 22:59:15 +03:00
Url: https://pipewire.org/
Source0: https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/%{version}/pipewire-%{version}.tar.gz
2020-10-04 20:34:07 +09:00
Source1: %{name}.sysusers.conf
BuildRequires: doxygen
BuildRequires: graphviz
2020-10-05 22:59:15 +03:00
BuildRequires: meson
BuildRequires: xmltoman
2021-09-06 01:18:30 +00:00
BuildRequires: python3-docutils
2020-10-05 22:59:15 +03:00
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(avahi-client)
2020-10-05 22:59:15 +03:00
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)
2021-09-06 01:18:30 +00:00
BuildRequires: pkgconfig(fdk-aac)
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libva)
2020-10-05 22:59:15 +03:00
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libudev)
BuildRequires: pkgconfig(libv4l2)
BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(readline)
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)
2021-02-23 15:06:27 +00:00
BuildRequires: pkgconfig(ncurses)
# to render text in pictures inside devel docs
BuildRequires: fonts-ttf-freefont
2020-10-04 20:34:07 +09:00
Requires: %{libname} = %{EVRD}
2018-10-10 17:05:21 +03:00
Requires: rtkit
# There are multiple implementations of media session server for pipewire:
# * pipewire-media-session (a minimal example)
# * wireplumber
# Wireplumber is being developed actively,
# upstream of pipewire is depreceating pipewire-media-session.
2022-04-21 00:39:42 +03:00
#Requires: pipewire-session-manager
Suggests: wireplumber
Recommends: %{name}-utils = %{EVRD}
Recommends: %{name}-alsa = %{EVRD}
Recommends: %{name}-jack = %{EVRD}
Recommends: %{name}-gstreamer = %{EVRD}
Recommends: %{name}-pulseaudio = %{EVRD}
Requires(post): /bin/systemd-sysusers
2018-10-10 17:05:21 +03:00
%description
PipeWire is a multimedia server for Linux and other Unix like operating
systems.
2021-02-25 20:35:21 +03:00
%files -f pipewire.lang
2021-03-14 19:52:18 +03:00
%license COPYING LICENSE
%doc README.md
2021-05-23 13:38:08 +03:00
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/%{name}.conf
%{_datadir}/%{name}/client*.conf
2020-10-05 22:59:15 +03:00
%{_bindir}/%{name}
2021-10-16 15:26:28 +09:00
%{_bindir}/pw-cli
2020-10-05 22:59:15 +03:00
%{_mandir}/man1/%{name}.1*
%{_mandir}/man5/%{name}.conf.5*
2020-10-04 20:34:07 +09:00
%{_sysusersdir}/%{name}.conf
%{_userunitdir}/%{name}.socket
%{_userunitdir}/%{name}.service
2021-05-23 13:38:08 +03:00
%dir %{_datadir}/alsa-card-profile
%dir %{_datadir}/alsa-card-profile/mixer
%dir %{_datadir}/alsa-card-profile/mixer/paths
%dir %{_datadir}/alsa-card-profile/mixer/profile-sets
%{_datadir}/alsa-card-profile/mixer/paths/*
%{_datadir}/alsa-card-profile/mixer/profile-sets/*
%{_udevrulesdir}/90-%{name}-alsa.rules
%dir %{_libdir}/%{name}-%{api}
%{_libdir}/%{name}-%{api}/lib%{name}-*.so
%dir %{_libdir}/%{name}-%{api}/v4l2
%{_libdir}/%{name}-%{api}/v4l2/libpw-v4l2.so
%{_libdir}/spa-%{spa_api}
2021-05-23 13:38:08 +03:00
%{_datadir}/pipewire/filter-chain
2021-09-24 21:11:01 +00:00
%{_datadir}/spa-0.2/bluez5/bluez-hardware.conf
2022-02-03 18:47:20 +00:00
%{_datadir}/%{name}/minimal.conf
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-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}
2021-03-14 19:52:18 +03:00
%license COPYING LICENSE
%doc README.md
2020-10-05 22:59:15 +03:00
%{_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-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}
Requires: %{name}-alsa = %{EVRD}
Requires: %{name}-jack = %{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}
2021-03-14 19:52:18 +03:00
%license COPYING LICENSE
%doc README.md
2020-10-05 22:59:15 +03:00
%{_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
%{_defaultdocdir}/%{name}/html
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: Sound
2020-10-05 22:59:15 +03:00
Requires: %{name} = %{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
2021-03-14 19:52:18 +03:00
%license COPYING LICENSE
%doc README.md
%{_bindir}/pw-link
2021-04-03 00:27:46 +03:00
%{_bindir}/pw-loopback
%{_bindir}/pw-mon
%{_bindir}/pw-metadata
2021-09-24 21:11:01 +00:00
%{_bindir}/pw-dsdplay
%{_bindir}/pw-mididump
%{_bindir}/pw-midiplay
%{_bindir}/pw-midirecord
%{_bindir}/pw-dot
2021-02-23 15:06:27 +00:00
%{_bindir}/pw-top
%{_bindir}/pw-cat
%{_bindir}/pw-play
%{_bindir}/pw-profiler
%{_bindir}/pw-record
%{_bindir}/pw-reserve
2021-02-09 07:41:23 +00:00
%{_bindir}/pw-dump
%{_bindir}/pw-v4l2
%{_bindir}/spa-acp-tool
%{_bindir}/spa-inspect
%{_bindir}/spa-monitor
%{_bindir}/spa-resample
2021-02-23 15:06:27 +00:00
%{_bindir}/spa-json-dump
%{_mandir}/man1/pw-mon.1*
%{_mandir}/man1/pw-cli.1*
%{_mandir}/man1/pw-cat.1*
%{_mandir}/man1/pw-dot.1*
2022-04-15 22:35:44 +03:00
%{_mandir}/man1/pw-link.1*
%{_mandir}/man1/pw-metadata.1*
%{_mandir}/man1/pw-mididump.1*
%{_mandir}/man1/pw-profiler.1*
2022-04-15 22:35:44 +03:00
%{_mandir}/man1/pw-top.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
%package jack
2020-10-05 22:59:15 +03:00
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}
Provides: jack = %{fake_version}
Provides: jack%{_isa} = %{fake_version}
# jackit is a provide of jack
Provides: jackit = %{fake_version}
Provides: jackit%{_isa} = %{fake_version}
%description jack
2020-10-05 22:59:15 +03:00
This package provides a JACK implementation based on PipeWire.
2020-10-04 20:34:07 +09:00
%files jack
2021-03-14 19:52:18 +03:00
%license COPYING LICENSE
%doc README.md
%{_bindir}/pw-jack
%{_mandir}/man1/pw-jack.1*
%config(noreplace) %{_sysconfdir}/ld.so.conf.d/pipewire-jack-%{_arch}.conf
%{_datadir}/pipewire/jack.conf
2020-10-05 22:59:15 +03:00
#-------------------------------------------------------------------------
%package -n %{libjack}
Summary: PipeWire Jack implementation
2020-10-05 22:59:15 +03:00
Group: System/Libraries
Requires: %{name}-jack%{_isa} = %{EVRD}
# prefer it over native Jack library if pipewire is installed
Enhances: pipewire
2020-10-05 22:59:15 +03:00
%description -n %{libjack}
libjack.so.0 from PipeWire, ABI-compatible with libjack.so.0 from Jack
2020-10-05 22:59:15 +03:00
%files -n %{libjack}
2021-03-14 19:52:18 +03:00
%license COPYING LICENSE
%doc README.md
%{_libdir}/pipewire-%{api}/jack/libjack.so.0*
2020-10-05 22:59:15 +03:00
#-------------------------------------------------------------------------
%package -n %{libjacknet}
Summary: PipeWire Jack implementation
2020-10-05 22:59:15 +03:00
Group: System/Libraries
Requires: %{name}-jack%{_isa} = %{EVRD}
# prefer it over native Jack library if pipewire is installed
Enhances: pipewire
2020-10-05 22:59:15 +03:00
%description -n %{libjacknet}
libjacknet.so.0 from PipeWire, ABI-compatible with libjacknet.so.0 from Jack
2018-10-10 17:05:21 +03:00
2020-10-05 22:59:15 +03:00
%files -n %{libjacknet}
2021-03-14 19:52:18 +03:00
%license COPYING LICENSE
%doc README.md
%{_libdir}/pipewire-%{api}/jack/libjacknet.so.0*
2020-10-04 20:34:07 +09:00
#-------------------------------------------------------------------------
2020-10-05 22:59:15 +03:00
%package -n %{libjackserver}
Summary: PipeWire Jack implementation
2020-10-05 22:59:15 +03:00
Group: System/Libraries
Requires: %{name}-jack%{_isa} = %{EVRD}
# prefer it over native Jack library if pipewire is installed
Enhances: pipewire
2020-10-05 22:59:15 +03:00
%description -n %{libjackserver}
libjackserver.so.0 from PipeWire, ABI-compatible with libjackserver.so.0 from Jack
2020-10-05 22:59:15 +03:00
%files -n %{libjackserver}
2021-03-14 19:52:18 +03:00
%license COPYING LICENSE
%doc README.md
%{_libdir}/pipewire-%{api}/jack/libjackserver.so.0*
2020-10-05 22:59:15 +03:00
#-------------------------------------------------------------------------
%package pulseaudio
Summary: PipeWire PulseAudio implementation
Group: System/Libraries
Requires: %{name} = %{EVRD}
# compat with Fedora
Provides: %{name}-pulse = %{EVRD}
Provides: %{name}-pulse%{_isa} = %{EVRD}
Provides: pulseaudio = %{fake_version}
Provides: pulseaudio%{_isa} = %{fake_version}
2020-10-05 22:59:15 +03:00
# Files in %%_userunitdir were moved to here,
# make upgrades smooth
OrderWithRequires(pre): %{name} >= 0.3.23-2.gitcc1275.2
2020-10-05 22:59:15 +03:00
%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.
2020-10-05 22:59:15 +03:00
%files pulseaudio
2021-03-14 19:52:18 +03:00
%license COPYING LICENSE
%doc README.md
# pipewire-pulse imitates real pulseaudio, libpulse.so.0 from pulseaudio
# is used by applications to work with this fake PulseAudio server
%{_bindir}/pipewire-pulse
%{_userunitdir}/%{name}-pulse.service
%{_userunitdir}/%{name}-pulse.socket
%{_datadir}/pipewire/pipewire-pulse.conf
%{_mandir}/man1/pipewire-pulse.1*
2020-10-05 22:59:15 +03:00
%post pulseaudio
%systemd_user_post pipewire-pulse.service
%systemd_user_post pipewire-pulse.socket
2020-10-04 20:34:07 +09:00
#-------------------------------------------------------------------------
2020-10-05 22:59:15 +03:00
%package alsa
Summary: PipeWire media server ALSA support
Group: Sound
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
2021-03-14 19:52:18 +03:00
%license COPYING LICENSE
%doc README.md
2020-10-05 22:59:15 +03:00
%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
Group: Sound
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 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
2021-03-14 19:52:18 +03:00
%license COPYING LICENSE
%doc README.md
%{_libdir}/gstreamer-1.0/libgstpipewire.so
2020-10-04 20:34:07 +09:00
#-------------------------------------------------------------------------
2018-10-10 17:05:21 +03:00
%prep
2021-08-04 08:53:05 +00:00
%autosetup -p1 -n %{name}-%{version}
2018-10-10 17:05:21 +03:00
%build
2020-10-04 20:34:07 +09:00
%meson \
-Dsession-managers="[]" \
-Ddocs="enabled" \
-Dman="enabled" \
-Dgstreamer="enabled" \
2021-09-06 01:18:30 +00:00
-Dsystemd="enabled" \
-Dffmpeg="enabled" \
-Dvulkan="enabled" \
-Davahi="enabled" \
-Dlibusb="enabled"
2018-10-10 17:05:21 +03:00
%meson_build
%install
%meson_install
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
#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
2021-02-25 20:35:21 +03:00
%find_lang pipewire