Subject: [bug#75433] [PATCH] Adding libvarlink and support for kanshictl

From: Till Robin Zickel <[email-masked]>
Date: Wed, 8 Jan 2025 13:15:59 +0100

Kanshi (https://git.sr.ht/~emersion/kanshi) has added support for 
controlling the daemon remotely. To enable this, kanshi has to be build 
with libvarlink present. This patch adds libvarlink to the 
serialization.scm and extends the kanshi package inputs.

I tested the build on amd64 and on aarch64 with qemu as per the guide. 
Unfortunately my laptop ran out of disk space while compiling the 
toolchain for armhf so I did not test that.
From 479a896bcbd1b539faa12c6183453be4b0adfc7b Mon Sep 17 00:00:00 2001
From: Till Robin Zickel <[email-masked]>
Date: Wed, 8 Jan 2025 13:13:33 +0100
Subject: [PATCH] gnu: added libvarlink and added it as dependency to kanshi

Change-Id: I7b4bfe83dd893a6cf6b0e58486822a182fadbcbc
---
 gnu/packages/serialization.scm | 37 ++++++++++++++++++++++++++++++++++
 gnu/packages/wm.scm            |  2 +-
 2 files changed, 38 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 1a965103aa..22445f124d 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -1036,3 +1036,40 @@ (define-public valijson
 C++11.  It provides a simple validation API that allows loading JSON Schemas,
 and validate documents loaded by one of several supported parser libraries.")
     (license license:bsd-2)))
+
+(define-public libvarlink
+  (package
+    (name "libvarlink")
+    (version "24")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/varlink/libvarlink")
+             (commit "24")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "098jw9h48p2py6lwxyjrlzvv9zqvqgfsxc4pddfsviab65n9n5gw"))))
+    (build-system meson-build-system)
+    (inputs (list))
+    (native-inputs (list python glibc-utf8-locales)) ;needed for unit tests
+    (arguments
+     (list
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'unpack 'patch-/bin/sh
+                     (lambda _
+                       (substitute* "lib/meson.build"
+                         (("/bin/sh")
+                          (which "sh")))))
+                   (add-after 'unpack 'patch-/usr/bin/env
+                     (lambda _
+                       (substitute* "varlink-wrapper.py"
+                         (("/usr/bin/env")
+                          (which "env"))))))))
+    (home-page "https://varlink.org/")
+    (synopsis "Varlink C IPC library and command line tool")
+    (description
+     "This package provides the C implementation of the varlink
+interface description protocol and its associated command line tool")
+    (license license:asl2.0)))
+
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 1da2e752ff..77ff61c5d8 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -2561,7 +2561,7 @@ (define-public kanshi
        (sha256
         (base32 "0g5glpkcn54ypfym4lpfdjai479yfazcai1rg86bn72nkcbpwfql"))))
     (build-system meson-build-system)
-    (inputs (list libscfg wayland))
+    (inputs (list libscfg libvarlink wayland))
     (native-inputs (append (if (%current-target-system)
                                (list pkg-config-for-build)
                                (list))
-- 
2.47.1