Subject: [PATCH 3/6] gnu: Add zix.
From: Maya Tomasek <[email-masked]>
To: [email-masked]
Cc: Antero Mejr <[email-masked]>
Date: Sat, 11 Feb 2023 11:35:34 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

From: Antero Mejr <[email-masked]>

* gnu/packages/datastructures.scm (zix): New variable.
---
 gnu/packages/datastructures.scm | 40 +++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/datastructures.scm b/gnu/packages/datastructures.scm
index d40051506f..3d179624b8 100644
--- a/gnu/packages/datastructures.scm
+++ b/gnu/packages/datastructures.scm
@@ -26,6 +26,7 @@ (define-module (gnu packages datastructures)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix gexp)
@@ -390,3 +391,42 @@ (define-public robin-map
 policy, the last two use a prime growth policy instead and are able to cope
 better with a poor hash function.")
     (license license:expat)))
+
+(define-public zix
+  (let ((commit "56ec14c4369c591f5efbb500b0829b760bee7800")
+        (revision "0"))
+    (package
+      (name "zix")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://gitlab.com/drobilla/zix.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "095b2vjmwh9swbwkkkjpcdhsi0c93lxrzd76k7hzdyyf7zb5rgdx"))))
+      (build-system meson-build-system)
+      (arguments
+       (list #:configure-flags #~(list "-Ddocs=disabled"))) ;needs "sphinxygen"
+      (native-inputs (list pkg-config))
+      (home-page "https://gitlab.com/drobilla/zix")
+      (synopsis "C library of portability wrappers and data structures")
+      (description
+       "Zix is a C library of portability wrappers and data structures.  It
+provides the following components:
+@enumerate
+@item @code{ZixAllocator}: A customizable allocator.
+@item @code{ZixBumpAllocator}: A simple realtime-safe bump-pointer allocator.
+@item @code{ZixBTree}: A page-allocated B-tree.
+@item @code{ZixHash}: An open-addressing hash table.
+@item @code{ZixRing}: A lock-free realtime-safe ring buffer.
+@item @code{ZixSem}: A portable semaphore wrapper.
+@item @code{ZixThread}: A portable thread wrapper.
+@item @code{ZixTree}: A binary search tree.
+@item @code{zix/digest.h}: Digest functions suitable for hashing arbitrary data.
+@item @code{zix/filesystem.h}: Functions for working with filesystems.
+@item @code{zix/path.h}: Functions for working with filesystem paths lexically.
+@end enumerate\n")
+      (license license:isc))))
-- 
2.39.1