diff mbox series

[bug#54379,1/2] gnu: linux: update PipeWire & WirePlumber

Message ID 20220401192354.7838-1-kevinboulain@gmail.com
State New
Headers show
Series [bug#54379,1/2] gnu: linux: update PipeWire & WirePlumber | expand

Commit Message

Kevin Boulain April 1, 2022, 7:23 p.m. UTC
* 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

M April 1, 2022, 7:34 p.m. UTC | #1
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.
M April 1, 2022, 7:41 p.m. UTC | #2
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
M April 1, 2022, 7:42 p.m. UTC | #3
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.
diff mbox series

Patch

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 7aafcb636c..abe0185d43 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -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))