mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
gnu: Add tinyscheme.
* gnu/packages/scheme.scm (tinyscheme): New public variable.
This commit is contained in:
parent
0d73f1481b
commit
e2f9847be0
1 changed files with 67 additions and 0 deletions
|
@ -951,3 +951,70 @@ (define-public scm
|
||||||
generate C files whose binaries can be dynamically or statically
|
generate C files whose binaries can be dynamically or statically
|
||||||
linked with a SCM executable.")
|
linked with a SCM executable.")
|
||||||
(license lgpl3+)))
|
(license lgpl3+)))
|
||||||
|
|
||||||
|
(define-public tinyscheme
|
||||||
|
(package
|
||||||
|
(name "tinyscheme")
|
||||||
|
(version "1.41")
|
||||||
|
(source (origin
|
||||||
|
(method url-fetch)
|
||||||
|
(uri (string-append "mirror://sourceforge/" name "/" name "/"
|
||||||
|
name "-" version "/" name "-" version ".zip"))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"0yqma4jrjgj95f3hf30h542x97n8ah234n19yklbqq0phfsa08wf"))))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(native-inputs
|
||||||
|
`(("unzip" ,unzip)))
|
||||||
|
(arguments
|
||||||
|
`(#:phases
|
||||||
|
(modify-phases %standard-phases
|
||||||
|
(replace 'unpack
|
||||||
|
(lambda* (#:key source #:allow-other-keys)
|
||||||
|
(invoke "unzip" source)
|
||||||
|
(chdir (string-append ,name "-" ,version))
|
||||||
|
#t))
|
||||||
|
(add-after 'unpack 'set-scm-directory
|
||||||
|
;; Hard-code ‘our’ init.scm instead of looking in the current
|
||||||
|
;; working directory, so invoking ‘scheme’ just works.
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
|
(let* ((out (assoc-ref outputs "out"))
|
||||||
|
(scm (string-append out "/share/" ,name)))
|
||||||
|
(substitute* "scheme.c"
|
||||||
|
(("init.scm" all)
|
||||||
|
(string-append scm "/" all)))
|
||||||
|
#t)))
|
||||||
|
(delete 'configure) ; no configure script
|
||||||
|
(replace 'install
|
||||||
|
;; There's no ‘install’ target. Install files manually.
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
|
(let* ((out (assoc-ref outputs "out"))
|
||||||
|
(bin (string-append out "/bin"))
|
||||||
|
(doc (string-append out "/share/doc/"
|
||||||
|
,name "-" ,version))
|
||||||
|
(include (string-append out "/include"))
|
||||||
|
(lib (string-append out "/lib"))
|
||||||
|
(scm (string-append out "/share/" ,name)))
|
||||||
|
(install-file "scheme" bin)
|
||||||
|
(install-file "Manual.txt" doc)
|
||||||
|
(install-file "scheme.h" include)
|
||||||
|
(install-file "libtinyscheme.so" lib)
|
||||||
|
(install-file "init.scm" scm)
|
||||||
|
#t))))
|
||||||
|
#:tests? #f)) ; no tests
|
||||||
|
(home-page "http://tinyscheme.sourceforge.net/")
|
||||||
|
(synopsis "Light-weight interpreter for the Scheme programming language")
|
||||||
|
(description
|
||||||
|
"TinyScheme is a light-weight Scheme interpreter that implements as large a
|
||||||
|
subset of R5RS as was possible without getting very large and complicated.
|
||||||
|
|
||||||
|
It's meant to be used as an embedded scripting interpreter for other programs.
|
||||||
|
As such, it does not offer an Integrated Development Environment (@dfn{IDE}) or
|
||||||
|
extensive toolkits, although it does sport a small (and optional) top-level
|
||||||
|
loop.
|
||||||
|
|
||||||
|
As an embedded interpreter, it allows multiple interpreter states to coexist in
|
||||||
|
the same program, without any interference between them. Foreign functions in C
|
||||||
|
can be added and values can be defined in the Scheme environment. Being quite a
|
||||||
|
small program, it is easy to comprehend, get to grips with, and use.")
|
||||||
|
(license bsd-3))) ; there are no licence headers
|
||||||
|
|
Loading…
Reference in a new issue