guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnu: guile: Add guile-wisp


From: Christopher Allan Webber
Subject: gnu: guile: Add guile-wisp
Date: Fri, 18 Sep 2015 23:24:47 -0500

Hello!

I've added guile-wisp here.  There's no "make install" and a few of the
commands are hardcoded in the autoconf stuff, but I've patched it up.

So here's the funny thing: it works just fine if you just use guix to
install the library and use a system guile from elsewhere:

  scheme@(guile-user)> ,L wisp
  Happy hacking with Wisp Scheme Syntax. See SRFI-119 for details. THIS IS 
EXPERIMENTAL, USE AT YOUR OWN RISK!  To switch back, type `,L scheme'.

But if you use guile-2.0 from Guix, you get the following issue:

  scheme@(guile-user)> ,L wisp
  While executing meta-command:
  ERROR: In procedure setlocale: Invalid argument
  scheme@(guile-user)> ,L wisp
  While executing meta-command:
  ERROR: no such language wisp

I'm pretty sure this is a Guix packaging of Guile issue, not a
guile-wisp issue.  I've tested building from the package and trying with
guix's guile-2.0 and I have the same issue there, but not with the Guile
from Debian.  Any ideas?

I think the patch is good to go, though, probably.  Let me know if
otherwise!

 - Chris

>From 8d29d47c0558c24562c2c0760e1f05a78b064838 Mon Sep 17 00:00:00 2001
From: Christopher Allan Webber <address@hidden>
Date: Fri, 18 Sep 2015 16:58:31 -0500
Subject: [PATCH] gnu: guile: Add guile-wisp

* gnu/packages/guile.scm (guile-wisp): New variable.
---
 gnu/packages/guile.scm | 78 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 77 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 60af92d..867f79a 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -39,6 +39,7 @@
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gdbm)
+  #:use-module (gnu packages python)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -538,7 +539,7 @@ See http://minikanren.org/ for more on miniKanren 
generally.")
 
            ;; compile to the destination
            (compile-file gdbm.scm-dest
-                         #:output-file gdbm.go-dest)))))
+                           #:output-file gdbm.go-dest)))))
     (inputs
      `(("guile" ,guile-2.0)))
     (propagated-inputs
@@ -600,4 +601,79 @@ interface for reading articles in any format.")
 key-value cache and store.")
     (license lgpl3+)))
 
+(define-public guile-wisp
+  (package
+    (name "guile-wisp")
+    (version "0.8.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append 
"https://bitbucket.org/ArneBab/wisp/downloads/wisp-";
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "021437nmnc5vqmbyyn2zgfl8fzvwv0phc5pph6hp2x98wf2lzvg8"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after
+          'unpack 'bootstrap
+          (lambda _
+            (zero? (system* "bash" "bootstrap.sh"))))
+         (add-before
+          'configure 'substitute-before-config
+          (lambda* (#:key inputs #:allow-other-keys)
+            (let ((bash (assoc-ref inputs "bash")))
+              ;; configure checks for guile-2.0, but ours is just named 
"guile" :)
+              (substitute* "configure"
+                (("guile-2.0") "guile"))
+              ;; Puts together some test files with /bin/bash hardcoded
+              (substitute* "Makefile.in"
+                (("/bin/bash")
+                 (string-append bash "/bin/bash"))))))
+         ;; auto complilation breaks, but if we set HOME to /tmp,
+         ;; that works ok
+         (add-before
+          'check 'auto-compile-hacky-workaround
+          (lambda _
+            (setenv "HOME" "/tmp")))
+         (replace
+          'install
+          (lambda* (#:key outputs inputs #:allow-other-keys)
+            (use-modules (guix build utils)
+                         (system base compile))
+
+            (let* ((out (assoc-ref outputs "out"))
+                   (module-dir (string-append out "/share/guile/site/2.0"))
+                   (language-dir
+                    (string-append module-dir "/language/wisp"))
+                   (guild (string-append (assoc-ref inputs "guile")
+                                         "/bin/guild")))
+              ;; Make installation directories.
+              (for-each (lambda (x) (mkdir-p x))
+                        (list module-dir language-dir))
+
+              ;; copy the source
+              (copy-file "wisp-scheme.scm"
+                         (string-append module-dir "/wisp-scheme.scm"))
+              (copy-file "language/wisp/spec.scm"
+                         (string-append language-dir "/spec.scm"))
+
+              ;; compile to the destination
+              (compile-file "wisp-scheme.scm"
+                            #:output-file (string-append
+                                           module-dir "/wisp-scheme.go"))
+              (compile-file "language/wisp/spec.scm"
+                            #:output-file (string-append
+                                           language-dir "/spec.go"))))))))
+    (home-page "http://draketo.de/english/wisp";)
+    (inputs
+     `(("guile" ,guile-2.0)
+       ("python" ,python)))
+    (synopsis "wisp is a whitespace to lisp syntax for Guile")
+    (description "wisp is a syntax for Guile which provides a Python-like
+whitespace-significant language.  It may be easier on the eyes for some
+users and in some situations.")
+    (license gpl3+)))
+
 ;;; guile.scm ends here
-- 
2.1.4


reply via email to

[Prev in Thread] Current Thread [Next in Thread]