Subject: [bug#63065] [PATCH v3 16/16] gnu: Add yabridgectl.

From: Sughosha <[email-masked]>
Date: Thu, 29 Jun 2023 11:15:05 +0000

By mistake I had added "#:use-module (gnu packages rust-apps)"
unnecessarily. In this patch it is removed.

This patch is the replacement of only the last patch, 16/16, from the
v2 series.

Sughosha (1):
  gnu: Add yabridgectl.

 gnu/local.mk                                  |  1 +
 gnu/packages/audio.scm                        | 61 +++++++++++++++++++
 ...yabridgectl-5.0.4-use-system-reflink.patch | 23 +++++++
 3 files changed, 85 insertions(+)
 create mode 100644 gnu/packages/patches/yabridgectl-5.0.4-use-system-reflink.patch

base-commit: a98126e604b666d08a4c9d838bf9c341acea7f17
prerequisite-patch-id: db0f0d6727c1b66cdd07fb37d982d8f48367cb7a
prerequisite-patch-id: 43820360ad84faa7d10d47945d00b038e68524f0
prerequisite-patch-id: 350929f65488a6350bc09a0045e13b0c815eafe5
prerequisite-patch-id: 6e8a93d14aa2798c457057021fc0cb38f58cec7d
prerequisite-patch-id: 129bde8eb27d35d83d411cf49c2f04c57748b89f
prerequisite-patch-id: b4d8b6b7b91d3ee98d2402e144567c078fc9425e
prerequisite-patch-id: be1f9641ea8ec7be12e1e63efcfbb0a9ddf16ce1
prerequisite-patch-id: be8ccdf29fe9659ffe16806ad3c135d6be0f47f3
prerequisite-patch-id: f5ac1f146e42cc0a3be51272a74ad71effc28a82
prerequisite-patch-id: 41ac5a7192eb95f90bb31f69ee1846a18bb908c9
prerequisite-patch-id: 8ed14cb8f75ed3e36fd22aea2b4cf586b864f676
prerequisite-patch-id: e3f51823fdb1fa0838cb40aff2951cf82dac5d4f
prerequisite-patch-id: 227157ad1a0787045c09b7f573c27a7647ab14f5
prerequisite-patch-id: 712cbfaa6bfa223781ee37dc7020b3616666aca2
prerequisite-patch-id: 9ed005354b5adf2d595fe66945f15179496d8a25
--
* gnu/packages/audio.scm (yabridgectl): New variable.
* gnu/packages/patches/yabridgectl-5.0.4-use-system-reflink.patch: New
patch file.
* gnu/local.mk: Register it.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/audio.scm                        | 61 +++++++++++++++++++
 ...yabridgectl-5.0.4-use-system-reflink.patch | 23 +++++++
 3 files changed, 85 insertions(+)
 create mode 100644 gnu/packages/patches/yabridgectl-5.0.4-use-system-reflink.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index dbb2143906..29f05ff669 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2099,6 +2099,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/xygrib-fix-finding-data.patch		\
   %D%/packages/patches/xygrib-newer-proj.patch			\
   %D%/packages/patches/yabridge-5.0.4-fix-dependency-search.patch	\
+  %D%/packages/patches/yabridgectl-5.0.4-fix-reflink.patch	\
   %D%/packages/patches/yggdrasil-extra-config.patch	\
   %D%/packages/patches/zig-do-not-link-against-librt.patch	\
   %D%/packages/patches/zig-use-system-paths.patch		\
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 02d2a68396..7ab3c5f374 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -74,6 +74,7 @@ (define-module (gnu packages audio)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpp)
+  #:use-module (gnu packages crates-io)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages dbm)
   #:use-module (gnu packages documentation)
@@ -140,6 +141,7 @@ (define-module (gnu packages audio)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
+  #:use-module (guix build-system cargo)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system copy)
   #:use-module (guix build-system glib-or-gtk)
@@ -5968,6 +5970,65 @@ (define-public yabridge
 quick startup times.")
     (license license:gpl3+)))
 
+(define-public yabridgectl
+  (package/inherit yabridge
+    (name "yabridgectl")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/robbert-vdh/yabridge")
+                    (commit (package-version yabridge))))
+              (sha256
+               (base32
+                "0ayl706nv67jkixbrh9z7225gdwg2s4rzndx77761x33mk6by7a8"))
+              (patches
+               (search-patches
+                 "yabridgectl-5.0.4-use-system-reflink.patch"))))
+    (build-system cargo-build-system)
+    (arguments
+     (list #:cargo-inputs
+           `(("rust-anyhow" ,rust-anyhow-1)
+             ("rust-clap" ,rust-clap-3)
+             ("rust-colored" ,rust-colored-2)
+             ("rust-is-executable" ,rust-is-executable-1)
+             ("rust-goblin" ,rust-goblin-0.6)
+             ("rust-libloading" ,rust-libloading-0.7)
+             ("rust-promptly" ,rust-promptly-0.3)
+             ("rust-rayon" ,rust-rayon-1)
+             ("rust-reflink" ,rust-reflink-0.1)
+             ("rust-serde" ,rust-serde-1)
+             ("rust-serde-derive" ,rust-serde-derive-1)
+             ("rust-serde-jsonrc" ,rust-serde-jsonrc-0.1)
+             ("rust-textwrap" ,rust-textwrap-0.11)
+             ("rust-toml" ,rust-toml-0.5)
+             ("rust-walkdir" ,rust-walkdir-2)
+             ("rust-which" ,rust-which-4)
+             ("rust-xdg" ,rust-xdg-2))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'change-directory
+                (lambda _
+                  (chdir "tools/yabridgectl")))
+               (add-after 'change-directory 'patch-paths
+                 (lambda _
+                   (with-directory-excursion "src"
+                     (substitute* '("config.rs" "main.rs")
+                       (("/usr") #$yabridge)))))
+               (add-after 'install 'wrap-program
+                (lambda _
+                  (wrap-program (string-append #$output "/bin/yabridgectl")
+                    `("LD_LIBRARY_PATH" ":" prefix
+                      (,(string-append #$yabridge "/lib")
+                       ,(string-append #$dbus "/lib")))))))))
+    (native-inputs '())
+    (inputs
+     (list dbus))
+    (propagated-inputs
+     (list yabridge))
+    (synopsis "Utility to set up and update yabridge")
+    (description
+     "@command{yabridgectl} is a tool to setup and update @code{yabridge}.")))
+
 (define-public ableton-link
   (package
     (name "ableton-link")
diff --git a/gnu/packages/patches/yabridgectl-5.0.4-use-system-reflink.patch b/gnu/packages/patches/yabridgectl-5.0.4-use-system-reflink.patch
new file mode 100644
index 0000000000..d863f35c2f
--- /dev/null
+++ b/gnu/packages/patches/yabridgectl-5.0.4-use-system-reflink.patch
@@ -0,0 +1,23 @@
+rust-reflink version 0.1.3 available in Guix is patched with the fix for
+the assumption of a 64-bit toolchain.
+
+---
+ tools/yabridgectl/Cargo.toml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/yabridgectl/Cargo.toml b/tools/yabridgectl/Cargo.toml
+index f2ea73fb..09490e43 100644
+--- a/tools/yabridgectl/Cargo.toml
++++ b/tools/yabridgectl/Cargo.toml
+@@ -18,7 +18,7 @@ goblin = { version = "0.6", default_features = false, features = ["std", "pe32",
+ libloading = "0.7.3"
+ promptly = "0.3.1"
+ # Version 0.1.3 from crates.io assumes a 64-bit toolchain
+-reflink = { git = "https://github.com/nicokoch/reflink", rev = "e8d93b465f5d9ad340cd052b64bbc77b8ee107e2" }
++reflink = "0.1.3"
+ rayon = "1.5.1"
+ serde = "1.0.133"
+ serde_derive = "1.0.133"
+-- 
+2.39.2
+
-- 
2.40.1