aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/lisp-xyz.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/lisp-xyz.scm')
-rw-r--r--gnu/packages/lisp-xyz.scm970
1 files changed, 916 insertions, 54 deletions
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index f2fe9c93d1..a51691ac92 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -22,10 +22,11 @@
;;; Copyright © 2020, 2021 Adam Kandur <rndd@tuta.io>
;;; Copyright © 2020, 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
;;; Copyright © 2021 Aurora <rind38@disroot.org>
-;;; Copyright © 2021 Matthew Kraai <kraai@ftbfs.org>
+;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
;;; Copyright © 2021 André A. Gomes <andremegafone@gmail.com>
;;; Copyright © 2021 Cage <cage-dev@twistfold.it>
;;; Copyright © 2021 Cameron Chaparro <cameron@cameronchaparro.com>
+;;; Copyright © 2021 Charles Jackson <charles.b.jackson@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -90,6 +91,7 @@
#:use-module (gnu packages web)
#:use-module (gnu packages webkit)
#:use-module (gnu packages xdisorg)
+ #:use-module (gnu packages xorg)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-19))
@@ -3040,7 +3042,7 @@ is statically typed so there are differences.")
(define-public sbcl-cffi
(package
(name "sbcl-cffi")
- (version "0.23.0")
+ (version "0.24.1")
(source
(origin
(method git-fetch)
@@ -3049,7 +3051,7 @@ is statically typed so there are differences.")
(commit (string-append "v" version))))
(file-name (git-file-name "cffi-bootstrap" version))
(sha256
- (base32 "03s98imc5niwnpj3hhrafl7dmxq45g74h96sm68976k7ahi3vl5b"))))
+ (base32 "17ryim4xilb1rzxydfr7595dnhqkk02lmrbkqrkvi9091shi4cj3"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("alexandria" ,sbcl-alexandria)
@@ -3591,6 +3593,48 @@ Lisp, featuring:
(define-public ecl-cl-markup
(sbcl-package->ecl-package sbcl-cl-markup))
+;;; The following package is renamed from "markup" to "markup-reader" in order
+;;; not to conflict with the "cl-markup" package.
+(define-public sbcl-markup-reader
+ (let ((commit "d2d4d7b073554f47c24223a9304452966608702e")
+ (revision "1"))
+ (package
+ (name "sbcl-markup-reader")
+ (version (git-version "0.0.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/moderninterpreters/markup")
+ (commit commit)))
+ (file-name (git-file-name "markup-reader" version))
+ (sha256
+ (base32 "0i3v938j8zpzkd6p9j8gadp5zndjcdxhswj1qgsp592v6497rpzj"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ '(#:asd-systems '("markup")))
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("cl-str" ,sbcl-cl-str)
+ ("named-readtables" ,sbcl-named-readtables)
+ ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
+ (home-page "https://github.com/moderninterpreters/markup")
+ (synopsis "Reader-macro to read HTML tags inside of Common Lisp code")
+ (description
+ "Markup allows the use of HTML syntax with in Common Lisp code.
+This has the advantage of being able to copy HTML snippets and have them
+instantly be functional, less double quotes than a s-expression approach,
+and designers will be able to understand the embeded HTML.")
+ (license license:asl2.0))))
+
+(define-public ecl-markup-reader
+ (sbcl-package->ecl-package sbcl-markup-reader))
+
+(define-public cl-markup-reader
+ (sbcl-package->cl-source-package sbcl-markup-reader))
+
(define-public sbcl-cl-mustache
(package
(name "sbcl-cl-mustache")
@@ -4630,7 +4674,7 @@ Lisp.")
(define-public sbcl-static-vectors
(package
(name "sbcl-static-vectors")
- (version "1.8.6")
+ (version "1.8.9")
(source
(origin
(method git-fetch)
@@ -4639,7 +4683,7 @@ Lisp.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "01hwxzhyjkhsd3949g70120g7msw01byf0ia0pbj319q1a3cq7j9"))))
+ (base32 "079qa20lhanzsz1qf4iags91n0ziylbjgbcymm5a5qj7yryas4fw"))))
(native-inputs
`(("sbcl-fiveam" ,sbcl-fiveam)))
(inputs
@@ -6712,8 +6756,8 @@ extension-points via the concept of hooks.")
(sbcl-package->ecl-package sbcl-cl-hooks))
(define-public sbcl-cl-autowrap
- (let ((revision "1")
- (commit "ae846d6968fc0d000de0c541638929a157f3009e"))
+ (let ((revision "2")
+ (commit "a5d71ebd7c21b87f449db1e16ab815750d7c0ea4"))
;; no taged branches
(package
(name "sbcl-cl-autowrap")
@@ -6724,10 +6768,12 @@ extension-points via the concept of hooks.")
(uri (git-reference
(url "https://github.com/rpav/cl-autowrap")
(commit commit)))
- (file-name (git-file-name name version))
+ (file-name (git-file-name "cl-autowrap" version))
(sha256
- (base32 "1gisldp2zns92kdcaikghm7c38ldy2d884n8bfg0wcjvbz78p3ar"))))
+ (base32 "0795c817m1c41cz3ywzzg83z4pgkxdg6si553pay9mdgjvmrwmaw"))))
(build-system asdf-build-system/sbcl)
+ (arguments
+ `(#:asd-systems '("cl-plus-c" "cl-autowrap")))
(inputs
`(("alexandria" ,sbcl-alexandria)
("cffi" ,sbcl-cffi)
@@ -7579,8 +7625,8 @@ implementation specific equivalent.")
(sbcl-package->ecl-package sbcl-trivial-macroexpand-all))
(define-public sbcl-serapeum
- (let ((commit "f5da17b635ecb11d8317800f1674e88ca779dac5")
- (revision "5"))
+ (let ((commit "c29a52ff0c5f6e60b09919c3a0daa8df7599ddb9")
+ (revision "6"))
(package
(name "sbcl-serapeum")
(version (git-version "0.0.0" revision commit))
@@ -7593,7 +7639,7 @@ implementation specific equivalent.")
(commit commit)))
(file-name (git-file-name name version))
(sha256
- (base32 "16mz6xgcb5pkjg7xb760ga4hxbdhm9f843l42kc546hknhfq8x7b"))))
+ (base32 "0vij9jhji09way1rpd0r5sgjnh5amm3f2ymppnqkw0c6nnk2p0kd"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("alexandria" ,sbcl-alexandria)
@@ -9774,6 +9820,35 @@ caching based on arguments (an expanded form of memoization).")
(define-public ecl-function-cache
(sbcl-package->ecl-package sbcl-function-cache))
+(define-public sbcl-cache-while
+ (let ((commit "38e9ffbdb2c894670c366c1e5802ffcc8cfd43a7")
+ (revision "1"))
+ (package
+ (name "sbcl-cache-while")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/charje/cache-while")
+ (commit commit)))
+ (file-name (git-file-name "cache-while" version))
+ (sha256
+ (base32 "1qil68rfn5irmkb0jk1f6g1zy80wgc3skl8cr4rfgh7ywgm5izx3"))))
+ (build-system asdf-build-system/sbcl)
+ (home-page "https://github.com/charje/cache-while")
+ (synopsis "Temporary / one-time caching macro for Common Lisp")
+ (description
+ "This is a Common Lisp macro for defining temporary caches that
+invalidate based on expressions evaluating to different values.")
+ (license license:llgpl))))
+
+(define-public cl-cache-while
+ (sbcl-package->cl-source-package sbcl-cache-while))
+
+(define-public ecl-cache-while
+ (sbcl-package->ecl-package sbcl-cache-while))
+
(define-public sbcl-type-r
(let ((commit "83c89e38f2f7a7b16f1012777ecaf878cfa6a267")
(revision "1"))
@@ -9853,6 +9928,48 @@ correctly.")
(define-public ecl-trivialib-type-unify
(sbcl-package->ecl-package sbcl-trivialib-type-unify))
+(define-public sbcl-cl-unification
+ (let ((commit "01079f34d197495880aa49ab727d63774d83035c")
+ (revision "1"))
+ (package
+ (name "sbcl-cl-unification")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.common-lisp.net/cl-unification/cl-unification")
+ (commit commit)))
+ (file-name (git-file-name "cl-unification" version))
+ (sha256
+ (base32 "0nhqamn3qgg38i6aw2pshffdwr2hzslycg8ficmn333gw0h9rf4g"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("ptester" ,sbcl-ptester)))
+ (inputs
+ `(("cl-ppcre" ,sbcl-cl-ppcre)))
+ (home-page "https://common-lisp.net/project/cl-unification/")
+ (synopsis "Unification framework for Common Lisp")
+ (description
+ "This package provides a framework to unify arbitrary
+Common Lisp objects while constructing bindings for placeholders
+(unification variables) in a template sublanguage.")
+ (license license:bsd-0))))
+
+(define-public ecl-cl-unification
+ (let ((pkg (sbcl-package->ecl-package sbcl-cl-unification)))
+ (package
+ (inherit pkg)
+ (arguments
+ (substitute-keyword-arguments (package-arguments pkg)
+ ;; The tests fail on ECL with:
+ ;; "In MAKE-ARRAY: the elements in :INITIAL-CONTENTS do not match
+ ;; the array dimensions."
+ ((#:tests? _ #f) #f))))))
+
+(define-public cl-unification
+ (sbcl-package->cl-source-package sbcl-cl-unification))
+
(define-public sbcl-specialized-function
(let ((commit "5e2b04432bdf728496e6ff7227f210f845af7247")
(revision "3"))
@@ -13214,45 +13331,87 @@ and comparison operations when used heavily in numeric code.")
(define-public ecl-static-dispatch
(sbcl-package->ecl-package sbcl-static-dispatch))
+(define-public sbcl-cl-form-types
+ (package
+ (name "sbcl-cl-form-types")
+ (version "0.3.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/alex-gutev/cl-form-types")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "17kdjqmm2ib347b8lqm3k4kca2j53kr0azb6h7m0v5i157ibndsw"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("agutil" ,sbcl-agutil)
+ ("anaphora" ,sbcl-anaphora)
+ ("arrows" ,sbcl-arrows)
+ ("cl-environments" ,sbcl-cl-environments)
+ ("introspect-environment" ,sbcl-introspect-environment)
+ ("optima" ,sbcl-optima)))
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (home-page "https://github.com/alex-gutev/cl-form-types")
+ (synopsis "determining the types of Common Lisp forms")
+ (description "This library provides functions for determining the value
+types of Common Lisp forms, based on type information contained in the
+environment.
+
+In order for this library to work the values types of variables and return
+types of functions have to be declared.
+
+Macros and symbol-macros are fully expanded and all special forms, except
+@code{CATCH}, are supported.")
+ (license license:expat)))
+
+(define-public cl-form-types
+ (sbcl-package->cl-source-package sbcl-cl-form-types))
+
+(define-public ecl-cl-form-types
+ (sbcl-package->ecl-package sbcl-cl-form-types))
+
(define-public sbcl-generic-cl
- ;; Latest commit includes a necessary fix for our Guix build.
- (let ((commit "8e5a81487ee3c13fe5ffdc8bdda161d476639535"))
- (package
- (name "sbcl-generic-cl")
- (version (git-version "0.7.1" "1" commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/alex-gutev/generic-cl")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "11w0g79s4wmc78vmfng437rmsgnp5qn246zcyr540fp5nw0ad6ix"))))
- (build-system asdf-build-system/sbcl)
- (inputs
- `(("agutil" ,sbcl-agutil)
- ("alexandria" ,sbcl-alexandria)
- ("anaphora" ,sbcl-anaphora)
- ("arrows" ,sbcl-arrows)
- ("cl-custom-hash-table" ,sbcl-custom-hash-table)
- ("static-dispatch" ,sbcl-static-dispatch)
- ("trivia" ,sbcl-trivia)))
- (native-inputs
- `(("prove" ,sbcl-prove)))
- (arguments
- ;; Tests fail because SBCL head size is not high enough.
- ;; https://github.com/alex-gutev/generic-cl/issues/6
- `(#:tests? #f))
- (home-page "https://alex-gutev.github.io/generic-cl/")
- (synopsis "Generic function interface to standard Common Lisp functions")
- (description "@code{generic-cl} provides a generic function wrapper over
+ (package
+ (name "sbcl-generic-cl")
+ (version "0.9")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/alex-gutev/generic-cl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1c40vqb49g0adfv17jxgk0ds1n6a2dph30cibq01sicmqdgrrbi8"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("agutil" ,sbcl-agutil)
+ ("alexandria" ,sbcl-alexandria)
+ ("anaphora" ,sbcl-anaphora)
+ ("arrows" ,sbcl-arrows)
+ ("cl-custom-hash-table" ,sbcl-custom-hash-table)
+ ("cl-form-types" ,sbcl-cl-form-types)
+ ("static-dispatch" ,sbcl-static-dispatch)
+ ("trivia" ,sbcl-trivia)))
+ (native-inputs
+ `(("prove" ,sbcl-prove)))
+ (arguments
+ ;; Tests fail because SBCL head size is not high enough.
+ ;; https://github.com/alex-gutev/generic-cl/issues/6
+ `(#:tests? #f))
+ (home-page "https://alex-gutev.github.io/generic-cl/")
+ (synopsis "Generic function interface to standard Common Lisp functions")
+ (description "@code{generic-cl} provides a generic function wrapper over
various functions in the Common Lisp standard, such as equality predicates and
sequence operations. The goal of this wrapper is to provide a standard
interface to common operations, such as testing for the equality of two
objects, which is extensible to user-defined types.")
- (license license:expat))))
+ (license license:expat)))
(define-public cl-generic-cl
(sbcl-package->cl-source-package sbcl-generic-cl))
@@ -15122,8 +15281,8 @@ HTML documents.")
(sbcl-package->cl-source-package sbcl-cl-html-diff))
(define-public sbcl-tooter
- (let ((commit "b8d4b245b1d946bc9da6f51a3d8c2dc43e4d3868")
- (revision "1"))
+ (let ((commit "b1639d8a58dfe8020c82ed36697b7a668ef41a09")
+ (revision "2"))
(package
(name "sbcl-tooter")
(version (git-version "1.0.0" revision commit))
@@ -15135,7 +15294,7 @@ HTML documents.")
(commit commit)))
(file-name (git-file-name "tooter" version))
(sha256
- (base32 "0g40dlis4dbw4p3zxz3scx27b9zm8zlzihywapf5zqrdqfx5hpq9"))))
+ (base32 "0842lbj9ml6qxdm5xvhdbm87wyrvrq7bxawa6i8wk80n8lnvmhdw"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
@@ -15156,8 +15315,8 @@ protocol for Mastodon.")
(sbcl-package->cl-source-package sbcl-tooter))
(define-public sbcl-croatoan
- (let ((commit "7077ef14d27e8708515ad8d309886f516e7fbd98")
- (revision "2"))
+ (let ((commit "a577951d8dd607f828d6efb3290b4e8ac9f1e654")
+ (revision "3"))
(package
(name "sbcl-croatoan")
(version (git-version "0.0.1" revision commit))
@@ -15169,7 +15328,7 @@ protocol for Mastodon.")
(commit commit)))
(file-name (git-file-name "croatoan" version))
(sha256
- (base32 "0gf2sjpsdkd9s8imwy2wjrkdx82a5sc4yy9bndlnjlwmdraw4j37"))))
+ (base32 "1y7a13mzy0cz19pw0xvqwca1s7frfaqryaqwl1mrq7iz84sw0fcw"))))
(build-system asdf-build-system/sbcl)
(arguments
'(#:phases
@@ -16369,6 +16528,41 @@ for Common Lisp.")
(define-public cl-bknr-datastore
(sbcl-package->cl-source-package sbcl-bknr-datastore))
+(define-public sbcl-authentic
+ (let ((commit "d5ff2f4666ce24e41fb4ca22476c782c070e6f6e")
+ (revision "1"))
+ (package
+ (name "sbcl-authentic")
+ (version (git-version "0.1.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/charje/cl-authentic")
+ (commit commit)))
+ (file-name (git-file-name "cl-authentic" version))
+ (sha256
+ (base32 "1dmi9lw1ickx0i41lh9sfchalvy7km6wc9w3szfjlvny7svwf6qp"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (inputs
+ `(("clsql" ,sbcl-clsql)
+ ("ironclad" ,sbcl-ironclad)))
+ (home-page "https://github.com/charje/cl-authentic")
+ (synopsis "User/password management for Common Lisp applications")
+ (description "Authentic provides a light-weight and extendible
+solution to user/password management for Common Lisp applications. It has
+features such as safe password storage in a database, password reset, user
+confirmation tokens, and user authentication.")
+ (license license:llgpl))))
+
+(define-public ecl-authentic
+ (sbcl-package->ecl-package sbcl-authentic))
+
+(define-public cl-authentic
+ (sbcl-package->cl-source-package sbcl-authentic))
+
(define-public sbcl-3d-vectors
(let ((commit "29bb9684df803590deed344af63dbf7b712aabc0")
(revision "1"))
@@ -17657,7 +17851,7 @@ Common Lisp based on the hash array-mapped trie data structure.")
(define-public sbcl-cl-gserver
(package
(name "sbcl-cl-gserver")
- (version "1.7.2")
+ (version "1.8.0")
(source
(origin
(method git-fetch)
@@ -17666,7 +17860,7 @@ Common Lisp based on the hash array-mapped trie data structure.")
(commit version)))
(file-name (git-file-name "cl-gserver" version))
(sha256
- (base32 "1vkxs6ybi1pkpji2crmhq8c71zg0dn2ji0lcwhs0rivphz5jxk24"))))
+ (base32 "1bfz7z8v417dvsp1jz76ir3ihcs8g7zis2d56xx1dpzqzjd95g7z"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("alexandria" ,sbcl-alexandria)
@@ -17695,3 +17889,671 @@ computing and event based message handling.")
(define-public cl-gserver
(sbcl-package->cl-source-package sbcl-cl-gserver))
+
+(define-public sbcl-cl-posix-mqueue
+ (let ((commit "8977370c7206d1f62bd1be80f4254af40654b83f")
+ (revision "1"))
+ (package
+ (name "sbcl-cl-posix-mqueue")
+ (version (git-version "0.1.2" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/xFA25E/cl-posix-mqueue")
+ (commit commit)))
+ (file-name (git-file-name "cl-posix-mqueue" version))
+ (sha256
+ (base32 "04519rg8vc782z097dzlb8nx0skab2fy2zd0m60r6mz2nw8xdvh6"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ `(#:test-asd-file "cl-posix-mqueue-tests.asd"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-librt-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/spec.lisp"
+ (("librt.so" all)
+ (string-append (assoc-ref inputs "glibc") "/lib/" all))))))))
+ (native-inputs
+ `(("cl-ppcre" ,sbcl-cl-ppcre)
+ ("rove" ,sbcl-rove)))
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("babel" ,sbcl-babel)
+ ("cffi" ,sbcl-cffi)
+ ("glibc" ,glibc)
+ ("local-time" ,sbcl-local-time)))
+ (home-page "https://github.com/xFA25E/cl-posix-mqueue")
+ (synopsis "Common Lisp binding to POSIX mqueue")
+ (description
+ "This package provides Common Lisp bindings to POSIX message queue, an
+@acronym{IPC, Inter-Process Communication} method that is easy to use and quick
+to setup.")
+ (license license:gpl3))))
+
+(define-public ecl-cl-posix-mqueue
+ (sbcl-package->ecl-package sbcl-cl-posix-mqueue))
+
+(define-public cl-posix-mqueue
+ (sbcl-package->cl-source-package sbcl-cl-posix-mqueue))
+
+(define-public sbcl-sdl2
+ (let ((commit "bb2aa2a41cf799e3bb1ddf50de41fe389c6db668")
+ (revision "1"))
+ (package
+ (name "sbcl-sdl2")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/lispgames/cl-sdl2")
+ (commit commit)))
+ (file-name (git-file-name "cl-sdl2" version))
+ (sha256
+ (base32 "1a4904310z2wwq80grnlixmyz30452vgd4lh74y105j2yrr43z97"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/library.lisp"
+ (("libSDL2-2.0.so.0" all)
+ (string-append (assoc-ref inputs "libsdl2") "/lib/" all)))
+ #t)))))
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("cl-autowrap" ,sbcl-cl-autowrap)
+ ("cl-ppcre" ,sbcl-cl-ppcre)
+ ("libsdl2" ,sdl2)
+ ("trivial-channels" ,sbcl-trivial-channels)
+ ("trivial-features" ,sbcl-trivial-features)))
+ (home-page "https://github.com/lispgames/cl-sdl2")
+ (synopsis "Common Lisp bindings for SDL2 using C2FFI")
+ (description
+ "This package provides a Common Lisp wrapper system for the SDL 2.0
+C Library.")
+ (license license:expat))))
+
+(define-public ecl-sdl2
+ (sbcl-package->ecl-package sbcl-sdl2))
+
+(define-public cl-sdl2
+ (sbcl-package->cl-source-package sbcl-sdl2))
+
+(define-public sbcl-cl-gamepad
+ (let ((commit "7e12137927b42db064ffbf9ea34bd4790ad4bb33")
+ (revision "1"))
+ (package
+ (name "sbcl-cl-gamepad")
+ (version (git-version "3.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Shirakumo/cl-gamepad")
+ (commit commit)))
+ (file-name (git-file-name "cl-gamepad" version))
+ (sha256
+ (base32 "1gzx590i7s81qmramnjvfzrrq5yppas8yxqq1jl3yzqhhjwjfvkd"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-evdev-lib-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "evdev-cffi.lisp"
+ (("libevdev.so" all)
+ (string-append (assoc-ref inputs "libevdev")
+ "/lib/" all)))))
+ ;; Here we use a custom build phase to work around a compilation bug.
+ ;; Using 'asdf:compile-system' fails, but using 'asdf:load-system'
+ ;; succeeds (and also compiles the system).
+ ;; See https://github.com/Shirakumo/cl-gamepad/issues/8
+ (replace 'build
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (source-path (string-append out
+ "/share/common-lisp/"
+ (%lisp-type)))
+ (translations `((,source-path
+ :**/ :*.*.*)
+ (,(string-append out
+ "/lib/common-lisp/"
+ (%lisp-type))
+ :**/ :*.*.*))))
+ (setenv "ASDF_OUTPUT_TRANSLATIONS"
+ (format #f "~S" `(:output-translations
+ ,translations
+ :inherit-configuration)))
+ (setenv "HOME" (assoc-ref outputs "out"))
+ (with-directory-excursion (string-append source-path
+ "/cl-gamepad")
+ (invoke (%lisp-type)
+ "--eval" "(require :asdf)"
+ "--eval" "(asdf:load-asd (truename \"cl-gamepad.asd\"))"
+ "--eval" "(asdf:load-system :cl-gamepad)"
+ "--eval" "(quit)"))))))))
+ (inputs
+ `(("cffi" ,sbcl-cffi)
+ ("documentation-utils" ,sbcl-documentation-utils)
+ ("libevdev" ,libevdev)
+ ("trivial-features" ,sbcl-trivial-features)))
+ (home-page "https://shirakumo.github.io/cl-gamepad/")
+ (synopsis "Library for access to gamepads and joystick input devices")
+ (description
+ "This is a library to provide cross-platform access to gamepads,
+joysticks, and other such HID devices.")
+ (license license:zlib))))
+
+(define-public ecl-cl-gamepad
+ (sbcl-package->ecl-package sbcl-cl-gamepad))
+
+(define-public cl-gamepad
+ (sbcl-package->cl-source-package sbcl-cl-gamepad))
+
+(define-public sbcl-trial
+ (let ((commit "ba178cac3a5528c570c7e8dad66c58cc770db53a")
+ (revision "1"))
+ (package
+ (name "sbcl-trial")
+ (version (git-version "1.2.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Shirakumo/trial")
+ (commit commit)))
+ (file-name (git-file-name "trial" version))
+ (sha256
+ (base32 "1vpv9nrpq93fz1c5cyi1hazaaz9ijbrf1l7zwp7gammndr5v028r"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("trivial-features" ,sbcl-trivial-features)))
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("3d-matrices" ,sbcl-3d-matrices)
+ ("3d-vectors" ,sbcl-3d-vectors)
+ ("bordeaux-threads" ,sbcl-bordeaux-threads)
+ ("cl-gamepad" ,sbcl-cl-gamepad)
+ ("cl-jpeg" ,sbcl-cl-jpeg)
+ ("cl-opengl" ,sbcl-cl-opengl)
+ ("cl-ppcre" ,sbcl-cl-ppcre)
+ ("cl-tga" ,sbcl-cl-tga)
+ ("closer-mop" ,sbcl-closer-mop)
+ ("deploy" ,sbcl-deploy)
+ ("fast-io" ,sbcl-fast-io)
+ ("flare" ,sbcl-flare)
+ ("float-features" ,sbcl-float-features)
+ ("flow" ,sbcl-flow)
+ ("for" ,sbcl-for)
+ ("form-fiddle" ,sbcl-form-fiddle)
+ ("glsl-toolkit" ,sbcl-glsl-toolkit)
+ ("ieee-floats" ,sbcl-ieee-floats)
+ ("jsown" ,sbcl-jsown)
+ ("lambda-fiddle" ,sbcl-lambda-fiddle)
+ ("lquery" ,sbcl-lquery)
+ ("messagebox" ,sbcl-messagebox)
+ ("mmap" ,sbcl-mmap)
+ ("pathname-utils" ,sbcl-pathname-utils)
+ ("pngload" ,sbcl-pngload)
+ ("retrospectiff" ,sbcl-retrospectiff)
+ ("static-vectors" ,sbcl-static-vectors)
+ ("terrable" ,sbcl-terrable)
+ ("trivial-garbage" ,sbcl-trivial-garbage)
+ ("trivial-indent" ,sbcl-trivial-indent)
+ ("verbose" ,sbcl-verbose)
+ ("zpng" ,sbcl-zpng)))
+ (home-page "https://github.com/Shirakumo/trial")
+ (synopsis "Common Lisp game engine")
+ (description
+ "Trial is a game engine written in Common Lisp. Unlike many other
+engines, it is meant to be more of a loose connection of components that can be
+fit together as required by any particular game.")
+ (license license:zlib))))
+
+(define-public ecl-trial
+ (sbcl-package->ecl-package sbcl-trial))
+
+(define-public cl-trial
+ (sbcl-package->cl-source-package sbcl-trial))
+
+(define-public sbcl-org-sampler
+ (let ((commit "ee135a417750e5b1d810bb9574eb85223cb3038a")
+ (revision "1"))
+ (package
+ (name "sbcl-org-sampler")
+ (version (git-version "0.2.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jphmrst/cl-org-sampler")
+ (commit commit)))
+ (file-name (git-file-name "cl-org-sampler" version))
+ (sha256
+ (base32 "1dg029in14928qfxvfshyxmdwhzskzhxx3na0zy98ybx69b21qla"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("iterate" ,sbcl-iterate)))
+ (home-page "https://github.com/jphmrst/cl-org-sampler")
+ (synopsis "Extracting Common Lisp docstrings as Emacs Org-mode documents")
+ (description
+ "ORG-SAMPLER allows using Lisp docstrings and reflection to make org-mode
+text for inclusion into a larger document.")
+ (license license:llgpl))))
+
+(define-public ecl-org-sampler
+ (sbcl-package->ecl-package sbcl-org-sampler))
+
+(define-public cl-org-sampler
+ (sbcl-package->cl-source-package sbcl-org-sampler))
+
+(define-public sbcl-acl-compat
+ ;; There does not seem to be proper releases.
+ (let ((commit "cac1d6920998ddcbee8310a873414732e707d8e5"))
+ (package
+ (name "sbcl-acl-compat")
+ (version (git-version "0.1.1" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "git://git.code.sf.net/p/portableaserve/git")
+ (commit commit)))
+ (file-name (git-file-name "acl-compat" version))
+ (sha256
+ (base32 "0ak6mqp84sjr0a7h5svr16vra4bf4fcx6wpir0n88dc1vjwy5xqa"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'cd-acl-compat
+ (lambda _
+ (chdir "acl-compat")
+ #t)))))
+ (inputs
+ `(("puri" ,sbcl-puri)
+ ("cl-ppcre" ,sbcl-cl-ppcre)
+ ("ironclad" ,sbcl-ironclad)
+ ("cl-fad" ,sbcl-cl-fad)))
+ (home-page "https://sourceforge.net/projects/portableaserve/")
+ (synopsis "AllegroServe, a web server written in Common Lisp")
+ (description
+ "The server part of AllegroServe can be used either as a standalone web
+server or a module loaded into an application to provide a user interface to
+the application. AllegroServe's proxy ability allows it to run on the gateway
+machine between some internal network and the Internet. AllegroServe's client
+functions allow Lisp programs to explore the web.")
+ (license license:llgpl))))
+
+(define-public cl-acl-compat
+ (sbcl-package->cl-source-package sbcl-acl-compat))
+
+(define-public sbcl-aserve
+ ;; There does not seem to be proper releases.
+ (let ((commit "cac1d6920998ddcbee8310a873414732e707d8e5"))
+ (package
+ (name "sbcl-aserve")
+ (version (git-version "1.2.50" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ ;; https://github.com/franzinc/aserve/ seems to be incompatible
+ ;; with SBCL, etc.
+ (url "git://git.code.sf.net/p/portableaserve/git")
+ (commit commit)))
+ (file-name (git-file-name "aserve" version))
+ (sha256
+ (base32 "0ak6mqp84sjr0a7h5svr16vra4bf4fcx6wpir0n88dc1vjwy5xqa"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'cd-aserve
+ (lambda _
+ (chdir "aserve")
+ #t))
+ (add-after 'cd-aserve 'fix-asd
+ (lambda _
+ (substitute* "aserve.asd"
+ ((" :force t") ""))
+ #t))
+ (add-after 'cd-aserve 'fix-tests
+ (lambda _
+ (substitute* "test/t-aserve.cl"
+ (("\\(asdf:oos 'asdf:load-op :ptester\\)") ""))
+ #t)))))
+ (inputs
+ `(("acl-compat" ,sbcl-acl-compat)))
+ (home-page "https://franz.com/support/documentation/current/doc/aserve/aserve.html")
+ (synopsis "AllegroServe, a web server written in Common Lisp")
+ (description
+ "The server part of AllegroServe can be used either as a standalone web
+server or a module loaded into an application to provide a user interface to
+the application. AllegroServe's proxy ability allows it to run on the gateway
+machine between some internal network and the Internet. AllegroServe's client
+functions allow Lisp programs to explore the web.")
+ (license license:llgpl))))
+
+(define-public cl-aserve
+ (sbcl-package->cl-source-package sbcl-aserve))
+
+(define-public sbcl-rss
+ ;; No release.
+ (let ((commit "51d0145e91b86327ae5c36364f9c3048052e7a58"))
+ (package
+ (name "sbcl-rss")
+ (version (git-version "0.9.1.1" "2" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "http://git.kpe.io/cl-rss.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0wv3j13fj73gigriw5r9vi920hz05ld7zllsvbxdxvmyfy9k1kly"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("aserve" ,sbcl-aserve)
+ ("kmrcl" ,sbcl-kmrcl)
+ ("xmls" ,sbcl-xmls)))
+ (home-page "https://github.com/nsrahmad/cl-rss")
+ (synopsis "Common Lisp RSS processor")
+ (description
+ "This package provides a Common Lisp library for fetching and parsing
+RSS feeds data via HTTP. Currently, it supports RSS versions 0.90,
+0.91, and 0.92 as well as RSS version 2.")
+ (license license:bsd-3))))
+
+(define-public cl-rss
+ (sbcl-package->cl-source-package sbcl-rss))
+
+(define-public sbcl-trivial-with-current-source-form
+ (let ((commit "9e343e043a77a5478c1f77bb626db22335fbbfb8")
+ (revision "1"))
+ (package
+ (name "sbcl-trivial-with-current-source-form")
+ (version (git-version "0.1.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url
+ "https://github.com/scymtym/trivial-with-current-source-form")
+ (commit commit)))
+ (file-name (git-file-name "trivial-with-current-source-form" version))
+ (sha256
+ (base32 "15zs7mc422ycp1cvcxmirif1dq15mlmv8vzd6l6nzn4qgmph9wz0"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)))
+ (home-page "https://github.com/scymtym/trivial-with-current-source-form")
+ (synopsis "Help producing better errors for macro users")
+ (description
+ "This library allows macro writers to provide better feedback to macro
+users when errors are signaled during macroexpansion. It uses the compiler's
+concept of a source-form to report where the error or warning is located.")
+ (license license:lgpl3))))
+
+(define-public ecl-trivial-with-current-source-form
+ ;; Trivial-with-current-source-form does not give any benefits on ECL.
+ ;; This package is so packages dependent on trivial-with-current-source-form
+ ;; can be loaded on ECL.
+ (sbcl-package->ecl-package sbcl-trivial-with-current-source-form))
+
+(define-public cl-trivial-with-current-source-form
+ (sbcl-package->cl-source-package sbcl-trivial-with-current-source-form))
+
+(define-public sbcl-tailrec
+ (let ((commit "6f882846d8f5bca9138df26510862e64bb15d92f")
+ (revision "2"))
+ (package
+ (name "sbcl-tailrec")
+ (version (git-version "0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/charje/tailrec")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1h8m2npdzd2cpnl75pvv4yvvfwxa7kl6qvalc9s0y4yws0kaih3i"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandia" ,sbcl-alexandria)
+ ("trivial-macroexpand-all" ,sbcl-trivial-macroexpand-all)
+ ("trivial-with-current-source-form"
+ ,sbcl-trivial-with-current-source-form)))
+ (home-page "https://github.com/charje/tailrec")
+ (synopsis "Macro to optimize a Common Lisp function for tail recursion")
+ (description "Just wrap your Common Lisp function in this macro call and
+it will be optimized for tail recursion. You will be warned if the function
+is not tail recursive.")
+ (license license:llgpl))))
+
+(define-public ecl-tailrec
+ (sbcl-package->ecl-package sbcl-tailrec))
+
+(define-public cl-tailrec
+ (sbcl-package->cl-source-package sbcl-tailrec))
+
+(define-public sbcl-issr-core
+ (let ((commit "64e3b07a63a7ca3ad70ba42474f98ac4513580aa")
+ (revision "1"))
+ (package
+ (name "sbcl-issr-core")
+ (version (git-version "0.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/interactive-ssr/core")
+ (commit commit)))
+ (file-name (git-file-name "issr-core" version))
+ (sha256
+ (base32 "1bajb09crzadkirdpd6jrpcc55irjd4sxzavygr25l85pafyhniw"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("cl-str" ,sbcl-cl-str)
+ ("global-vars" ,sbcl-global-vars)
+ ("plump" ,sbcl-plump)
+ ("tailrec" ,sbcl-tailrec)))
+ (home-page
+ "https://github.com/interactive-ssr/client/blob/master/main.org")
+ (synopsis "The core functionality for ISSR server modules")
+ (description
+ "ISSR core provides functions and variables for ISSR server modules so
+that different servers can behave similarly. The most important features are
+Document Object Model differencing to generate instructions to update a DOM,
+and DOM cleaning, to ensure that all remote DOMs are the same.")
+ (license license:llgpl))))
+
+(define-public ecl-issr-core
+ (sbcl-package->ecl-package sbcl-issr-core))
+
+(define-public cl-issr-core
+ (sbcl-package->cl-source-package sbcl-issr-core))
+
+(define-public sbcl-portal
+ (let ((commit "cc7ba6a54cea6ef63b17dcc6e653d91d9907f59e")
+ (revision "1"))
+ (package
+ (name "sbcl-portal")
+ (version (git-version "1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/charJe/portal")
+ (commit commit)))
+ (file-name (git-file-name "portal" version))
+ (sha256
+ (base32 "0fc81iwb4lpp8d2scdwafkixxwkfmq4gqns522zyb4bh6c1rfmwy"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("arrows" ,sbcl-arrows)
+ ("cl-base64" ,sbcl-cl-base64)
+ ("cl-str" ,sbcl-cl-str)
+ ("flexi-streams" ,sbcl-flexi-streams)
+ ("global-vars" ,sbcl-global-vars)
+ ("ironclad" ,sbcl-ironclad)
+ ("parse-float" ,sbcl-parse-float)
+ ("usocket" ,sbcl-usocket)))
+ (home-page "https://github.com/charJe/portal")
+ (synopsis "Portable Websocket Server for Common Lisp")
+ (description
+ "This is a websocket server for Common Lisp using usockets to be
+portable between implementations and operating systems. It has a programming
+interface that allows for multiple websocket apps per server using Common Lisp
+keywords for different websocket events. It has useful restarts and
+customizable errors.")
+ (license license:llgpl))))
+
+(define-public ecl-portal
+ (sbcl-package->ecl-package sbcl-portal))
+
+(define-public cl-portal
+ (sbcl-package->cl-source-package sbcl-portal))
+
+(define-public sbcl-hunchenissr
+ (let ((commit "7df702f2e110999a2f31c7ebad81bfc39ac06670")
+ (revision "1"))
+ (package
+ (name "sbcl-hunchenissr")
+ (version (git-version "1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/interactive-ssr/hunchenissr")
+ (commit commit)))
+ (file-name (git-file-name "hunchenissr" version))
+ (sha256
+ (base32 "0826qrvk64pjspdklns29dv3zhzfhd6k42fq030xajv8a7hkcxda"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("cl-base64" ,sbcl-cl-base64)
+ ("cl-str" ,sbcl-cl-str)
+ ("hunchentoot" ,sbcl-hunchentoot)
+ ("issr-core" ,sbcl-issr-core)
+ ("jonathan" ,sbcl-jonathan)
+ ("plump" ,sbcl-plump)
+ ("portal" ,sbcl-portal)))
+ (home-page "https://github.com/interactive-ssr/hunchenissr")
+ (synopsis "Interactive Server Side Rendering backend for Hunchentoot")
+ (description
+ "Hunchenissr works together with issr.js for the develpment of
+interactive (changing without page refreshes) websites making use of websocket
+and Common Lisp server HTML generation instead of mountains of convoluted
+Javascript.")
+ (license license:llgpl))))
+
+(define-public ecl-hunchenissr
+ (sbcl-package->ecl-package sbcl-hunchenissr))
+
+(define-public cl-hunchenissr
+ (sbcl-package->cl-source-package sbcl-hunchenissr))
+
+(define-public sbcl-hunchenissr-routes
+ (let ((commit "2e831975dc2a6c030f1b518747cf429be8484b31")
+ (revision "1"))
+ (package
+ (name "sbcl-hunchenissr-routes")
+ (version (git-version "0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/interactive-ssr/hunchenissr-routes")
+ (commit commit)))
+ (file-name (git-file-name "hunchenissr-routes" version))
+ (sha256
+ (base32 "1xyqacihxwk4vnffqlg93czmalscglp6sh3bwy3qwb7hdxv6yxz6"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("cl-ppcre" ,sbcl-cl-ppcre)
+ ("cl-unification" ,sbcl-cl-unification)
+ ("hunchenissr" ,sbcl-hunchenissr)))
+ (home-page "https://github.com/interactive-ssr/hunchenissr-routes")
+ (synopsis "Enable path variables when using Hunchenissr")
+ (description
+ "This library enables path variables in networking routes when using
+Hunchenissr for Common Lisp. If a part of the path (between two slashes)
+starts with a question mark (?), that symbol (without question mark) will be
+bound to whatever value was in the same place in the URL (as a string).")
+ (license license:llgpl))))
+
+(define-public ecl-hunchenissr-routes
+ (sbcl-package->ecl-package sbcl-hunchenissr-routes))
+
+(define-public cl-hunchenissr-routes
+ (sbcl-package->cl-source-package sbcl-hunchenissr-routes))
+
+(define-public sbcl-spinneret
+ ;; No release since 2019, no tags.
+ (let ((commit "02451b32648eda4e6e4022bbb7f91d9ea71bebbc"))
+ (package
+ (name "sbcl-spinneret")
+ (version (git-version "3.0" "4" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ruricolist/spinneret/")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0jllnsi2ibw0gax9szpdrjxvw9qqibydpdbnkf683yfb1d5jlci1"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("global-vars" ,sbcl-global-vars)
+ ("parenscript" ,sbcl-parenscript)
+ ("cl-markdown" ,sbcl-cl-markdown)
+ ("ppcre" ,sbcl-cl-ppcre)
+ ("serapeum" ,sbcl-serapeum)
+ ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (home-page "https://github.com/ruricolist/spinneret")
+ (synopsis "Common Lisp HTML5 generator")
+ (description
+ "In the crowded space of Common Lisp HTML generators, Spinneret
+occupies the following coordinates:
+
+@itemize
+
+@item Modern. Targets HTML5. Does not treat XML and HTML as the same
+problem. Assumes you will be serving your documents as UTF-8.
+
+@item Composable. Makes it easy to refactor HTML generation into separate
+functions and macros.
+
+@item Pretty. Treats HTML as a document format, not a serialization. Output
+is idiomatic and readable, following the coding style of the HTML5
+specification.
+
+@item Aggressive. If something can be interpreted as HTML, then it will be,
+meaning that some Lisp forms can't be mixed with HTML syntax. In the
+trade-off between 90% convenience and 10% correctness Spinneret is on the side
+of convenience.
+
+@item Bilingual. Spinneret (after loading @code{spinneret/ps}) has the same
+semantics in Lisp and Parenscript.
+
+@end itemize\n")
+ (license license:expat))))
+
+(define-public ecl-spinneret
+ (sbcl-package->ecl-package sbcl-spinneret))
+
+(define-public cl-spinneret
+ (sbcl-package->cl-source-package sbcl-spinneret))