Subject: Add guile-rsv package definition.

From: Yuval Langer <[email-masked]>
Date: Sun, 14 Jan 2024 15:03:57 +0200

Hi,

this library implements the Rows of String Vectors file format as
specified by Stenway[1], an alternative to Comma Separated Values and
similar file formats.

It also provides two commands, rsv2scm and scm2rsv, for reading and
writing RSV files to and from a list of lists of strings.

The main repository is on Codeberg[2].

Many thanks,
Yuval Langer.

[1]: https://github.com/Stenway/RSV-Specification
[2]: https://codeberg.org/kakafarm/guile-rsv
From c5361f0bf17b02a385b4782a2435c52519095c7a Mon Sep 17 00:00:00 2001
Message-Id: <c536[email-masked]>
From: Yuval Langer <[email-masked]>
Date: Sun, 14 Jan 2024 14:54:10 +0200
Subject: [PATCH] Add guile-rsv package definition.

---
 gnu/packages/guile-xyz.scm | 63 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)

diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 77be632cc3..cb7c7f504b 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -5366,6 +5366,69 @@ using a short read-capability.")
     (home-page "https://codeberg.org/eris/guile-eris")
     (license license:gpl3+)))
 
+(define-public guile-rsv
+  (let ((commit-string "ecf0cbd486bb5f73e335e9e04212b0985f3efc35")
+        (base32-string "0cgnilix4050717xx3b2n45nfvr2hag1asbw92zs6mz6srq7xclq")
+        (git-repository-url "https://codeberg.org/kakafarm/guile-rsv/"))
+    (package
+     (name "guile-rsv")
+     (version "0.1.0")
+     (source
+      (origin
+       (uri (git-reference
+             (url git-repository-url)
+             (commit commit-string)))
+       (method git-fetch)
+       (file-name (git-file-name name version))
+       (sha256 (base32 base32-string))))
+     (inputs
+      (list guile-3.0
+            bash))
+     (build-system guile-build-system)
+     (arguments
+      (list
+       #:phases
+       #~(modify-phases
+          %standard-phases
+          (add-after 'install 'link-and-wrap-executable
+                     (lambda _
+                       (let* ([bin (string-append #$output
+                                                  "/bin")] ;; bin directory for PATH.
+                              [site-version (target-guile-effective-version)]
+                              [scm (string-append "/share/guile/site/"
+                                                  site-version)]
+                              [go (string-append "/lib/guile/"
+                                                 site-version
+                                                 "/site-ccache")])
+                         (mkdir-p bin)
+                         (for-each (lambda (command-name)
+                                     (let ((source-script (string-append
+                                                           #$output
+                                                           scm
+                                                           "/"
+                                                           command-name
+                                                           ".scm"))
+                                           (target-command (string-append
+                                                            bin
+                                                            "/"
+                                                            command-name)))
+                                       (symlink source-script target-command)
+                                       (wrap-program target-command
+                                                     #:sh (which "bash")
+                                                     `("GUILE_LOAD_PATH" prefix
+                                                       (,(string-append #$output scm)))
+                                                     `("GUILE_LOAD_COMPILED_PATH" prefix
+                                                       (,(string-append #$output go))))))
+                                   (list "scm2rsv" "rsv2scm"))))))))
+     (home-page git-repository-url)
+     (synopsis "R7RS Scheme library for reading and writing RSV data format")
+     (description "R7RS Scheme library for reading and writing RSV (Rows of String
+Values) data format.  Specified in
+https://github.com/Stenway/RSV-Specification and demonstrated in
+https://www.youtube.com/watch?v=tb_70o6ohMA.")
+     (license (list license:gpl3+
+                    license:expat-0)))))
+
 (define-public guile-r6rs-protobuf
   (package
     (name "guile-r6rs-protobuf")
-- 
2.30.2