Subject: [PATCH] gnu: Add ravanan.
From: Arun Isaac <[email-masked]>
To: [email-masked]
Cc: Arun Isaac <[email-masked]>
Date: Wed, 29 Jan 2025 00:57:44 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

* gnu/packages/bioinformatics.scm (ravanan): New variable.

Change-Id: Ib93ea64a3a0313be167dd1cd2f036c72f1c0f138
---
 gnu/packages/bioinformatics.scm | 60 +++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 317c15817e8..a08f04e932a 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -103,6 +103,7 @@ (define-module (gnu packages bioinformatics)
   #:use-module (gnu packages golang-compression)
   #:use-module (gnu packages golang-xyz)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnupg)
   #:use-module (gnu packages graph)
   #:use-module (gnu packages graphics)
   #:use-module (gnu packages graphviz)
@@ -134,6 +135,7 @@ (define-module (gnu packages bioinformatics)
   #:use-module (gnu packages node)
   #:use-module (gnu packages ocaml)
   #:use-module (gnu packages pcre)
+  #:use-module (gnu packages package-management)
   #:use-module (gnu packages parallel)
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages perl)
@@ -6586,6 +6588,64 @@ (define-public cwltool
 CWL descriptions.")
     (license license:asl2.0)))
 
+(define-public ravanan
+  (package
+    (name "ravanan")
+    (version "0.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/arunisaac/ravanan/releases/download/v"
+                    version "/ravanan-" version ".tar.lz"))
+              (sha256
+               (base32
+                "163r3iyqfdwd3bizm36axfsvnppqwqd6zxl2vwf7sq0lcgl2zx5p"))))
+    (arguments
+     (list #:make-flags
+           #~(list (string-append "prefix=" #$output)
+                   (string-append "NODE=" (search-input-file %build-inputs "bin/node")))
+           #:modules `(((guix build guile-build-system)
+                        #:select (target-guile-effective-version))
+                       ,@%default-gnu-imported-modules)
+           #:phases
+           (with-imported-modules `((guix build guile-build-system)
+                                    ,@%default-gnu-imported-modules)
+             #~(modify-phases %standard-phases
+                 (delete 'configure)
+                 (add-after 'install 'wrap
+                   (lambda* (#:key inputs outputs #:allow-other-keys)
+                     (let ((out (assoc-ref outputs "out"))
+                           (effective-version (target-guile-effective-version)))
+                       (wrap-program (string-append out "/bin/ravanan")
+                         `("GUILE_LOAD_PATH" prefix
+                           (,(string-append out "/share/guile/site/" effective-version)
+                            ,(getenv "GUILE_LOAD_PATH")))
+                         `("GUILE_LOAD_COMPILED_PATH" prefix
+                           (,(string-append out "/lib/guile/"
+                                            effective-version "/site-ccache")
+                            ,(getenv "GUILE_LOAD_COMPILED_PATH")))))))))))
+    (inputs
+     (list bash-minimal
+           node
+           guile-3.0
+           guile-filesystem
+           guile-gcrypt
+           guile-json-4
+           guile-libyaml
+           guix))
+    (native-inputs
+     (list lzip))
+    (build-system gnu-build-system)
+    (home-page "https://github.com/arunisaac/ravanan")
+    (synopsis "High-reproducibility CWL runner powered by Guix")
+    (description "ravanan is a @acronym{CWL, Common Workflow Language}
+implementation that is powered by GNU Guix and provides strong reproducibility
+guarantees.  ravanan provides strong caching of intermediate results so the
+same step of a workflow is never run twice.  ravanan captures logs from every
+step of the workflow for easy tracing back in case of job failures.  ravanan
+currently runs on single machines and on slurm via its API.")
+    (license license:gpl3+)))
+
 (define-public python-dendropy
   (package
     (name "python-dendropy")

base-commit: e90bd12f49e08f4d30007e80eaf5649ef98b5517
-- 
2.47.1