$ git diff --patch-with-stat --summary 9e4b35797869d94b72c9a802324d1735c89675c3..364b475ddcedd6b08865ba3a0572a94554f3a2f0
.abf.yml | 4 +-
fix-linkage.patch | 12 ++++++
pipewire-dont-run-for-system-users.patch | 34 +++++++++++++++++
pipewire.spec | 63 +++++++++++++++++++++-----------
4 files changed, 90 insertions(+), 23 deletions(-)
create mode 100644 fix-linkage.patch
create mode 100644 pipewire-dont-run-for-system-users.patch
diff --git a/.abf.yml b/.abf.yml
index 5f31899..67dcd53 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -1,3 +1,3 @@
sources:
- media-session-master.tar.bz2: 6086838daa755bcc01f87edc69a95d84c54c35c5
- pipewire-0.3.71.tar.bz2: a3fbeada5ee36c3bcb670c759df75ba2593c0cfb
+ media-session-20250213.tar.bz2: f97c7916a0ff513ae6cae29b3760975fb686bfdb
+ pipewire-1.4.3.tar.bz2: 5b661932ce381776d57a1d34c453a1f035c40151
diff --git a/fix-linkage.patch b/fix-linkage.patch
new file mode 100644
index 0000000..2cad7d7
--- /dev/null
+++ b/fix-linkage.patch
@@ -0,0 +1,12 @@
+diff -up pipewire-1.1.81/spa/plugins/bluez5/meson.build.omv~ pipewire-1.1.81/spa/plugins/bluez5/meson.build
+--- pipewire-1.1.81/spa/plugins/bluez5/meson.build.omv~ 2024-05-16 16:46:57.667089186 +0200
++++ pipewire-1.1.81/spa/plugins/bluez5/meson.build 2024-05-16 16:47:33.907490089 +0200
+@@ -72,7 +72,7 @@ if get_option('bluez5-codec-lc3').allowe
+ endif
+
+ # The library uses GObject, and cannot be unloaded
+-bluez5_link_args = [ '-Wl,-z', '-Wl,nodelete' ]
++bluez5_link_args = [ '-Wl,-z', '-Wl,nodelete', '-latomic' ]
+
+ bluez5lib = shared_library('spa-bluez5',
+ bluez5_sources,
diff --git a/pipewire-dont-run-for-system-users.patch b/pipewire-dont-run-for-system-users.patch
new file mode 100644
index 0000000..95f3333
--- /dev/null
+++ b/pipewire-dont-run-for-system-users.patch
@@ -0,0 +1,34 @@
+diff -up pipewire-1.3.82/src/daemon/systemd/user/filter-chain.service.in.omv~ pipewire-1.3.82/src/daemon/systemd/user/filter-chain.service.in
+--- pipewire-1.3.82/src/daemon/systemd/user/filter-chain.service.in.omv~ 2025-02-13 16:32:16.018563242 +0100
++++ pipewire-1.3.82/src/daemon/systemd/user/filter-chain.service.in 2025-02-13 16:32:32.046365463 +0100
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=PipeWire filter chain daemon
++ConditionUser=!@system
+
+ After=pipewire.service pipewire-session-manager.service
+ BindsTo=pipewire.service
+diff -up pipewire-1.3.82/src/daemon/systemd/user/pipewire-pulse.service.in.omv~ pipewire-1.3.82/src/daemon/systemd/user/pipewire-pulse.service.in
+--- pipewire-1.3.82/src/daemon/systemd/user/pipewire-pulse.service.in.omv~ 2025-02-13 16:31:51.375537341 +0100
++++ pipewire-1.3.82/src/daemon/systemd/user/pipewire-pulse.service.in 2025-02-13 16:32:09.666207669 +0100
+@@ -15,6 +15,8 @@ Description=PipeWire PulseAudio
+ # socket-service relationship, see systemd.socket(5).
+ Requires=pipewire-pulse.socket
+ ConditionUser=!root
++ConditionUser=!sddm
++ConditionUser=!@system
+ Wants=pipewire.service pipewire-session-manager.service
+ After=pipewire.service pipewire-session-manager.service
+ Conflicts=pulseaudio.service
+diff -up pipewire-1.3.82/src/daemon/systemd/user/pipewire.service.in.omv~ pipewire-1.3.82/src/daemon/systemd/user/pipewire.service.in
+--- pipewire-1.3.82/src/daemon/systemd/user/pipewire.service.in.omv~ 2025-02-13 16:23:03.568936848 +0100
++++ pipewire-1.3.82/src/daemon/systemd/user/pipewire.service.in 2025-02-13 16:28:59.893717793 +0100
+@@ -1,5 +1,8 @@
+ [Unit]
+ Description=PipeWire Multimedia Service
++ConditionUser=!root
++ConditionUser=!sddm
++ConditionUser=!@system
+
+ # We require pipewire.socket to be active before starting the daemon, because
+ # while it is possible to use the service without the socket, it is not clear
diff --git a/pipewire.spec b/pipewire.spec
index 5d3efa2..a1607ce 100644
--- a/pipewire.spec
+++ b/pipewire.spec
@@ -1,4 +1,4 @@
-# enable_by_default: Toggle if pipewire should be enabled by default and/or replace PulseAudio.
+ # enable_by_default: Toggle if pipewire should be enabled by default and/or replace PulseAudio.
# 0 = no
# 1 = yes
%define enable_by_default 1
@@ -16,32 +16,36 @@
%define spa_api 0.2
%define api 0.3
-%define git-media-session 20230112
+%define git_media_session 20250213
%define media_session_ver master
%define major 0
-%define libname %mklibname %{name} %{api} %{major}
-%define devname %mklibname %{name} -d
+%define oldlibname %mklibname pipewire 0.3 0
+%define libname %mklibname pipewire
+%define devname %mklibname pipewire -d
-%define lib32name %mklib32name %{name} %{api} %{major}
-%define dev32name %mklib32name %{name} -d
+%define oldlib32name %mklib32name pipewire 0.3 0
+%define lib32name %mklib32name pipewire
+%define dev32name %mklib32name pipewire -d
Name: pipewire
Summary: Media Sharing Server
-Version: 0.3.71
-Release: 2
+Version: 1.4.3
+Release: 1
License: LGPLv2+
Group: System/Servers
URL: https://pipewire.org/
Source0: https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/%{version}/%{name}-%{version}.tar.bz2
# Mirror
#Source0: https://github.com/PipeWire/pipewire/archive/%{version}/%{name}-%{version}.tar.gz
-Source4: https://gitlab.freedesktop.org/pipewire/media-session/-/archive/%{media_session_ver}/media-session-%{media_session_ver}.tar.bz2
+Source4: https://gitlab.freedesktop.org/pipewire/media-session/-/archive/%{media_session_ver}/media-session-%{media_session_ver}.tar.bz2#/media-session-%{git_media_session}.tar.bz2
Source10: pipewire.sysusers
Patch1: pipewire-0.3.35-tests-compile.patch
+Patch2: fix-linkage.patch
+Patch3: pipewire-dont-run-for-system-users.patch
# Upstream patches:
-Patch101: 0001-Build-media-session-from-local-tarbal.patch
+Patch101: 0001-Build-media-session-from-local-tarbal.patch
BuildRequires: doxygen
BuildRequires: gettext
@@ -50,7 +54,8 @@ BuildRequires: gcc
%endif
BuildRequires: graphviz
BuildRequires: meson
-BuildRequires: roc-toolkit-devel >= 0.2.1
+BuildRequires: atomic-devel
+BuildRequires: pkgconfig(roc) >= 0.3.0
BuildRequires: openfec-devel
BuildRequires: pkgconfig(libpcap)
BuildRequires: pkgconfig(libcap)
@@ -75,11 +80,14 @@ BuildRequires: pkgconfig(libcamera)
%endif
BuildRequires: pkgconfig(libcanberra)
BuildRequires: pkgconfig(libdrm)
+BuildRequires: pkgconfig(libffado)
BuildRequires: pkgconfig(libfreeaptx)
BuildRequires: pkgconfig(libopenaptx)
BuildRequires: pkgconfig(libavcodec)
+BuildRequires: pkgconfig(libebur128)
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libusb-1.0)
+BuildRequires: pkgconfig(lc3)
BuildRequires: pkgconfig(libuv)
BuildRequires: pkgconfig(libva)
BuildRequires: pkgconfig(libv4l2)
@@ -88,6 +96,7 @@ BuildRequires: pkgconfig(libmysofa)
BuildRequires: pkgconfig(sbc)
BuildRequires: pkgconfig(sdl2)
BuildRequires: pkgconfig(openssl)
+BuildRequires: pkgconfig(opus)
BuildRequires: pkgconfig(jack)
BuildRequires: pkgconfig(vulkan)
BuildRequires: pkgconfig(sndfile)
@@ -96,9 +105,7 @@ BuildRequires: pkgconfig(speexdsp)
BuildRequires: pkgconfig(ModemManager)
BuildRequires: pkgconfig(ncurses)
BuildRequires: pkgconfig(readline)
-# PipeWire support for now only webrtc 0.3.1. So let's pull old version of this package. As soon as they add support for v1, let's use new.
-BuildRequires: pkgconfig(webrtc-audio-processing)
-#BuildRequires: pkgconfig(webrtc-audio-processing-1)
+BuildRequires: pkgconfig(webrtc-audio-processing-1)
BuildRequires: pkgconfig(vulkan)
BuildRequires: vulkan-headers
BuildRequires: xmltoman
@@ -110,6 +117,7 @@ BuildRequires: pulseaudio-utils
%if %{with compat32}
BuildRequires: libc6
+BuildRequires: atomic-devel
BuildRequires: libx11-xcb1
BuildRequires: devel(libasound)
BuildRequires: devel(libbluetooth)
@@ -180,6 +188,7 @@ systems.
%package -n %{libname}
Summary: Libraries for PipeWire clients
Group: System/Libraries
+%rename %{oldlibname}
%description -n %{libname}
This package contains the runtime libraries for any application that
@@ -203,6 +212,7 @@ with a PipeWire media server.
%package -n %{lib32name}
Summary: 32-bit libraries for PipeWire clients
Group: System/Libraries
+%rename %{oldlib32name}
%description -n %{lib32name}
This package contains the 32-bit runtime libraries for any application that
@@ -309,7 +319,7 @@ PipeWire media server.
%prep
%autosetup -T -b0 -p1
mkdir subprojects/packagefiles
-cp %{SOURCE4} subprojects/packagefiles/
+cp %{SOURCE4} subprojects/packagefiles/media-session-%{media_session_ver}.tar.bz2
%if %{with compat32}
%meson32 \
@@ -321,6 +331,8 @@ cp %{SOURCE4} subprojects/packagefiles/
-Dtests=disabled \
-Dexamples=disabled \
-Dgstreamer=enabled \
+ -Dselinux=disabled \
+ -Dsnap=disabled \
-Dsystemd=disabled \
-Dsystemd-user-service=disabled \
-Djack=enabled \
@@ -330,6 +342,7 @@ cp %{SOURCE4} subprojects/packagefiles/
-Dlibpulse=enabled \
-Dvulkan=enabled \
-Dbluez5=enabled \
+ -Dbluez5-codec-lc3=disabled \
-Dbluez5-codec-lc3plus=disabled \
-Dbluez5-codec-aac=disabled \
-Dbluez5-codec-aptx=disabled \
@@ -338,6 +351,8 @@ cp %{SOURCE4} subprojects/packagefiles/
-Dlibcanberra=disabled \
-Dlibcamera=disabled \
-Dlibmysofa=disabled \
+ -Dlibffado=disabled \
+ -Debur128=disabled \
-Droc=disabled \
-Dffmpeg=enabled \
-Dvolume=enabled \
@@ -352,6 +367,8 @@ cp %{SOURCE4} subprojects/packagefiles/
-Ddocs=enabled \
-Dman=enabled \
-Dgstreamer=enabled \
+ -Dselinux=disabled \
+ -Dsnap=disabled \
-Dsystemd=enabled \
-Dsystemd-user-service=enabled \
-Djack=enabled \
@@ -360,6 +377,7 @@ cp %{SOURCE4} subprojects/packagefiles/
-Dlibpulse=enabled \
-Dvulkan=enabled \
-Dbluez5=enabled \
+ -Dbluez5-codec-lc3=enabled \
-Dbluez5-codec-lc3plus=disabled \
-Dbluez5-codec-aac=disabled \
-Dbluez5-codec-aptx=enabled \
@@ -402,12 +420,9 @@ install -D -p -m 0644 %{S:10} %{buildroot}%{_sysusersdir}/%{name}.conf
#check
#meson_test
-%pre
-%sysusers_create_package %{name} %{S:10}
-
# Attention! Achtung! Uwaga! Attenzione! #
###########################################################################
-# PipeWire can replace (and probably will) PulseAudio and become default #
+# PipeWire replaced PulseAudio and become default #
# It is currently enabled, to deactivate it togle ON switch #
# Don't do this without consulting with OMV Team. #
###########################################################################
@@ -449,11 +464,13 @@ install -D -p -m 0644 %{S:10} %{buildroot}%{_sysusersdir}/%{name}.conf
%{_datadir}/pipewire/client.conf
%{_datadir}/pipewire/pipewire.conf.avail/10-rates.conf
%{_datadir}/pipewire/pipewire.conf.avail/20-upmix.conf
+%{_datadir}/pipewire/pipewire.conf.avail/50-raop.conf
%{_datadir}/pipewire/client.conf.avail/20-upmix.conf
-%{_datadir}/pipewire/client-rt.conf.avail/20-upmix.conf
-%{_datadir}/pipewire/client-rt.conf
+#{_datadir}/pipewire/client-rt.conf.avail/20-upmix.conf
+#{_datadir}/pipewire/client-rt.conf
%{_datadir}/pipewire/jack.conf
%{_datadir}/pipewire/pipewire-aes67.conf
+%{_datadir}/pipewire/pipewire-vulkan.conf
%dir %{_datadir}/pipewire/media-session.d
%{_datadir}/pipewire/media-session.d/*.conf
%{_datadir}/pipewire/media-session.d/with-audio
@@ -462,6 +479,7 @@ install -D -p -m 0644 %{S:10} %{buildroot}%{_sysusersdir}/%{name}.conf
%{_bindir}/pipewire-avb
%{_bindir}/%{name}-media-session
%{_bindir}/pipewire-aes67
+%{_bindir}/pipewire-vulkan
%{_sysusersdir}/%{name}.conf
%config(noreplace) %{_sysconfdir}/security/limits.d/*.conf
%dir %{_libdir}/%{name}-%{api}/
@@ -483,6 +501,7 @@ install -D -p -m 0644 %{S:10} %{buildroot}%{_sysusersdir}/%{name}.conf
%{_datadir}/pipewire/filter-chain.conf
%{_datadir}/pipewire/pipewire-avb.conf
%{_datadir}/pipewire/minimal.conf
+%{_datadir}/glib-2.0/schemas/org.freedesktop.pulseaudio.gschema.xml
%files pulse
%{_bindir}/pipewire-pulse
@@ -519,11 +538,13 @@ install -D -p -m 0644 %{S:10} %{buildroot}%{_sysusersdir}/%{name}.conf
%files doc
%{_docdir}/%{name}/html/
+%doc %{_mandir}/man7/*.7*
%files utils
%{_bindir}/spa-monitor
%{_bindir}/spa-inspect
%{_bindir}/spa-json-dump
+%{_bindir}/pw-container
%{_bindir}/pw-dsdplay
%{_bindir}/pw-encplay
%{_bindir}/pw-mon