From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Allan Webber Subject: Re: gnu: guile: Add guile-wisp Date: Tue, 06 Oct 2015 16:45:56 -0500 Message-ID: <87y4ffsm8c.fsf@dustycloud.org> References: <871tdvav7q.fsf@dustycloud.org> <878u81rkjj.fsf@netris.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:54418) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zja54-0007AQ-Tp for guix-devel@gnu.org; Tue, 06 Oct 2015 17:47:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zja51-0007gE-B2 for guix-devel@gnu.org; Tue, 06 Oct 2015 17:47:30 -0400 Received: from dustycloud.org ([50.116.34.160]:34185) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zja51-0007fL-54 for guix-devel@gnu.org; Tue, 06 Oct 2015 17:47:27 -0400 In-reply-to: <878u81rkjj.fsf@netris.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Mark H Weaver Cc: guix-devel --=-=-= Content-Type: text/plain Mark H Weaver writes: > Christopher Allan Webber writes: > >> From 8d29d47c0558c24562c2c0760e1f05a78b064838 Mon Sep 17 00:00:00 2001 >> From: Christopher Allan Webber >> 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))))) > > This hunk looks like a mistake, it should be omitted. Fixed >> +(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-" > > Please keep lines to 80 columns or less. Done >> + 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")))))) > > I guess this 'bash' is used at build-time only, right? If so, you can > just replace it with "bash" instead of the absolute path. This also > allows you to get rid of the 'let' and change the 'lambda*' to just > (lambda _ ...). Not used just at build time, it's used in the unit tests run later, and the package will not build with tests if I switch this part, I found. > Also, phase procedures are expected to return a boolean indicating > success (#t) or failure (#f), but the return value of 'substitute*' is > unspecified. Please add a #t after the last 'substitute*' call. Okay, done >> + ;; auto complilation breaks, but if we set HOME to /tmp, > > There's an extra 'l' in "complilation". Done >> + ;; that works ok >> + (add-before >> + 'check 'auto-compile-hacky-workaround >> + (lambda _ >> + (setenv "HOME" "/tmp"))) > > As above, please add #t after the 'setenv' call. Done >> + (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)) > > (lambda (x) (mkdir-p x)) is equivalent to just 'mkdir-p', so you can > just write this as: > > (for-each mkdir-p (list module-dir language-dir)) > > However, in this case, I wonder if it's simpler and more readable to > just write: > > (mkdir-p module-dir) > (mkdir-p language-dir) > > What do you think? Simple enough, went with the latter >> + >> + ;; 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")))))))) > > As above, please add #t after the last call to 'compile-file'. Done >> + (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+))) > > Otherwise it looks good to me. > > Thanks! > Mark Whoo! New patch attached... --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-gnu-guile-Add-guile-wisp.patch >From ba284a78424dc87577983066aa04a8503d7a1e32 Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber 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, 78 insertions(+) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index d5a95a0..07e3185 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) @@ -600,4 +601,81 @@ interface for reading articles in any format.") key-value cache and store.") (license lgpl3+))) +(define-public guile-wisp + (package + (name "guile-wisp") + (version "0.9.0") + (source (origin + (method url-fetch) + (uri (string-append "https://bitbucket.org/ArneBab/" + "wisp/downloads/wisp-" + version ".tar.gz")) + (sha256 + (base32 + "0y5fxacalkgbv9s71h58vdvm2h2ln3rk024dd0vszwcf953as5fq")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (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") )) + #t))) + + ;; auto compilation breaks, but if we set HOME to /tmp, + ;; that works ok + (add-before + 'check 'auto-compile-hacky-workaround + (lambda _ + (setenv "HOME" "/tmp") + #t)) + (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. + (mkdir-p module-dir) + (mkdir-p 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")) + #t)))))) + (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 --=-=-=--