about summary refs log tree commit diff
path: root/.guix/ravanan-package.scm
diff options
context:
space:
mode:
Diffstat (limited to '.guix/ravanan-package.scm')
-rw-r--r--.guix/ravanan-package.scm89
1 files changed, 88 insertions, 1 deletions
diff --git a/.guix/ravanan-package.scm b/.guix/ravanan-package.scm
index b9c6aeb..35914f7 100644
--- a/.guix/ravanan-package.scm
+++ b/.guix/ravanan-package.scm
@@ -18,11 +18,95 @@
 
 (define-module (ravanan-package)
   #:use-module ((gnu packages bioinformatics) #:select (ravanan) #:prefix guix:)
+  #:use-module ((gnu packages guile) #:select (guile-3.0))
+  #:use-module ((gnu packages scheme) #:select (chibi-scheme))
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system guile)
   #:use-module (guix gexp)
   #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils))
 
+(define-public guile-chibi-match
+  (package
+    (name "guile-chibi-match")
+    (version (package-version chibi-scheme))
+    (source (package-source chibi-scheme))
+    (build-system guile-build-system)
+    (arguments
+     (list #:modules '((guix build guile-build-system)
+                       (guix build utils)
+                       (ice-9 ftw))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'rearrange-files
+                 (lambda _
+                   ;; Delete and rearrange files so that (chibi match)
+                   ;; is in the expected directory hierarchy.
+                   (chdir "lib/chibi")
+                   (rename-file "match" "chibi")
+                   (for-each (lambda (file)
+                               (unless (member file (list "." ".." "chibi"))
+                                 (delete-file-recursively file)))
+                             (scandir "."))
+                   (substitute* "chibi/match.scm"
+                     ((";; 2006/12/01[^\n]*" line)
+                      (string-append line
+                                     "\n(define-module (chibi match)
+#:export (match match-lambda match-lambda* match-let match-letrec match-let*))"))))))))
+    (inputs
+     (list guile-3.0))
+    (home-page "https://synthcode.com/scheme/chibi/lib/chibi/match.html")
+    (synopsis "Portable hygienic pattern matcher")
+    (description "@code{guile-chibi-match} is a portable hygienic
+pattern matcher for Scheme.  This is a full superset of the popular
+match package by Andrew Wright, written in fully portable syntax-rules
+and thus preserving hygiene.  The most notable extensions are the
+ability to use non-linear patterns---patterns in which the same
+identifier occurs multiple times, tail patterns after ellipsis, and
+the experimental tree patterns.")
+    (license (package-license chibi-scheme))))
+
+(define-public run64
+  (package
+    (name "run64")
+    (version "0.1.0")
+    (source (local-file "/home/arun/Projects/run64"
+                        "run64-checkout"
+                        #:recursive? #t
+                        #:select? (git-predicate "/home/arun/Projects/run64")))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:make-flags #~(list (string-append "prefix=" #$output))
+           #: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/guile-run64")
+                         `("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 guile-3.0
+           guile-chibi-match))
+    (home-page "https://run64.systemreboot.net")
+    (synopsis "SRFI-64 test runner for Scheme")
+    (description "run64 is a SRFI-64 test runner for Scheme.")
+    (license license:gpl3+)))
+
 (define-public ravanan
   (package
     (inherit guix:ravanan)
@@ -40,6 +124,9 @@
                                          (not (string-contains file "/e2e-tests/"))
                                          ((or (git-predicate (dirname (current-source-directory)))
                                               (const #t))
-                                          file stat)))))))
+                                          file stat)))))
+    (native-inputs
+     (modify-inputs (package-native-inputs guix:ravanan)
+       (prepend run64)))))
 
 ravanan