Subject: [bug#66717] [PATCH 64/64] gnu: Add rust-librespot-playback-0.4

From: Steve George <[email-masked]>
Date: Mon, 23 Oct 2023 23:21:49 +0100

* gnu/packages/crates-io.scm (rust-librespot-playback-0.4): New variable.

-- >8 --
Q: how do I resolve the conflicting Jack versions?

When I try and build from source I get messages that:

* cpal v0.13.5 requires jack-0.8 which requires jack-sys-0.2.3
* librespot-playback v0.4.2 requires jack-10 which requires jack-sys-0.4

I can't find a way to adjust the dependencies:

* librespot 0.4.2 and 0.4.1 both require jack-0.8
* cpal 0.13.x doesn't have a version that relies on jack-0.8
---
 gnu/packages/crates-io.scm | 50 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 19fd141a4f..1e49315cce 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -38202,6 +38202,56 @@ (define-public rust-librespot-metadata-0.4
 Spotify.  This package contains the metadata logic.")
     (license license:expat)))
 
+(define-public rust-librespot-playback-0.4
+  (package
+    (name "rust-librespot-playback")
+    (version "0.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "librespot-playback" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1dygnzldvkv1qpagr9nl62hmqh0xfcf4lsva37j0xxy7pjws142i"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(;; conflict in the versions of Jack required by rust-cpal-0.13 and
+       ;; rust-librespot-playback 0.4 means we have to skip building
+       #:skip-build? #t
+       #:cargo-inputs (("rust-byteorder" ,rust-byteorder-1)
+                       ("rust-futures-executor" ,rust-futures-executor-0.3)
+                       ("rust-futures-util" ,rust-futures-util-0.3)
+                       ("rust-lewton" ,rust-lewton-0.10)
+                       ("rust-librespot-audio" ,rust-librespot-audio-0.4)
+                       ("rust-librespot-core" ,rust-librespot-core-0.4)
+                       ("rust-librespot-metadata" ,rust-librespot-metadata-0.4)
+                       ("rust-log" ,rust-log-0.4)
+                       ("rust-ogg" ,rust-ogg-0.8)
+                       ("rust-parking-lot" ,rust-parking-lot-0.12)
+                       ("rust-rand" ,rust-rand-0.8)
+                       ("rust-rand-distr" ,rust-rand-distr-0.4)
+                       ("rust-shell-words" ,rust-shell-words-1)
+                       ("rust-thiserror" ,rust-thiserror-1)
+                       ("rust-tokio" ,rust-tokio-1)
+                       ("rust-zerocopy" ,rust-zerocopy-0.6)
+                       ("rust-alsa" ,rust-alsa-0.6)
+                       ("rust-cpal" ,rust-cpal-0.13)
+                       ("rust-glib" ,rust-glib-0.15)
+                       ("rust-gstreamer" ,rust-gstreamer-0.18)
+                       ("rust-gstreamer-app" ,rust-gstreamer-app-0.18)
+                       ("rust-gstreamer-audio" ,rust-gstreamer-audio-0.18)
+                       ("rust-jack" ,rust-jack-0.10)
+                       ("rust-libpulse-binding" ,rust-libpulse-binding-2)
+                       ("rust-libpulse-simple-binding" ,rust-libpulse-simple-binding-2)
+                       ("rust-portaudio-rs" ,rust-portaudio-rs-0.3)
+                       ("rust-rodio" ,rust-rodio-0.15)
+                       ("rust-sdl2" ,rust-sdl2-0.35))))
+    (home-page "https://github.com/librespot-org/librespot")
+    (synopsis "Audio playback for Librespot")
+    (description "Audio playback for Librespot, an open source client
+library for Spotify.")
+    (license license:expat)))
+
 (define-public rust-librespot-protocol-0.4
   (package
     (name "rust-librespot-protocol")
-- 
2.41.0