diff --git a/.gitignore b/.gitignore index 5522c6b..7da56eb 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/pipewire-0.3.32.tar.gz +SOURCES/pipewire-0.3.40.tar.gz diff --git a/.pipewire.metadata b/.pipewire.metadata index 65ca93a..4637b90 100644 --- a/.pipewire.metadata +++ b/.pipewire.metadata @@ -1 +1 @@ -74eb99864be9cd3c2159bca72083232a360d3b96 SOURCES/pipewire-0.3.32.tar.gz +20dbcf8cd6bb7151b3fd2871756ca2ad91f09f77 SOURCES/pipewire-0.3.40.tar.gz diff --git a/SOURCES/pipewire-jack-allow-old-meson.patch b/SOURCES/pipewire-jack-allow-old-meson.patch new file mode 100644 index 0000000..3707258 --- /dev/null +++ b/SOURCES/pipewire-jack-allow-old-meson.patch @@ -0,0 +1,58 @@ +From dda2edc0641b57cd0315806a746c787e2c40cefb Mon Sep 17 00:00:00 2001 +From: Wim Taymans +Date: Mon, 15 Nov 2021 10:57:22 +0100 +Subject: [PATCH] jack: allow build on old meson of jack.pc + +Warn about reduced functionality. +--- + pipewire-jack/src/meson.build | 31 +++++++++++++++++++------------ + 1 file changed, 19 insertions(+), 12 deletions(-) + +diff --git a/pipewire-jack/src/meson.build b/pipewire-jack/src/meson.build +index cdc147ba4..3709070e1 100644 +--- a/pipewire-jack/src/meson.build ++++ b/pipewire-jack/src/meson.build +@@ -71,21 +71,28 @@ pipewire_jackserver = shared_library('jacknet', + + if get_option('jack-devel') == true + if meson.version().version_compare('<0.59.0') +- error( ++ warning( + ''' +- Before version 0.59.0 Meson creates a wrong jack pkg-config file. +- For that reason this is now an error. Please update Meson, +- if you want to have JACK development files. ++ Before version 0.59.0 Meson creates a wrong jack pkg-config file ++ for server development. Please update Meson, if you want to have ++ JACK development files for server. + ''') ++ pkgconfig.generate(filebase : 'jack', ++ libraries : [pipewire_jack, pipewire_jackserver], ++ name : 'jack', ++ description : 'PipeWire JACK API', ++ version : '1.9.17', ++ extra_cflags : '-D_REENTRANT', ++ variables: ['server_libs=-L${libdir} -ljackserver']) ++ else ++ pkgconfig.generate(filebase : 'jack', ++ libraries : [pipewire_jack, pipewire_jackserver], ++ name : 'jack', ++ description : 'PipeWire JACK API', ++ version : '1.9.17', ++ extra_cflags : '-D_REENTRANT', ++ unescaped_variables: ['server_libs=-L${libdir} -ljackserver']) + endif +- +- pkgconfig.generate(filebase : 'jack', +- libraries : [pipewire_jack, pipewire_jackserver], +- name : 'jack', +- description : 'PipeWire JACK API', +- version : '1.9.17', +- extra_cflags : '-D_REENTRANT', +- unescaped_variables: ['server_libs=-L${libdir} -ljackserver']) + endif + + if sdl_dep.found() +-- +GitLab + diff --git a/SPECS/pipewire.spec b/SPECS/pipewire.spec index 1977684..ca9e9ee 100644 --- a/SPECS/pipewire.spec +++ b/SPECS/pipewire.spec @@ -1,6 +1,6 @@ %global majorversion 0 %global minorversion 3 -%global microversion 32 +%global microversion 40 %global apiversion 0.3 %global spaversion 0.2 @@ -8,7 +8,7 @@ %global libversion %{soversion}.%(bash -c '((intversion = (%{minorversion} * 100) + %{microversion})); echo ${intversion}').0 # For rpmdev-bumpspec and releng automation -%global baserelease 3 +%global baserelease 1 #global snapdate 20210107 #global gitcommit b17db2cebc1a5ab2c01851d29c05f79cd2f262bb @@ -22,8 +22,8 @@ # Build conditions for various features %bcond_without alsa -%bcond_without media_session %bcond_without vulkan +%bcond_without v4l2 # Features disabled for RHEL 8 %if 0%{?rhel} && 0%{?rhel} < 9 @@ -41,6 +41,13 @@ %bcond_without jackserver_plugin %endif +# Disabled for RHEL < 10 and Fedora < 36 +%if (0%{?rhel} && 0%{?rhel} < 10) || (0%{?fedora} && 0%{?fedora} < 36) +%bcond_with libcamera_plugin +%else +%bcond_without libcamera_plugin +%endif + Name: pipewire Summary: Media Sharing Server Version: %{majorversion}.%{minorversion}.%{microversion} @@ -59,6 +66,11 @@ Source0: https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/%{ver ## fedora patches +## rhel patches +### Allow Meson < 0.59.0 to work for pipewire-jack +### N.B.: Remove this patch once Meson is upgraded in RHEL +Patch50001: pipewire-jack-allow-old-meson.patch + BuildRequires: gettext BuildRequires: meson >= 0.49.0 BuildRequires: gcc @@ -83,11 +95,11 @@ BuildRequires: pkgconfig(fdk-aac) BuildRequires: pkgconfig(vulkan) %endif BuildRequires: pkgconfig(bluez) -BuildRequires: systemd-devel >= 184 +BuildRequires: systemd-devel BuildRequires: alsa-lib-devel BuildRequires: libv4l-devel BuildRequires: doxygen -BuildRequires: xmltoman +BuildRequires: python-docutils BuildRequires: graphviz BuildRequires: sbc-devel BuildRequires: libsndfile-devel @@ -96,13 +108,16 @@ BuildRequires: pulseaudio-libs-devel BuildRequires: avahi-devel BuildRequires: pkgconfig(webrtc-audio-processing) >= 0.2 BuildRequires: libusb-devel +BuildRequires: readline-devel Requires(pre): shadow-utils Requires: %{name}-libs%{?_isa} = %{version}-%{release} -Requires: systemd >= 184 +Requires: systemd Requires: rtkit # A virtual Provides so we can swap session managers Requires: pipewire-session-manager +# Prefer WirePlumber for session manager +Suggests: wireplumber %description PipeWire is a multimedia server for Linux and other Unix like operating @@ -152,22 +167,6 @@ Requires: %{name}-libs%{?_isa} = %{version}-%{release} %description utils This package contains command line utilities for the PipeWire media server. -%if %{with media_session} -%package media-session -Summary: PipeWire Media Session Manager -License: MIT -Recommends: %{name}%{?_isa} = %{version}-%{release} -Obsoletes: %{name}-libpulse < %{version}-%{release} - -# Virtual Provides to support swapping between PipeWire session manager implementations -Provides: pipewire-session-manager -Conflicts: pipewire-session-manager - -%description media-session -This package contains the reference Media Session Manager for the -PipeWire media server. -%endif - %if %{with alsa} %package alsa Summary: PipeWire media server ALSA support @@ -238,6 +237,21 @@ Requires: jack-audio-connection-kit This package contains the PipeWire spa plugin to connect to a JACK server. %endif +%if %{with libcamera_plugin} +%package plugin-libcamera +Summary: PipeWire media server libcamera support +License: MIT +BuildRequires: libcamera-devel +BuildRequires: libdrm-devel +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: libcamera +Requires: libdrm + +%description plugin-libcamera +This package contains the PipeWire spa plugin to access cameras through libcamera. +%endif + %if %{with pulse} %package pulseaudio Summary: PipeWire PulseAudio implementation @@ -276,6 +290,18 @@ Provides: pulseaudio-module-jack This package provides a PulseAudio implementation based on PipeWire %endif +%if %{with v4l2} +%package v4l2 +Summary: PipeWire media server v4l2 LD_PRELOAD support +License: MIT +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description v4l2 +This package contains an LD_PRELOAD library that redirects v4l2 applications to +PipeWire. +%endif + %prep %autosetup -p1 %{?snapdate:-n %{name}-%{gitcommit}} @@ -283,7 +309,7 @@ This package provides a PulseAudio implementation based on PipeWire %meson \ -D docs=enabled -D man=enabled -D gstreamer=enabled -D systemd=enabled \ -D gstreamer-device-provider=disabled -D sdl2=disabled \ - -D libcamera=disabled -D audiotestsrc=disabled -D videotestsrc=disabled \ + -D audiotestsrc=disabled -D videotestsrc=disabled \ -D volume=disabled -D bluez5-codec-aptx=disabled -D roc=disabled \ %ifarch s390x -D bluez5-codec-ldac=disabled \ @@ -291,7 +317,8 @@ This package provides a PulseAudio implementation based on PipeWire %{!?with_media_session:-D session-managers=[]} \ %{!?with_jack:-D pipewire-jack=disabled} \ %{!?with_jackserver_plugin:-D jack=disabled} \ - %{?with_jack:-D jack-devel=enabled} \ + %{!?with_libcamera_plugin:-D libcamera=disabled} \ + %{?with_jack:-D jack-devel=true} \ %{!?with_alsa:-D pipewire-alsa=disabled} \ %{?with_vulkan:-D vulkan=enabled} %meson_build @@ -305,10 +332,6 @@ echo %{_libdir}/pipewire-%{apiversion}/jack/ > %{buildroot}%{_sysconfdir}/ld.so. %else rm %{buildroot}%{_datadir}/pipewire/jack.conf -%if %{with media_session} -rm %{buildroot}%{_datadir}/pipewire/media-session.d/with-jack -%endif - %endif %if %{with alsa} @@ -317,11 +340,6 @@ cp %{buildroot}%{_datadir}/alsa/alsa.conf.d/50-pipewire.conf \ %{buildroot}%{_sysconfdir}/alsa/conf.d/50-pipewire.conf cp %{buildroot}%{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf \ %{buildroot}%{_sysconfdir}/alsa/conf.d/99-pipewire-default.conf - -%if %{with media_session} -touch %{buildroot}%{_datadir}/pipewire/media-session.d/with-alsa -%endif - %endif %if ! %{with pulse} @@ -329,11 +347,6 @@ touch %{buildroot}%{_datadir}/pipewire/media-session.d/with-alsa rm %{buildroot}%{_bindir}/pipewire-pulse rm %{buildroot}%{_userunitdir}/pipewire-pulse.* rm %{buildroot}%{_datadir}/pipewire/pipewire-pulse.conf - -%if %{with media_session} -rm %{buildroot}%{_datadir}/pipewire/media-session.d/with-pulseaudio -%endif - %endif %find_lang %{name} @@ -344,10 +357,6 @@ mv -fv %{buildroot}/lib/udev/rules.d/90-pipewire-alsa.rules %{buildroot}%{_prefi %check -%ifarch s390x -# FIXME: s390x FAIL: pw-test-stream, pw-test-endpoint -%global tests_nonfatal 1 -%endif %meson_test || TESTS_ERROR=$? if [ "${TESTS_ERROR}" != "" ]; then echo "test failed" @@ -376,11 +385,6 @@ systemctl --no-reload preset --global pipewire.socket >/dev/null 2>&1 || : %systemd_user_post pipewire-pulse.socket %endif -%if %{with media_session} -%post media-session -%systemd_user_post pipewire-media-session.service -%endif - %files %license LICENSE COPYING %doc README.md @@ -392,29 +396,6 @@ systemctl --no-reload preset --global pipewire.socket >/dev/null 2>&1 || : %{_datadir}/pipewire/filter-chain/*.conf %{_mandir}/man5/pipewire.conf.5* -%if %{with media_session} -%files media-session -%{_bindir}/pipewire-media-session -%{_userunitdir}/pipewire-media-session.service -%dir %{_datadir}/pipewire/media-session.d/ -%{_datadir}/pipewire/media-session.d/alsa-monitor.conf -%{_datadir}/pipewire/media-session.d/bluez-hardware.conf -%{_datadir}/pipewire/media-session.d/bluez-monitor.conf -%{_datadir}/pipewire/media-session.d/media-session.conf -%{_datadir}/pipewire/media-session.d/v4l2-monitor.conf - -%if %{with alsa} -%{_datadir}/pipewire/media-session.d/with-alsa -%endif -%if %{with jack} -%{_datadir}/pipewire/media-session.d/with-jack -%endif -%if %{with pulse} -%{_datadir}/pipewire/media-session.d/with-pulseaudio -%endif - -%endif - %files libs -f %{name}.lang %license LICENSE COPYING %doc README.md @@ -424,6 +405,8 @@ systemctl --no-reload preset --global pipewire.socket >/dev/null 2>&1 || : %dir %{_datadir}/alsa-card-profile/mixer/ %{_datadir}/alsa-card-profile/mixer/paths/ %{_datadir}/alsa-card-profile/mixer/profile-sets/ +%dir %{_datadir}/spa-0.2/ +%{_datadir}/spa-0.2/bluez5/bluez-hardware.conf %{_prefix}/lib/udev/rules.d/90-pipewire-alsa.rules %dir %{_libdir}/spa-%{spaversion} %{_libdir}/spa-%{spaversion}/alsa/ @@ -456,6 +439,7 @@ systemctl --no-reload preset --global pipewire.socket >/dev/null 2>&1 || : %files utils %{_bindir}/pw-mon %{_bindir}/pw-metadata +%{_bindir}/pw-dsdplay %{_bindir}/pw-mididump %{_bindir}/pw-midiplay %{_bindir}/pw-midirecord @@ -517,14 +501,30 @@ systemctl --no-reload preset --global pipewire.socket >/dev/null 2>&1 || : %{_libdir}/spa-%{spaversion}/jack/ %endif +%if %{with libcamera_plugin} +%files plugin-libcamera +%{_libdir}/spa-%{spaversion}/libcamera/ +%endif + %if %{with pulse} %files pulseaudio %{_bindir}/pipewire-pulse +%{_mandir}/man1/pipewire-pulse.1* %{_userunitdir}/pipewire-pulse.* %{_datadir}/pipewire/pipewire-pulse.conf %endif +%if %{with v4l2} +%files v4l2 +%{_bindir}/pw-v4l2 +%{_libdir}/pipewire-%{apiversion}/v4l2/libpw-v4l2.so +%endif + %changelog +* Mon Nov 15 2021 Neal Gompa - 0.3.40-1 +- Update to version 0.3.40 which drops media-session service for WirePlumber + Resolves: rhbz#2022694 + * Thu Sep 16 2021 Wim Taymans - 0.3.32-3 - Perform default systemd actions for media-session service. Resolves: rhbz#1992712