Subject: [PATCH rust-team 17/37] gnu: Add rust-arboard-3.

From: Herman Rimm <[email-masked]>
Date: Thu, 14 Mar 2024 22:16:18 +0100

* gnu/packages/crates-io.scm (rust-arboard-3): Add variable.
(rust-arboard-1): Inherit from rust-arboard-3.
* gnu/packages/patches/rust-arboard-3-unix-only.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register file.

Change-Id: Ic5081f9cd6b8d63e033ca2a2c8d2f779758f0694
---
 gnu/local.mk                                  |  1 +
 gnu/packages/crates-io.scm                    | 38 ++++++++++---
 .../patches/rust-arboard-3-unix-only.patch    | 54 +++++++++++++++++++
 3 files changed, 87 insertions(+), 6 deletions(-)
 create mode 100644 gnu/packages/patches/rust-arboard-3-unix-only.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 503122d2aa..731a4799b4 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2006,6 +2006,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch	\
   %D%/packages/patches/rust-1.70-fix-rustix-build.patch	\
   %D%/packages/patches/rust-accesskit-winit-unix-only.patch	\
+  %D%/packages/patches/rust-arboard-3-unix-only.patch		\
   %D%/packages/patches/rust-cargo-edit-remove-ureq.patch	\
   %D%/packages/patches/rust-ring-0.17-ring-core.patch		\
   %D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch	\
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 2cca202f57..90d7e17e3b 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -2132,8 +2132,39 @@ (define-public rust-arbitrary-0.4
        #:cargo-inputs
        (("rust-derive-arbitrary" ,rust-derive-arbitrary-0.4))))))
 
+(define-public rust-arboard-3
+  (package
+    (name "rust-arboard")
+    (version "3.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "arboard" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "02iqwp8zv41a1vmxr41s0ghb40rf58b5vnl5mzxxcgcs7mrkrahz"))
+       (patches (search-patches "rust-arboard-3-unix-only.patch"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f ; $DISPLAY variable not set
+       #:cargo-inputs (("rust-image" ,rust-image-0.24)
+                       ("rust-log" ,rust-log-0.4)
+                       ("rust-parking-lot" ,rust-parking-lot-0.12)
+                       ("rust-thiserror" ,rust-thiserror-1)
+                       ("rust-wl-clipboard-rs" ,rust-wl-clipboard-rs-0.8)
+                       ("rust-x11rb" ,rust-x11rb-0.13))
+       #:cargo-development-inputs
+       (("rust-env-logger" ,rust-env-logger-0.9))))
+    (home-page "https://github.com/1Password/arboard")
+    (synopsis "Image and text handling for the OS clipboard")
+    (description
+      "This package provides image and text handling for the OS
+clipboard.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-arboard-1
   (package
+    (inherit rust-arboard-3)
     (name "rust-arboard")
     (version "1.2.1")
     (source
@@ -2165,12 +2196,7 @@ (define-public rust-arboard-1
         ("rust-x11rb" ,rust-x11rb-0.8))
        #:cargo-development-inputs
        (("rust-env-logger" ,rust-env-logger-0.8)
-        ("rust-simple-logger" ,rust-simple-logger-1))))
-    (home-page "https://github.com/ArturKovacs/arboard")
-    (synopsis "Image and text handling for the OS clipboard")
-    (description
-     "This package provides image and text handling for the OS clipboard.")
-    (license (list license:expat license:asl2.0))))
+        ("rust-simple-logger" ,rust-simple-logger-1))))))
 
 (define-public rust-arc-swap-1
   (package
diff --git a/gnu/packages/patches/rust-arboard-3-unix-only.patch b/gnu/packages/patches/rust-arboard-3-unix-only.patch
new file mode 100644
index 0000000000..02efc21928
--- /dev/null
+++ b/gnu/packages/patches/rust-arboard-3-unix-only.patch
@@ -0,0 +1,54 @@
+diff --git a/Cargo.toml b/Cargo.toml
+index 1921528..2f45618 100644
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -45,9 +45,7 @@ version = "0.9.0"
+ [features]
+ default = ["image-data"]
+ image-data = [
+-    "core-graphics",
+     "image",
+-    "windows-sys",
+ ]
+ wayland-data-control = ["wl-clipboard-rs"]
+ 
+@@ -69,39 +67,3 @@ optional = true
+ 
+ [target."cfg(all(unix, not(any(target_os=\"macos\", target_os=\"android\", target_os=\"emscripten\"))))".dependencies.x11rb]
+ version = "0.13"
+-
+-[target."cfg(target_os = \"macos\")".dependencies.core-graphics]
+-version = "0.23"
+-optional = true
+-
+-[target."cfg(target_os = \"macos\")".dependencies.image]
+-version = "0.24"
+-features = ["tiff"]
+-optional = true
+-default-features = false
+-
+-[target."cfg(target_os = \"macos\")".dependencies.objc]
+-version = "0.2"
+-
+-[target."cfg(target_os = \"macos\")".dependencies.objc-foundation]
+-version = "0.1"
+-
+-[target."cfg(target_os = \"macos\")".dependencies.objc_id]
+-version = "0.1"
+-
+-[target."cfg(windows)".dependencies.clipboard-win]
+-version = "5.0.0"
+-
+-[target."cfg(windows)".dependencies.log]
+-version = "0.4"
+-
+-[target."cfg(windows)".dependencies.windows-sys]
+-version = "0.48.0"
+-features = [
+-    "Win32_Foundation",
+-    "Win32_Graphics_Gdi",
+-    "Win32_System_DataExchange",
+-    "Win32_System_Memory",
+-    "Win32_System_Ole",
+-]
+-optional = true
-- 
2.41.0