summaryrefslogtreecommitdiff
path: root/gnu/packages/lisp-xyz.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-11-17 23:24:42 +0100
committerLudovic Courtès <ludo@gnu.org>2021-11-17 23:43:14 +0100
commit3a317f7476f8c6012e166ff9f340f861938721c9 (patch)
tree946e398c37912cfc03be7306951ae87bfeb130fa /gnu/packages/lisp-xyz.scm
parente55547bf70384691712047912c793c517debd2ec (diff)
parent62e707d67caf1dab2af411a69ff8cec4b2dc686e (diff)
Merge branch 'master' into core-updates-frozen
Diffstat (limited to 'gnu/packages/lisp-xyz.scm')
-rw-r--r--gnu/packages/lisp-xyz.scm600
1 files changed, 595 insertions, 5 deletions
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 1097118fb3..10a2391f18 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -3230,7 +3230,7 @@ is a library for creating graphical user interfaces.")
(define-public sbcl-cl-webkit
(package
(name "sbcl-cl-webkit")
- (version "3.0.0")
+ (version "3.2.0")
(source
(origin
(method git-fetch)
@@ -3240,7 +3240,7 @@ is a library for creating graphical user interfaces.")
(file-name (git-file-name "cl-webkit" version))
(sha256
(base32
- "015xry1cvbgspfzz35ifz2qscz946ljhj2z8rzjscy9v8fgnjsdk"))))
+ "1c0kas8k02167v5f1gjbhy3741b7ky91x7lkc5bh5429jmbpiapf"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("cffi" ,sbcl-cffi)
@@ -5775,6 +5775,46 @@ offered, one SAX-like, the other similar to StAX.")
(define-public ecl-cxml
(sbcl-package->ecl-package sbcl-cxml))
+(define-public sbcl-cxml-rng
+ (let ((commit "bdcfeb92798694b2935a8321e641d8803e814b7b")
+ (revision "1"))
+ (package
+ (name "sbcl-cxml-rng")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "http://www.lichteblau.com/git/cxml-rng.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1rld038hmvm0whaffkszd5ks7mg44z1vfbgddal434df8sgspzql"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("cxml" ,sbcl-cxml)
+ ("cl-ppcre" ,sbcl-cl-ppcre)
+ ("yacc" ,sbcl-cl-yacc)
+ ("parse-number" ,sbcl-parse-number)
+ ("cl-base64" ,sbcl-cl-base64)))
+ (synopsis "Relax NG for Closure XML (CXML)")
+ (description "An implementation of Relax NG schema validation written in
+Common Lisp, including support for compact syntax, DTD Compatibility, and the
+XSD type library.")
+ (home-page "http://www.lichteblau.com/cxml-rng/")
+ (license license:x11-style))))
+
+(define-public cl-cxml-rng
+ (sbcl-package->cl-source-package sbcl-cxml-rng))
+
+;; FIXME: Fails on ECL with
+;; In function STRUCTURE-SET, the value of the first argument is
+;; #<empty 0x7fffeb0fd440>
+;; which is not of the expected type %TYPED-PATTERN.
+;; (define-public ecl-cxml-rng
+;; (sbcl-package->ecl-package sbcl-cxml-rng))
+
(define-public sbcl-cl-reexport
(let ((commit "312f3661bbe187b5f28536cd7ec2956e91366c3b")
(revision "1"))
@@ -14123,10 +14163,10 @@ standard library.")
(sbcl-package->cl-source-package sbcl-shlex))
(define-public sbcl-cmd
- (let ((commit "8ace7fb45f2ecf0eefae28583ee36c941d142179"))
+ (let ((commit "b0b79adf1214dbec082f3dd2274a72a0ff58efd7"))
(package
(name "sbcl-cmd")
- (version (git-version "0.0.1" "4" commit))
+ (version (git-version "0.0.1" "5" commit))
(source
(origin
(method git-fetch)
@@ -14135,7 +14175,7 @@ standard library.")
(commit commit)))
(file-name (git-file-name name version))
(sha256
- (base32 "1da8sa0fsvsdivnx2s9m6jbb7yszrnkqqcxrn1sszp7k6iwnnkgi"))))
+ (base32 "0kk29vydmi1fyhpbwy3mrsg3bhvx0478r6r7jcsfkr3ci2h8w8a1"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("alexandria" ,sbcl-alexandria)
@@ -17561,6 +17601,44 @@ fit together as required by any particular game.")
(define-public cl-trial
(sbcl-package->cl-source-package sbcl-trial))
+(define-public sbcl-alloy
+ (let ((commit "e86e22c2887836ec31cd97e039f0bca5248d8f1c")
+ (revision "1"))
+ (package
+ (name "sbcl-alloy")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Shirakumo/alloy")
+ (commit commit)))
+ (file-name (git-file-name "alloy" version))
+ (sha256
+ (base32 "1jsqjr6sf86hcdvnjp4gd10qv0r7kfkr9hmda85irb5lha4q9n7w"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("parachute" ,sbcl-parachute)))
+ (inputs
+ `(("array-utils" ,sbcl-array-utils)
+ ("closer-mop" ,sbcl-closer-mop)
+ ("documentation-utils" ,sbcl-documentation-utils)))
+ (home-page "https://shirakumo.github.io/alloy/")
+ (synopsis
+ "Common Lisp user interface protocol and toolkit implementation")
+ (description
+ "Alloy is a user interface toolkit. It is defined through a set of
+protocols that allow for a clear interface, as well as a standardised way to
+integrate Alloy into a target backend.")
+ (license license:zlib))))
+
+(define-public ecl-alloy
+ (sbcl-package->ecl-package sbcl-alloy))
+
+(define-public cl-alloy
+ (sbcl-package->cl-source-package sbcl-alloy))
+
(define-public sbcl-org-sampler
(let ((commit "ee135a417750e5b1d810bb9574eb85223cb3038a")
(revision "1"))
@@ -18627,6 +18705,124 @@ terminals.")
(define-public ecl-clinenoise
(sbcl-package->ecl-package sbcl-clinenoise))
+(define-public sbcl-periodic-table
+ (package
+ (name "sbcl-periodic-table")
+ (version "1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://common-lisp.net/project/chemboy/periodic-table-"
+ version ".tar.gz"))
+ (sha256
+ (base32 "1ircvqm3q93ma4rxbxprb1i9rcax10ld6xmdzdhfnigr27sh5jvg"))))
+ (build-system asdf-build-system/sbcl)
+ (home-page "https://common-lisp.net/project/chemboy/")
+ (synopsis "Periodic table for Common Lisp")
+ (description
+ "This package defines a Common Lisp package, @code{:elements}, with an
+@code{ELEMENT} structure and a number of functions to search the periodic
+table.")
+ (license license:llgpl)))
+
+(define-public cl-periodic-table
+ (sbcl-package->cl-source-package sbcl-periodic-table))
+
+(define-public ecl-periodic-table
+ (sbcl-package->ecl-package sbcl-periodic-table))
+
+(define-public sbcl-chemical-compounds
+ (package
+ (name "sbcl-chemical-compounds")
+ (version "1.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://common-lisp.net/project/chemboy/chemical-compounds-"
+ version ".tar.gz"))
+ (sha256
+ (base32 "12fd8a6ay5qlsq4givzgh9d55mbg4ci2vvmymig6pjl2ms64v0pf"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("periodic-table" ,sbcl-periodic-table)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-files
+ (lambda _
+ ;; Fix incorrect version number.
+ (substitute* "chemical-compounds.asd"
+ ((":version \"1.0.1\"")
+ (string-append ":version \"" ,version "\"")))
+ ;; Remove incorrect declaration of string type.
+ (substitute* "parsing.lisp"
+ (("\\(declare \\(simple-base-string string\\)")
+ "(declare")))))))
+ (home-page "https://common-lisp.net/project/chemboy/")
+ (synopsis "Chemical formula parser and pretty-printer for Common Lisp")
+ (description
+ "It can sometimes be useful to be able to parse chemical compounds in a
+user-friendly syntax into easy-to-manipulate s-expressions. You also want to
+be able to go in reverse. You could probably write your own parser — or you
+could just install the chemical-compounds package.")
+ (license license:llgpl)))
+
+(define-public cl-chemical-compounds
+ (sbcl-package->cl-source-package sbcl-chemical-compounds))
+
+(define-public ecl-chemical-compounds
+ (sbcl-package->ecl-package sbcl-chemical-compounds))
+
+(define-public sbcl-chemboy
+ (package
+ (name "sbcl-chemboy")
+ (version "0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://common-lisp.net/project/chemboy/chemboy-"
+ version ".tar.gz"))
+ (sha256
+ (base32 "0lr134l16mjcgdj3fm2yff4chlfbihn1sji7q80y7lnr176zgs7d"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("chemical-compounds" ,sbcl-chemical-compounds)
+ ("periodic-table" ,sbcl-periodic-table)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-files
+ (lambda _
+ ;; Fix incorrect version number.
+ (substitute* "chemboy.asd"
+ ((":version \"0.2\"")
+ (string-append ":version \"" ,version "\"")))
+ ;; Remove incorrect declaration of string type.
+ (substitute* "query-parsing.lisp"
+ (("\\(declare \\(simple-base-string string\\)")
+ "(declare"))
+ ;; Fix incorrect function calls.
+ (substitute* "conversions.lisp"
+ (("\\(pprint-compound element s\\)")
+ "(pprint-compound element :stream s)")
+ (("\\(pprint-compound parsed-compound s\\)")
+ "(pprint-compound parsed-compound :stream s)")))))))
+ (home-page "https://common-lisp.net/project/chemboy/")
+ (synopsis "Common Lisp program for doing basic chemistry calculations")
+ (description
+ "Chemboy is a Common Lisp program for doing basic chemistry calculations.
+This package provides the text-based interface for Chemboy.")
+ (license license:llgpl)))
+
+(define-public cl-chemboy
+ (sbcl-package->cl-source-package sbcl-chemboy))
+
+(define-public ecl-chemboy
+ (sbcl-package->ecl-package sbcl-chemboy))
+
(define-public sbcl-cl-pass
(let ((commit "e58e97c0c0588dc742c061208afb9bc31e4dbd34")
(revision "1"))
@@ -18660,3 +18856,397 @@ terminals.")
(define-public ecl-cl-pass
(sbcl-package->ecl-package sbcl-cl-pass))
+
+(define-public sbcl-cl-tld
+ ;; No release.
+ (let ((commit "6529c70042cf6e82be39bc522e87ad87da08f1c9"))
+ (package
+ (name "sbcl-cl-tld")
+ (version (git-version "0.1" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/lu4nx/cl-tld")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1l6f0sak90pqjzkrjg0cyk7gv9h8gwpfvc0964z98dw2nj3hakqb"))))
+ (build-system asdf-build-system/sbcl)
+ (home-page "https://github.com/lu4nx/cl-tld/")
+ (synopsis "Extract the Top Level Domain from domains, in Common Lisp")
+ (description
+ "This library extracts the TLD (Top Level Domain) from domains. The
+information is taken from @url{https://publicsuffix.org}.")
+ (license license:public-domain))))
+
+(define-public cl-tld
+ (sbcl-package->cl-source-package sbcl-cl-tld))
+
+(define-public ecl-cl-tld
+ (sbcl-package->ecl-package sbcl-cl-tld))
+
+(define-public sbcl-cl-strftime
+ ;; No release.
+ (let ((commit "21cb57f2595faa26d687893963f24ec41822b63c"))
+ (package
+ (name "sbcl-cl-strftime")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ruricolist/cl-strftime/")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "00c8hq7vzgb89ab3q7mrp60x743kiqmsk1g51ynhxlqhph2bnslf"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("local-time" ,sbcl-local-time)
+ ("ppcre" ,sbcl-cl-ppcre)
+ ("serapeum" ,sbcl-serapeum)))
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)
+ ("cffi" ,sbcl-cffi)))
+ (home-page "https://github.com/ruricolist/cl-strftime")
+ (synopsis "Common Lisp compiler for the strftime language")
+ (description
+ "CL-STRFTIME is a Common Lisp compiler for the strftime “language.”")
+ (license license:expat))))
+
+(define-public cl-strftime
+ (sbcl-package->cl-source-package sbcl-cl-strftime))
+
+(define-public ecl-cl-strftime
+ (sbcl-package->ecl-package sbcl-cl-strftime))
+
+(define-public sbcl-exit-hooks
+ ;; No release.
+ (let ((commit "78050f4f55c138fcea86a9d720928782021b6012"))
+ (package
+ (name "sbcl-exit-hooks")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ailisp/exit-hooks/")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "00rk0pr2cy3hy6giblh166b7yrg06d5lanipjcqv508gkfb0vi47"))))
+ (build-system asdf-build-system/sbcl)
+ (home-page "https://github.com/ailisp/exit-hooks")
+ (synopsis "Call functions automatically when Common Lisp exits")
+ (description
+ "@code{exit-hooks} provides a portable way to automatically call some
+user-defined function when exiting Common Lisp (both @code{quit} from the REPL
+or a kill in a shell). Like @code{atexit} in C and Python or Java’s
+@code{Runtime.addShutdownHook()}. It currently supports SBCL, CCL, ECL, ABCL,
+Allegro CL, clisp and CMUCL. Before exit-hooks, there was no portable way of
+doing so and no staightforward way to use an exit hook on ABCL. It can be used
+for tasks like parmenantly save something when exiting Lisp.")
+ (license license:bsd-2))))
+
+(define-public cl-exit-hooks
+ (sbcl-package->cl-source-package sbcl-exit-hooks))
+
+(define-public ecl-exit-hooks
+ (sbcl-package->ecl-package sbcl-exit-hooks))
+
+(define-public sbcl-cl-base58
+ (let ((commit "f446835b4104896e0eed6a61d2ceb4ad22f589d8")
+ (revision "1"))
+ (package
+ (name "sbcl-cl-base58")
+ (version (git-version "0.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/eudoxia0/cl-base58/")
+ (commit commit)))
+ (file-name (git-file-name "cl-base58" version))
+ (sha256
+ (base32 "01wiiyz1jzxx3zhxi2hpq5n8hv28g1mn0adk793vwjzh4v5bi5zz"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ '(#:asd-systems '("cl-base58-test" "cl-base58")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-tests
+ (lambda _
+ (substitute* "cl-base58-test.asd"
+ (("cl-test-more")
+ "prove"))
+ #t)))))
+ (native-inputs
+ `(("prove" ,sbcl-prove)))
+ (home-page "https://github.com/eudoxia0/cl-base58")
+ (synopsis "Implementation of base58 for Common Lisp")
+ (description
+ "This library implements the @code{base58} encoding algorithm. It's
+basically @code{base64} but with a smaller alphabet (58, as in the name) that
+doesn't include similar looking characters, among other things. See
+@url{https://github.com/bitcoin/bitcoin/blob/master/src/base58.h} for a full
+reference.")
+ (license license:expat))))
+
+(define-public cl-base58
+ (sbcl-package->cl-source-package sbcl-cl-base58))
+
+(define-public ecl-cl-base58
+ (sbcl-package->ecl-package sbcl-cl-base58))
+
+(define-public sbcl-bit-smasher
+ ;; No release.
+ (let ((commit "c2dcb3b5ec0e485484be681fe17c4e81e58790d9"))
+ (package
+ (name "sbcl-bit-smasher")
+ (version (git-version "1.0.2" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/thephoeron/bit-smasher/")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0wjmwn06fjpw0rlpaksf3ab727p8fnzj58z7jajl3m0wqd4ii74w"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("cl-base64" ,sbcl-cl-base64)
+ ("cl-base58" ,sbcl-cl-base58)))
+ ;; Load order matters for tests, both for file reading and evaluation.
+ (arguments
+ `(#:asd-systems '("bit-smasher-test" "bit-smasher")
+ #:asd-files '("bit-smasher.asd" "bit-smasher-test.asd")))
+ (home-page "https://github.com/thephoeron/bit-smasher/")
+ (synopsis "Handle bit vectors, bit vector arithmetic, and type conversions")
+ (description
+ "Utility library for handling bit vectors, bit vector arithmetic, and
+universal integer type conversions between bit-vectors, byte-vectors, octals,
+decimals, and hexadecimal notation.")
+ (license license:expat))))
+
+(define-public cl-bit-smasher
+ (sbcl-package->cl-source-package sbcl-bit-smasher))
+
+(define-public ecl-bit-smasher
+ (sbcl-package->ecl-package sbcl-bit-smasher))
+
+(define-public sbcl-overlord
+ ;; No release.
+ (let ((commit "a8f37b321a8aae1652fc50b78e74e57c771cc763"))
+ (package
+ (name "sbcl-overlord")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ruricolist/overlord/")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1maqm53yhlhaa3cka8xcc4sq24ifrr4y3y0s5dyyn682xsh14hb4"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("babel" ,sbcl-babel)
+ ("bit-smasher" ,sbcl-bit-smasher)
+ ("bordeaux-threads" ,sbcl-bordeaux-threads)
+ ("cl-strftime" ,sbcl-cl-strftime)
+ ("cmd" ,sbcl-cmd)
+ ("drakma" ,sbcl-drakma)
+ ("exit-hooks" ,sbcl-exit-hooks)
+ ("fset" ,sbcl-fset)
+ ("local-time" ,sbcl-local-time)
+ ("lparallel" ,sbcl-lparallel)
+ ("md5" ,sbcl-md5)
+ ("murmurhash" ,sbcl-cl-murmurhash)
+ ("named-readtables" ,sbcl-named-readtables)
+ ("ppcre" ,sbcl-cl-ppcre)
+ ("serapeum" ,sbcl-serapeum)
+ ("trivia" ,sbcl-trivia)
+ ("trivial-file-size" ,sbcl-trivial-file-size)))
+ (propagated-inputs
+ `(("quickproject" ,sbcl-quickproject)))
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (arguments
+ `(#:asd-files '("overlord.asd")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'include-overlord/net
+ (lambda _
+ (substitute* "all.lisp"
+ (("\\(:import-from :overlord/kernel :nproc\\)")
+ (string-append
+ "(:import-from :overlord/kernel :nproc)"
+ "\n"
+ "(:import-from :overlord/net)")))
+ #t)))))
+ (home-page "https://github.com/ruricolist/overlord")
+ (synopsis "Build system in Common Lisp")
+ (description
+ "Overlord is a build system in Common Lisp. It is a real build system,
+with all the modern features: rules with multiple outputs, parallel builds,
+immunity to clock issues, and dynamic dependencies.
+
+But Overlord is more than another build system. Overlord is a uniform
+approach to dependencies inside or outside of a Lisp image. Overlord is to
+Make what Lisp macros are to C macros.
+
+Overlord is designed to be used from the Lisp REPL. A command line interface
+is available in a separate repository. See
+@url{https://github.com/ruricolist/overlord-cli}.")
+ (license license:expat))))
+
+(define-public cl-overlord
+ (sbcl-package->cl-source-package sbcl-overlord))
+
+;; FIXME: Broken on ECL? https://github.com/ruricolist/overlord/issues/25
+;; (define-public ecl-overlord
+;; (sbcl-package->ecl-package sbcl-overlord))
+
+(define-public sbcl-xpath
+ ;; No release.
+ (let ((commit "d364da693a534e23bd5eb3a85420e9c25e6c75b3"))
+ (package
+ (name "sbcl-xpath")
+ (version (git-version "0.1" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sharplispers/xpath/")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1fb03fgnzrvh22lw1jdg04pmyja5fib5n42rzwp5mhr829yvxkvp"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("cxml" ,sbcl-cxml)
+ ("parse-number" ,sbcl-parse-number)
+ ("cl-ppcre" ,sbcl-cl-ppcre)
+ ("yacc" ,sbcl-cl-yacc)))
+ (home-page "https://github.com/sharplispers/xpath/")
+ (synopsis "Implementation of the XML Path Language (XPath) Version 1.0")
+ (description
+ "This library is an implementation of the XML Path Language (XPath)
+Version 1.0.")
+ (license license:bsd-2))))
+
+;; According to
+;; https://github.com/sharplispers/xpath/blob/master/doc/index.xml ECL is not
+;; supported.
+(define-public cl-xpath
+ (sbcl-package->cl-source-package sbcl-xpath))
+
+(define-public sbcl-fxml
+ ;; No release.
+ (let ((commit "a0e73bb48ef03adea94a55986cc27f522074c8e1"))
+ (package
+ (name "sbcl-fxml")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ruricolist/fxml/")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1vxdb1cjjqi986f72bggnw1s4yzv12g4li7vn4y49b6lphshr8lm"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("babel" ,sbcl-babel)
+ ("named-readtables" ,sbcl-named-readtables)
+ ("serapeum" ,sbcl-serapeum)
+ ("quri" ,sbcl-quri)
+ ("flexi-streams" ,sbcl-flexi-streams)
+ ("split-sequence" ,sbcl-split-sequence)
+ ("alexandria" ,sbcl-alexandria)
+ ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)
+ ("cxml" ,sbcl-cxml)
+ ("cxml-rng" ,sbcl-cxml-rng)
+ ("xpath" ,sbcl-xpath)))
+ (home-page "https://github.com/ruricolist/fxml")
+ (synopsis "XML parser and serializer in Common Lisp")
+ (description
+ "FXML is a secure-by-default, error-recovering XML parser and serializer.
+It is a fork of CXML.
+
+You should use FXML instead of CXML if:
+@itemize
+@item You are parsing potentially ill-formed XML.
+@item You are parsing potentially malicious XML.
+@item You need to use Klacks with namespaces.
+@end itemize
+
+FXML’s API is very close to CXML's, and for the most part you can refer to the
+CXML documentation for usage.")
+ (license license:llgpl))))
+
+(define-public cl-fxml
+ (sbcl-package->cl-source-package sbcl-fxml))
+
+(define-public sbcl-vernacular
+ ;; No release.
+ (let ((commit "79be179e9ada423b3ec41d2a1ea6f6e0266ed21f"))
+ (package
+ (name "sbcl-vernacular")
+ (version (git-version "0.8.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ruricolist/vernacular/")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "19vzn28hw4is4sgmvzqin18ds89s0pai21vcm0ky10vmfv6wg745"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; The demo depends on cl-js, which we don't have at this point.
+ (delete-file-recursively "demo")
+ #t))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("overlord" ,sbcl-overlord)
+ ("trivial-macroexpand-all" ,sbcl-trivial-macroexpand-all)
+ ("local-time" ,sbcl-local-time)
+ ("parse-js" ,sbcl-parse-js)
+ ("trivia" ,sbcl-trivia)
+ ("trivial-garbage" ,sbcl-trivial-garbage)
+ ("named-readtables" ,sbcl-named-readtables)
+ ("alexandria" ,sbcl-alexandria)
+ ("serapeum" ,sbcl-serapeum)
+ ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
+ (arguments
+ ;; Circular dependency: Tests depend on core-lisp
+ ;; (http://github.com/ruricolist/core-lisp) which depends on
+ ;; Vernacular.
+ '(#:tests? #f))
+ (home-page "https://github.com/ruricolist/vernacular")
+ (synopsis "Module system for languages that compile to Common Lisp")
+ (description
+ "Vernacular is a build and module system for languages that compile to
+Common Lisp. It allows languages to compile to Lisp while remaining part of
+the Common Lisp ecosystem. Vernacular languages interoperate with Common Lisp
+and one another.
+
+Vernacular handles locating files, compiling files into FASLs, tracking
+dependencies and rebuilding, and export and import between your new language,
+Lisp, and any other language Vernacular supports.
+
+Vernacular builds on Overlord and is inspired by Racket.")
+ (license license:expat))))
+
+(define-public cl-vernacular
+ (sbcl-package->cl-source-package sbcl-vernacular))