gnu: Add picolisp.
* gnu/packages/lisp.scm (picolisp32, picolisp): New variables.
This commit is contained in:
parent
41d3e086e0
commit
e4c9ba4da2
1 changed files with 160 additions and 1 deletions
|
@ -14,7 +14,7 @@
|
||||||
;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
|
;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
|
||||||
;;; Copyright © 2019 Katherine Cox-Buday <cox.katherine.e@gmail.com>
|
;;; Copyright © 2019 Katherine Cox-Buday <cox.katherine.e@gmail.com>
|
||||||
;;; Copyright © 2019 Jesse Gildersleve <jessejohngildersleve@protonmail.com>
|
;;; Copyright © 2019 Jesse Gildersleve <jessejohngildersleve@protonmail.com>
|
||||||
;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
|
;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -71,6 +71,7 @@
|
||||||
#:use-module (gnu packages readline)
|
#:use-module (gnu packages readline)
|
||||||
#:use-module (gnu packages sdl)
|
#:use-module (gnu packages sdl)
|
||||||
#:use-module (gnu packages tex)
|
#:use-module (gnu packages tex)
|
||||||
|
#:use-module (gnu packages tls)
|
||||||
#:use-module (gnu packages texinfo)
|
#:use-module (gnu packages texinfo)
|
||||||
#:use-module (gnu packages version-control)
|
#:use-module (gnu packages version-control)
|
||||||
#:use-module (gnu packages xorg)
|
#:use-module (gnu packages xorg)
|
||||||
|
@ -783,3 +784,161 @@ command line, to data scanning and extracting scripts, to full application
|
||||||
development in a wide-range of areas.")
|
development in a wide-range of areas.")
|
||||||
(home-page "https://nongnu.org/txr/")
|
(home-page "https://nongnu.org/txr/")
|
||||||
(license license:bsd-2)))
|
(license license:bsd-2)))
|
||||||
|
|
||||||
|
(define picolisp32
|
||||||
|
(package
|
||||||
|
(name "picolisp32")
|
||||||
|
(version "19.12")
|
||||||
|
(source
|
||||||
|
(origin
|
||||||
|
(method url-fetch)
|
||||||
|
(uri (string-append "https://software-lab.de/picoLisp-" version ".tgz"))
|
||||||
|
(sha256
|
||||||
|
(base32 "10np0mhihr47r3201617zccrvzpkhdl1jwvz7zimk8kxpriydq2j"))
|
||||||
|
(modules '((guix build utils)))
|
||||||
|
(snippet '(begin
|
||||||
|
;; Delete the pre-compiled jar file.
|
||||||
|
(delete-file "ersatz/picolisp.jar")
|
||||||
|
#t))))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(inputs
|
||||||
|
`(("openssl" ,openssl)))
|
||||||
|
(arguments
|
||||||
|
`(#:system ,(match (%current-system)
|
||||||
|
((or "armhf-linux" "aarch64-linux")
|
||||||
|
"armhf-linux")
|
||||||
|
(_
|
||||||
|
"i686-linux"))
|
||||||
|
#:phases
|
||||||
|
(modify-phases %standard-phases
|
||||||
|
(delete 'configure)
|
||||||
|
(add-after 'unpack 'fix-paths
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
|
(let* ((out (assoc-ref outputs "out"))
|
||||||
|
(shebang-line (string-append
|
||||||
|
"#!" out "/bin/picolisp "
|
||||||
|
out "/lib/picolisp/lib.l")))
|
||||||
|
(substitute* '("bin/pil"
|
||||||
|
"bin/pilIndent"
|
||||||
|
"bin/pilPretty"
|
||||||
|
"bin/psh"
|
||||||
|
"bin/replica"
|
||||||
|
"bin/vip"
|
||||||
|
"bin/watchdog"
|
||||||
|
"games/xchess"
|
||||||
|
"misc/bigtest"
|
||||||
|
"misc/calc"
|
||||||
|
"misc/chat"
|
||||||
|
"misc/mailing"
|
||||||
|
"src/mkVers")
|
||||||
|
(("#\\!bin/picolisp lib.l")
|
||||||
|
shebang-line)
|
||||||
|
(("#\\!\\.\\./bin/picolisp \\.\\./lib.l")
|
||||||
|
shebang-line)
|
||||||
|
(("#\\!/usr/bin/picolisp /usr/lib/picolisp/lib.l")
|
||||||
|
shebang-line)))
|
||||||
|
#t))
|
||||||
|
(add-after 'fix-paths 'make-build-reproducible
|
||||||
|
(lambda _
|
||||||
|
(substitute* "src64/lib/asm.l"
|
||||||
|
(("\\(prinl \"/\\* \" \\(datSym \\(date\\)\\) \" \\*/\\)")
|
||||||
|
""))
|
||||||
|
#t))
|
||||||
|
(add-after 'make-build-reproducible 'fix-permissions
|
||||||
|
(lambda _
|
||||||
|
(for-each make-file-writable
|
||||||
|
'("doc/family.tgz"
|
||||||
|
"doc/family64.tgz"
|
||||||
|
"lib/map"
|
||||||
|
"src64/tags"))
|
||||||
|
#t))
|
||||||
|
(replace 'build
|
||||||
|
(lambda _
|
||||||
|
(invoke "make" "-C" "src" "picolisp" "tools" "gate")))
|
||||||
|
(add-before 'check 'set-home-for-tests
|
||||||
|
(lambda _
|
||||||
|
(setenv "HOME" "/tmp")
|
||||||
|
#t))
|
||||||
|
(replace 'check
|
||||||
|
(lambda _
|
||||||
|
(invoke "./pil" "test/lib.l" "-bye" "+")))
|
||||||
|
(replace 'install
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
|
(let* ((out (assoc-ref outputs "out"))
|
||||||
|
(bin (string-append out "/bin"))
|
||||||
|
(man (string-append out "/share/man"))
|
||||||
|
(picolisp (string-append out "/lib/picolisp")))
|
||||||
|
(copy-recursively "man" man)
|
||||||
|
(copy-recursively "." picolisp)
|
||||||
|
(for-each (lambda (name)
|
||||||
|
(let ((path (string-append picolisp "/" name)))
|
||||||
|
(delete-file-recursively path)))
|
||||||
|
'("CHANGES" "COPYING" "CREDITS" "cygwin"
|
||||||
|
"INSTALL" "man" "pil" "README" "src" "src64"
|
||||||
|
"test"))
|
||||||
|
(mkdir-p bin)
|
||||||
|
(symlink (string-append picolisp "/bin/picolisp")
|
||||||
|
(string-append bin "/picolisp"))
|
||||||
|
(symlink (string-append picolisp "/bin/pil")
|
||||||
|
(string-append bin "/pil")))
|
||||||
|
#t)))))
|
||||||
|
(synopsis "Interpreter for the PicoLisp programming language")
|
||||||
|
(description
|
||||||
|
"PicoLisp is a programming language, or really a programming system,
|
||||||
|
including a built-in database engine and a GUI system.")
|
||||||
|
(home-page "https://picolisp.com/wiki/?home")
|
||||||
|
(license license:expat)))
|
||||||
|
|
||||||
|
(define-public picolisp
|
||||||
|
(match (%current-system)
|
||||||
|
((or "aarch64-linux" "x86_64-linux")
|
||||||
|
(package
|
||||||
|
;; Use the 32-bit picolisp to generate the assembly files required by
|
||||||
|
;; the 64-bit picolisp.
|
||||||
|
(inherit picolisp32)
|
||||||
|
(name "picolisp")
|
||||||
|
(native-inputs
|
||||||
|
`(("picolisp32" ,picolisp32)
|
||||||
|
("which" ,which)))
|
||||||
|
(arguments
|
||||||
|
(substitute-keyword-arguments (package-arguments picolisp32)
|
||||||
|
((#:system _ "") (%current-system))
|
||||||
|
((#:phases phases)
|
||||||
|
`(modify-phases ,phases
|
||||||
|
(delete 'fix-paths)
|
||||||
|
(add-before 'build 'fix-paths
|
||||||
|
;; This must run after the other shebang-patching phases,
|
||||||
|
;; or they will override our changes.
|
||||||
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||||
|
(let* ((picolisp32 (assoc-ref inputs "picolisp32"))
|
||||||
|
(out (assoc-ref outputs "out"))
|
||||||
|
(shebang-line (string-append
|
||||||
|
"#!" out "/bin/picolisp "
|
||||||
|
out "/lib/picolisp/lib.l")))
|
||||||
|
(substitute* '("bin/pil"
|
||||||
|
"bin/pilIndent"
|
||||||
|
"bin/pilPretty"
|
||||||
|
"bin/psh"
|
||||||
|
"bin/replica"
|
||||||
|
"bin/vip"
|
||||||
|
"bin/watchdog"
|
||||||
|
"games/xchess"
|
||||||
|
"misc/bigtest"
|
||||||
|
"misc/calc"
|
||||||
|
"misc/chat"
|
||||||
|
"misc/mailing"
|
||||||
|
"src/mkVers")
|
||||||
|
(("#\\!.*picolisp32.*/bin/picolisp .*lib\\.l")
|
||||||
|
shebang-line))
|
||||||
|
(substitute* "src64/mkAsm"
|
||||||
|
(("/usr/bin/")
|
||||||
|
(string-append picolisp32 "/bin/"))))
|
||||||
|
#t))
|
||||||
|
(replace 'build
|
||||||
|
(lambda _
|
||||||
|
(invoke "make" "-C" "src" "tools" "gate")
|
||||||
|
(invoke "make" "-C" "src64" "CC=gcc" "picolisp")))))))))
|
||||||
|
(_
|
||||||
|
(package
|
||||||
|
(inherit picolisp32)
|
||||||
|
(name "picolisp")))))
|
||||||
|
|
Reference in a new issue