[bug#54379,1/2] gnu: linux: update PipeWire & WirePlumber
Commit Message
* gnu/packages/linux.scm (pipewire): Use the official repository URL
instead of a mirror. Also remove sdl2 from the inputs as it's only used
in tests (and is very sparsely used with PipeWire 0.3).
* gnu/packages/linux.scm (pipewire-0.3): Update to 0.3.49 and use the
official repository URL instead of a mirror. Also add a few more inputs
to enable a few options:
- libfdk to support the AAC Bluetooth codec
- libsndfile to build pw-cat
- libusb for Bluetooth quirks
- lilv for LV2 plugins
- openssl for raop-sink
- readline to build pw-cli
- webrtc-audio-processing for echo cancellation
And python-docutils to the native inputs to generate man pages.
X11 and libcanberra could be included for the X11 bell (no idea how
useful that is).
libcamera doesn't build with the current gstreamer version (g_memdup
is deprecated).
ROC doesn't appear to be in the packages yet so I'm skipping it.
Finally, set the sysconfigdir to /etc to allow configuring PipeWire
system-wide.
* gnu/packages/linux.scm (wireplumber): Update to 0.4.9.
Set the sysconfigdir to /etc to allow configuring WirePlumber
system-wide.
---
PipeWire also supports the aptX Bluetooth codec but the situation
appears to be very muddy: some distributions like Debian, Gentoo or
Arch package libfreeaptx (a fork of libopenaptx to work around licensing
issues) but others like Fedora or OpenSUSE refuse to do it so it's not
included for now (see https://issues.guix.gnu.org/54379).
---
gnu/packages/linux.scm | 32 +++++++++++++++++++++-----------
1 file changed, 21 insertions(+), 11 deletions(-)
Comments
Kevin Boulain schreef op vr 01-04-2022 om 21:23 [+0200]:
> * [...] Also add a few more inputs
> to enable a few options:
> - libfdk to support the AAC Bluetooth codec
> - libsndfile to build pw-cat
> - libusb for Bluetooth quirks
> - lilv for LV2 plugins
> - openssl for raop-sink
> - readline to build pw-cli
> - webrtc-audio-processing for echo cancellation
What's the impact on the output closure size?
> And python-docutils to the native inputs to generate man pages.
> [...] libcamera doesn't build with the current gstreamer version (g_memdup
> is deprecated).
> [...], set the sysconfigdir to /etc to allow configuring PipeWire
> system-wide.
> [...] Set the sysconfigdir to /etc to allow configuring WirePlumber
> system-wide.
For future reference, I would put this information in comments in the
package definition. That seems much more convenient to me than having
to dig through the git history.
Greetings,
Maxime.
Kevin Boulain schreef op vr 01-04-2022 om 21:23 [+0200]:
> * gnu/packages/linux.scm (pipewire-0.3): Update to 0.3.49 and use the
> official repository URL instead of a mirror. Also add a few more inputs
> to enable a few options:
> - libfdk to support the AAC Bluetooth codec
> - libsndfile to build pw-cat
> - libusb for Bluetooth quirks
> - lilv for LV2 plugins
> - openssl for raop-sink
> - readline to build pw-cli
> - webrtc-audio-processing for echo cancellation
Looks like some of these are only used for some plugins.
Can plugins be built separately? If they are built separately (and
hence, the 'main' pipewire package does not have these extra packages),
then updating, say, lilv, would cause less rebuilds.
This seems especially important given that 'pipewire' is becoming a
central component in the desktop world so ideally it would have a
minimal number of dependencies to avoid blowing up the package graph
...
Greetings,
Maxime
Kevin Boulain schreef op vr 01-04-2022 om 21:23 [+0200]:
> (define-public wireplumber
> (package
> (name "wireplumber")
> - (version "0.4.6")
> + (version "0.4.9")
> (source
> (origin
Can this be updated in a separate patch or are pipewire and wireplumber
too intertwined?
Greetings,
Maxime.
@@ -8281,7 +8281,7 @@ (define-public pipewire
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/PipeWire/pipewire")
+ (url "https://gitlab.freedesktop.org/pipewire/pipewire.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
@@ -8301,8 +8301,7 @@ (define-public pipewire
gstreamer
gst-plugins-base
libva
- sbc
- sdl2))
+ sbc))
(home-page "https://pipewire.org/")
(synopsis "Server and user space API to deal with multimedia pipelines")
(description
@@ -8320,39 +8319,49 @@ (define-public pipewire-0.3
(package
(inherit pipewire)
(name "pipewire")
- (version "0.3.43")
+ (version "0.3.49")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/PipeWire/pipewire")
+ (url "https://gitlab.freedesktop.org/pipewire/pipewire.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
- "0gp2h0sidapcqmnifl0iipdmbzb18bdh8zdi7pfywr9gsksh0cxy"))))
+ "1nm5in95318gw18prq4jfx5qrpkn22hvmkii7f40ngkcs3zrf5zj"))))
(arguments
'(#:configure-flags
(list (string-append "-Dudevrulesdir=" (assoc-ref %outputs "out")
"/lib/udev/rules.d")
"-Dsystemd=disabled"
- "-Dsession-managers=[]")
+ "-Dsession-managers=[]"
+ "-Dsysconfdir=/etc")
#:phases
(modify-phases %standard-phases
;; Skip shrink-runpath, otherwise validate-runpath fails.
(delete 'shrink-runpath))))
+ (native-inputs (modify-inputs (package-native-inputs pipewire)
+ (prepend python-docutils))) ; For manpages.
(inputs (modify-inputs (package-inputs pipewire)
(prepend avahi
bluez
jack-2
ldacbt
+ libfdk
+ libsndfile
+ libusb
+ lilv
+ openssl
pulseaudio
+ readline
vulkan-loader
- vulkan-headers)))))
+ vulkan-headers
+ webrtc-audio-processing)))))
(define-public wireplumber
(package
(name "wireplumber")
- (version "0.4.6")
+ (version "0.4.9")
(source
(origin
(method git-fetch)
@@ -8362,11 +8371,12 @@ (define-public wireplumber
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "0g7xkgkjlxrhs49hqkwrjk2hb478gq55wwydafvvbsv78vsa7qfb"))))
+ (base32 "0m90ymkrrcqrgr3y8x6i6836w0m3anlrv2masww9050lw77aipak"))))
(build-system meson-build-system)
(arguments
`(#:configure-flags '("-Dsystemd=disabled"
- "-Dsystem-lua=true")))
+ "-Dsystem-lua=true"
+ "-Dsysconfdir=/etc")))
(native-inputs
(list `(,glib "bin")
pkg-config))