Hi, thanks for reviewing
Ricardo Wurmus <rek...@elephly.net> writes: > ng0 <n...@we.make.ritual.n0.is> writes: > >> * gnu/packages/lisp.scm (femtolisp): New variable. >> --- >> gnu/packages/lisp.scm | 53 >> +++++++++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 53 insertions(+) >> >> diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm >> index 8ee249d..4e2ecdb 100644 >> --- a/gnu/packages/lisp.scm >> +++ b/gnu/packages/lisp.scm >> @@ -487,3 +487,56 @@ in the early 80's. It was converted to C by Blake >> McBride and supports much of >> the InterLisp Standard.") >> (home-page "https://github.com/blakemcbride/LISPF4.git") >> (license license:expat)))) >> + >> +(define-public femtolisp >> + (let* ((commit "68c5b1225572ecf2c52baf62f928063e5a30511b") >> + (revision "1")) >> + (package >> + (name "femtolisp") >> + (version (string-append "0.0.0-" revision "-" (string-take commit 7))) >> + (source (origin >> + (method git-fetch) >> + (uri (git-reference >> + (url "https://github.com/JeffBezanson/femtolisp.git") >> + (commit commit))) >> + (file-name (string-append name "-" version "-checkout")) >> + (sha256 >> + (base32 >> + "04rnwllxnl86zw8c6pwxznn49bvkvh0f1lfliy085vjzvlq3rgja")))) >> + (build-system gnu-build-system) >> + (arguments >> + `(#:make-flags '("CC=gcc") >> + #:tests? #f ; No make check > > But it does have a “test” target, no? How about “#:test-target "test"” > instead of disabling the tests? Ah ... sorry, I'll fix it again. I've seen this, but I've also worked on 40 other packages meanwhile. >> + #:phases >> + (modify-phases %standard-phases >> + (delete 'configure) ; No configure script >> + ;; We have to remove the 'test phase because it requires >> + ;; the flisp binary to be present. Instead we run >> + ;; bootstrap.sh after the 'install phase. > > I find this strange. More about this below. > >> + (add-before 'build 'patch-makefile >> + (lambda _ >> + (substitute* "Makefile" >> + (("default: release test") "default: release")) >> + #t)) > > This may not be necessary when you pass “release” as one of the > “#:make-flags”. I try it, maybe it works. >> + (replace 'install ; Makefile has no 'install phase >> + (lambda* (#:key outputs #:allow-other-keys) >> + (let* ((out (assoc-ref outputs "out")) >> + (bin (string-append out "/bin"))) >> + (install-file "flisp" bin) >> + #t))) >> + ;; The flisp binary is now available, run bootstrap to >> + ;; generate flisp.boot and afterwards runs make test. >> + (add-after 'install 'bootstrap-gen-and-test >> + (lambda* (#:key outputs #:allow-other-keys) >> + (let* ((out (assoc-ref outputs "out")) >> + (bin (string-append out "/bin"))) >> + (and >> + (zero? (system* "./bootstrap.sh")) >> + (install-file "flisp.boot" bin)))))))) > > “install-file” has an unspecified return value. I’m a little surprised > to see “bootstrap.sh” to be used *after* installation. That’s very odd. > Could the tests not be fixed in another way, e.g. by overriding the > location of the binary? Okay, so I change it back to what this was before, without (and)? On fixing it differently: No. If you can come up with a way to fix it afterwards, you're welcome to fix it, I can't do this at the moment. >> + (synopsis "Scheme-like lisp implementation") >> + (description >> + "@code{femtolisp} is a scheme-like lisp implementation with a >> +simple, elegant Scheme dialect. It is a lisp-1 with lexical scope. >> +The core is 12 builtin special forms and 33 builtin functions.") > > > “Scheme-like”. I think the sentence on “lisp-1” can be removed, because > if it’s Scheme-like it’s unlikely to be a lisp-2. Okay, I don't know enough about scheme and lisp to comment that so I'll just change it. >> + (home-page "https://github.com/JeffBezanson/femtolisp") >> + (license license:bsd-3)))) > > ~~ Ricardo > > -- ng0