diff options
Diffstat (limited to 'gnu/packages/lisp-xyz.scm')
-rw-r--r-- | gnu/packages/lisp-xyz.scm | 1397 |
1 files changed, 1317 insertions, 80 deletions
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 78eca82db6..2f6d22fe7d 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -2292,10 +2292,41 @@ writing code that contains string literals that contain code themselves.") (url "https://github.com/slime/slime/") (commit (string-append "v" version)))) (sha256 - (base32 "1s5mbljlz22pb90gwbd380nighkz6gdxl77hc08gri7wwr5gy5n2")))) + (base32 "1s5mbljlz22pb90gwbd380nighkz6gdxl77hc08gri7wwr5gy5n2")) + (modules '((guix build utils))) + (snippet + ;; The doc folder drags `gawk' into the closure. Doc is already + ;; provided by emacs-slime. + `(begin + (delete-file-recursively "doc") + #t)))) (build-system asdf-build-system/sbcl) (arguments - '(#:asd-systems '("swank"))) + '(#:asd-systems '("swank") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'set-fasl-directory + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib-dir (string-append out "/lib/common-lisp/" + (%lisp-type) + "/slime-swank/"))) + ;; Use the ASDF registry instead of Swank's default that places + ;; the .fasl files in ~/.slime. + (substitute* "swank.asd" + (("\\(load \\(asdf::component-pathname f\\)\\)" all) + (string-append + all "\n" + "(setf (symbol-value" + "(read-from-string \"swank-loader::*fasl-directory*\"))" + "\"" lib-dir "\")"))) + (substitute* "swank-loader.lisp" + (("\\(probe-file fasl\\)" all) + ;; Do not try to delete Guix store files. + (string-append + all "\n" + " (not (equal (subseq (pathname-directory fasl) 1 3)" + " '(\"gnu\" \"store\"))) ; XXX: GUIX PATCH"))))))))) (home-page "https://github.com/slime/slime") (synopsis "Common Lisp Swank server") (description @@ -2305,7 +2336,21 @@ processes that doesn't run under Emacs. Lisp processes created by (license (list license:gpl2+ license:public-domain)))) (define-public cl-slime-swank - (sbcl-package->cl-source-package sbcl-slime-swank)) + (let ((pkg (sbcl-package->cl-source-package sbcl-slime-swank))) + (package + (inherit pkg) + (arguments + (substitute-keyword-arguments (package-arguments pkg) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'install 'revert-asd-patch + ;; We do not want to include the Guix patch in the cl- package + ;; since it would include the sbcl- package in the closure. + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (source-path (string-append out "/share/common-lisp/source/"))) + (substitute* (string-append source-path "/cl-slime-swank/swank.asd") + ((".*fasl-directory.*") "")))))))))))) (define-public ecl-slime-swank (sbcl-package->ecl-package sbcl-slime-swank)) @@ -2706,7 +2751,13 @@ utilities that make it even easier to manipulate text in Common Lisp. It has (commit commit))) (file-name (git-file-name "puri" version)) (sha256 - (base32 "0gq2rsr0aihs0z20v4zqvmdl4szq53b52rh97pvnmwrlbn4mapmd")))) + (base32 "0gq2rsr0aihs0z20v4zqvmdl4szq53b52rh97pvnmwrlbn4mapmd")) + (modules '((guix build utils))) + (snippet + ;; The useless bundled debian folder drags `make' into the closure. + `(begin + (delete-file-recursively "debian") + #t)))) (build-system asdf-build-system/sbcl) (native-inputs (list sbcl-ptester)) @@ -3840,7 +3891,9 @@ client and server.") "0apkgqrscylw3hhm5x2vs0z3hz6h7zd7dl5y3wr2zl8qjpvpc80k")))) (build-system asdf-build-system/sbcl) (inputs - (list xclip)) + ;; Pick xsel instead of xclip because its closure size is slightly + ;; smaller. + (list xsel)) (native-inputs (list sbcl-fiveam)) (arguments @@ -3849,8 +3902,8 @@ client and server.") (add-after 'unpack 'fix-paths (lambda* (#:key inputs #:allow-other-keys) (substitute* "src/text.lisp" - (("\"xclip\"") - (string-append "\"" (assoc-ref inputs "xclip") "/bin/xclip\"")))))))) + (("\"xsel\"") + (string-append "\"" (assoc-ref inputs "xsel") "/bin/xsel\"")))))))) (home-page "https://github.com/snmsts/trivial-clipboard") (synopsis "Access system clipboard in Common Lisp") (description @@ -4050,7 +4103,13 @@ Development into CL+SSL was done by David Lichteblau.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "06gx04mah5nc8w78s0j8628divbf1s5w7af8w7pvzb2d5mgvrbd2")))) + (base32 "06gx04mah5nc8w78s0j8628divbf1s5w7af8w7pvzb2d5mgvrbd2")) + (modules '((guix build utils))) + (snippet + ;; The useless bundled debian folder drags `make' into the closure. + `(begin + (delete-file-recursively "debian") + #t)))) (build-system asdf-build-system/sbcl) (inputs (list sbcl-rt)) @@ -4080,7 +4139,13 @@ Rosenberg's Common Lisp packages.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "12jj54h0fs6n237cvnp8v6hn0imfksammq22ys6pi0gwz2w47rbj")))) + (base32 "12jj54h0fs6n237cvnp8v6hn0imfksammq22ys6pi0gwz2w47rbj")) + (modules '((guix build utils))) + (snippet + ;; The useless bundled debian folder drags `make' into the closure. + `(begin + (delete-file-recursively "debian") + #t)))) (build-system asdf-build-system/sbcl) (native-inputs ; For tests. (list sbcl-ptester sbcl-kmrcl)) @@ -4457,7 +4522,7 @@ addition, removal, and random selection.") (define-public sbcl-quri (package (name "sbcl-quri") - (version "0.5.0") + (version "0.6.0") (source (origin (method git-fetch) @@ -4466,7 +4531,7 @@ addition, removal, and random selection.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0zpwjhs2zz9832wsjs00kbkjjl4bcs96krlnq9y75gi4f34fxj1x")))) + (base32 "1wrrhbj3r4lph5y3hhfbv4g2pvg24hbgl06irq9lyiycy3bgai4w")))) (build-system asdf-build-system/sbcl) (arguments ;; Test system must be loaded before, otherwise tests fail with: @@ -4770,8 +4835,8 @@ CCL.") (sbcl-package->ecl-package sbcl-jonathan)) (define-public sbcl-http-body - (let ((commit "dd01dc4f5842e3d29728552e5163acce8386eb73") - (revision "1")) + (let ((commit "3e4bedd6a9d9bc4e1dc0a45e5b55360ae30fd388") + (revision "2")) (package (name "sbcl-http-body") (version (git-version "0.1.0" revision commit)) @@ -4783,14 +4848,21 @@ CCL.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "1jd06snjvxcprhapgfq8sx0y5lrldkvhf206ix6d5a23dd6zcmr0")))) + (base32 "0kcg43l5674drzid9cj938q0ki5z25glx296rl239dm7yfmxlzz2")))) (build-system asdf-build-system/sbcl) (arguments '(#:asd-systems '("http-body-test" "http-body"))) (native-inputs - (list sbcl-prove sbcl-trivial-utf-8)) + (list sbcl-assoc-utils sbcl-prove sbcl-trivial-utf-8)) (inputs - (list sbcl-fast-http sbcl-jonathan sbcl-quri)) + (list sbcl-babel + sbcl-cl-ppcre + sbcl-fast-http + sbcl-flexi-streams + sbcl-jonathan + sbcl-trivial-gray-streams + sbcl-cl-utilities + sbcl-quri)) (home-page "https://github.com/fukamachi/http-body") (synopsis "HTTP POST data parser") (description @@ -5981,8 +6053,8 @@ XSD type library.") ;; (sbcl-package->ecl-package sbcl-cxml-rng)) (define-public sbcl-cl-reexport - (let ((commit "312f3661bbe187b5f28536cd7ec2956e91366c3b") - (revision "1")) + (let ((commit "03ad7a0e7307e510b3b25a622d3c5f8a077879b4") + (revision "2")) (package (name "sbcl-cl-reexport") (build-system asdf-build-system/sbcl) @@ -5997,16 +6069,20 @@ XSD type library.") (file-name (git-file-name "cl-reexport" version)) (sha256 (base32 - "1cwpn1m3wrl0fl9plznn7p464db646gnfc8zkyk97dyxski2aq0x")))) + "02la6z3ickhmh2m87ymm2ijh9nkn7l6slskj99l8a1rhps394qqc")))) (inputs (list sbcl-alexandria)) + (native-inputs + (list sbcl-prove)) (arguments - ;; TODO: Tests fail because cl-test-more is missing, but I can't find it online. + ;; FIXME: Test fails with the following, why? + ;; Component "cl-reexport-test" not found, required by + ;; #<SYSTEM "cl-reexport-test"> `(#:tests? #f)) (synopsis "Reexport external symbols in other Common Lisp packages") (description "Cl-reexport makes a package reexport symbols which are external -symbols in other Common Lisp packages. This fanctionality is intended to be +symbols in other Common Lisp packages. This functionality is intended to be used with (virtual) hierarchical packages.") (license license:llgpl)))) @@ -6089,15 +6165,15 @@ cookie headers, cookie creation, cookie jar creation and more.") sbcl-trivial-gray-streams sbcl-trivial-mimes sbcl-usocket)) - (native-inputs - (list sbcl-alexandria - sbcl-babel - sbcl-cl-ppcre - sbcl-clack - sbcl-lack - sbcl-local-time - sbcl-prove - sbcl-trivial-features)) + ;; These native-inputs are for tests only, which are disabled. + ;; Leave them commented since they add a lot to the closure size. + ;; (native-inputs + ;; (list sbcl-cl-ppcre + ;; sbcl-clack + ;; sbcl-lack + ;; sbcl-local-time + ;; sbcl-prove + ;; sbcl-trivial-features)) (arguments ;; TODO: Circular dependency: tests depend on clack-test which depends on dexador. `(#:tests? #f @@ -7135,37 +7211,36 @@ cl-plumbing libraries.") (sbcl-package->ecl-package sbcl-cl-octet-streams)) (define-public sbcl-lzlib - (let ((commit "cad10f5becbcfebb44b9d311a257563778803452") - (revision "2")) + (let ((commit "c8102fc8c959b7c418eb60657bd6c8b875f10ba9") + (revision "1")) (package (name "sbcl-lzlib") - (version (git-version "1.1" revision commit)) + (version (git-version "2.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/glv2/cl-lzlib") (commit commit))) - (file-name (git-file-name name version)) + (file-name (git-file-name "cl-lzlib" version)) (sha256 - (base32 "09lp7li35h4jkls0448fj1sh6pjslr1w7ranbc4szjr8g0c2bdry")))) + (base32 "1glg1y1s1mqgypvxp0ss11cicrddri006wqwhy47lgq7mk5853zz")))) (build-system asdf-build-system/sbcl) (native-inputs (list sbcl-fiveam)) (inputs - `(("cffi" ,sbcl-cffi) - ("cl-octet-streams" ,sbcl-cl-octet-streams) - ("lparallel" ,sbcl-lparallel) - ("lzlib" ,lzlib))) + (list lzlib + sbcl-cffi + sbcl-cl-octet-streams + sbcl-lparallel)) (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-paths - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "src/lzlib.lisp" - (("liblz\\.so") - (search-input-file inputs "/lib/liblz.so"))) - #t))))) + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/lzlib.lisp" + (("liblz\\.so") + (search-input-file inputs "/lib/liblz.so")))))))) (synopsis "Common Lisp library for lzip (de)compression") (description "This Common Lisp library provides functions for lzip (LZMA) @@ -10326,7 +10401,13 @@ interface for MySQL, PostgreSQL and SQLite.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1hqszvz0a3wk4s9faa83sc3vjxcb5rxmjclyr17yzwg55z733kry")))) + (base32 "1hqszvz0a3wk4s9faa83sc3vjxcb5rxmjclyr17yzwg55z733kry")) + (modules '((guix build utils))) + (snippet + ;; The useless bundled debian folder drags `make' into the closure. + `(begin + (delete-file-recursively "debian") + #t)))) (build-system asdf-build-system/sbcl) (arguments `(#:tests? #f ; TODO: Fix use of deprecated ASDF functions @@ -10368,8 +10449,25 @@ interface for MySQL, PostgreSQL and SQLite.") (file-name (git-file-name name version)) (sha256 (base32 "1v1k3s5bsy3lgd9gk459bzpb1r0kdjda25s29samxw4gsgf1fqvp")) + (modules '((guix build utils))) (snippet '(begin + ;; The useless bundled debian folder drags `make' into the closure. + (delete-file-recursively "debian") + ;; Other Makefiles that drag `make'. + (for-each delete-file + '("Makefile" + "db-db2/Makefile" + "db-mysql/Makefile" + "db-odbc/Makefile" + "db-oracle/Makefile" + "db-sqlite/Makefile" + "doc/Makefile" + "examples/sqlite3/init-func/Makefile" + "sql/Makefile" + "tests/Makefile" + "uffi/Makefile" + "uffi/Makefile.32+64bits")) ;; Remove precompiled libraries. (delete-file "db-mysql/clsql_mysql.dll") (delete-file "uffi/clsql_uffi.dll") @@ -10806,6 +10904,16 @@ compliance control.") (substitute* "lift-standard.config" ((":relative-to lift-test") ":relative-to moptilities-test")) + #t)) + (add-after 'install 'remove-test-results + ;; Otherwise the drag the SBCL package into the closure of the CL + ;; package. + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (source-path (string-append out "/share/common-lisp/" + (%lisp-type) "/moptilities/"))) + (delete-file-recursively + (string-append source-path "/test-results"))) #t))))) (synopsis "Compatibility layer for Common Lisp MOP implementation differences") (description @@ -10831,7 +10939,12 @@ MOP easier to use.") (commit commit))) (file-name (git-file-name "cl-osicat" version)) (sha256 - (base32 "1ilag0b0xn97acc0m1q93vwp2y3md9a586858zfx04d8wpbvk8sz")))) + (base32 "1ilag0b0xn97acc0m1q93vwp2y3md9a586858zfx04d8wpbvk8sz")) + (snippet + '(begin + ;; The useless release.sh drags `bash' into the closure. + (delete-file "scripts/release.sh") + #t)))) (build-system asdf-build-system/sbcl) (inputs (list sbcl-alexandria sbcl-cffi sbcl-trivial-features)) @@ -11260,6 +11373,21 @@ sequences of objects.") (build-system asdf-build-system/sbcl) (inputs (list sbcl-acclimation sbcl-clump)) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'unpatch-shebangs + (lambda* (#:key outputs #:allow-other-keys) + ;; The documentation Makefile rely on shell scripts. + ;; TODO: Build it! + ;; In the mean time, remove the shabang as it adds bash to the + ;; closure. + (let* ((out (assoc-ref outputs "out")) + (build-aux (string-append + out "/share/"))) + (substitute* (find-files build-aux) + (("^#!.*/bin/sh") "#!/bin/sh") + (("^#!.*/bin/bash") "#!/bin/bash")))))))) (home-page "https://github.com/robert-strandh/cluffer") (synopsis "Common Lisp library providing a protocol for text-editor buffers") (description "Cluffer is a library for representing the buffer of a text @@ -14137,11 +14265,11 @@ library are feedforward neural networks trained using backpropagation.") (sbcl-package->ecl-package sbcl-simple-neural-network)) (define-public sbcl-zstd - (let ((commit "d144582c581aaa52bac24d6686af27fa3e781e06") + (let ((commit "134f058eee11512cf772a8d5b64364acf56a10b8") (revision "1")) (package (name "sbcl-zstd") - (version (git-version "1.0" revision commit)) + (version (git-version "2.0" revision commit)) (source (origin (method git-fetch) @@ -14150,22 +14278,22 @@ library are feedforward neural networks trained using backpropagation.") (commit commit))) (file-name (git-file-name "cl-zstd" version)) (sha256 - (base32 "1774jy8hzbi6nih3sq6vchk66f7g8w86dwgpbvljyfzcnkcaz6ql")))) + (base32 "1iqpi5v6fdm6xxc9l8zhk6kcgl8hgxiwk1ki2yx2j3j4kfvqv8j9")))) (build-system asdf-build-system/sbcl) (native-inputs (list sbcl-fiveam)) (inputs - `(("cffi" ,sbcl-cffi) - ("cl-octet-streams" ,sbcl-cl-octet-streams) - ("zstd-lib" ,zstd "lib"))) + (list sbcl-cffi + sbcl-cl-octet-streams + (list zstd "lib"))) (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-paths - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "src/libzstd.lisp" - (("libzstd\\.so") - (search-input-file inputs "/lib/libzstd.so")))))))) + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/libzstd.lisp" + (("libzstd\\.so") + (search-input-file inputs "/lib/libzstd.so")))))))) (synopsis "Common Lisp library for Zstandard (de)compression") (description "This Common Lisp library provides functions for Zstandard @@ -15434,7 +15562,8 @@ return the CPU count of the current system.") (base32 "0ipy51q2fw03xk9rqcyzbq2b9c32npc1gl3c53rdjywpak7zwwg6")))) (build-system asdf-build-system/sbcl) (arguments - `(#:phases + `(#:asd-systems '("fof" "fof/mf") + #:phases (modify-phases %standard-phases (add-after 'unpack 'fix-paths (lambda* (#:key inputs #:allow-other-keys) @@ -15444,6 +15573,7 @@ return the CPU count of the current system.") (assoc-ref inputs "ffmpeg"))))))))) (inputs (list sbcl-alexandria + sbcl-cl-json sbcl-cl-str sbcl-hu.dwim.defclass-star sbcl-local-time @@ -17709,6 +17839,74 @@ to setup.") (define-public cl-posix-mqueue (sbcl-package->cl-source-package sbcl-cl-posix-mqueue)) +(define-public sbcl-glop + (let ((commit "45e722ab4a0cd2944d550bf790206b3326041e38") + (revision "1")) + (package + (name "sbcl-glop") + (version (git-version "0.1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lispgames/glop") + (commit commit))) + (file-name (git-file-name "glop" version)) + (sha256 + (base32 "1nm35kvigflfjlmsa8zwdajc61f02fh4sq08jv0wnqylhx8yg2bv")))) + (build-system asdf-build-system/sbcl) + (arguments + (list #:test-asd-file "glop-test.asd" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-lib-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/x11/xcomposite.lisp" + (("libXcomposite.so") + (search-input-file inputs "/lib/libXcomposite.so"))) + (substitute* "src/x11/xlib.lisp" + (("libX11") + (string-drop-right + (search-input-file inputs "/lib/libX11.so") 3))) + (substitute* "src/utils.lisp" + (("libX11") + (string-drop-right + (search-input-file inputs "/lib/libX11.so") 3))) + (substitute* "src/utils.lisp" + (("libGL.so") + (search-input-file inputs "/lib/libGL.so.1"))) + (substitute* "src/x11/glx.lisp" + (("libGL.so") + (search-input-file inputs "/lib/libGL.so"))) + (substitute* "src/x11/display-ctrl.lisp" + (("libXrandr") + (string-drop-right + (search-input-file inputs "/lib/libXrandr.so") 3)))))))) + (native-inputs + (list sbcl-cl-opengl)) + (inputs + (list libx11 + libxcomposite + libxrandr + mesa + sbcl-cffi + sbcl-split-sequence + sbcl-trivial-garbage)) + (home-page "https://github.com/lispgames/glop") + (synopsis "Direct FFI bindings for OpenGL window and context management") + (description + "This package provides Common Lisp bindings to create OpenGL window and +context manipulation code as well as system input handling. Direct FFI +bindings to system functions are used so no third party C lib is required +except system libraries.") + (license license:expat)))) + +(define-public ecl-glop + (sbcl-package->ecl-package sbcl-glop)) + +(define-public cl-glop + (sbcl-package->cl-source-package sbcl-glop)) + (define-public sbcl-sdl2 (let ((commit "bb2aa2a41cf799e3bb1ddf50de41fe389c6db668") (revision "1")) @@ -17754,6 +17952,101 @@ C Library.") (define-public cl-sdl2 (sbcl-package->cl-source-package sbcl-sdl2)) +(define-public sbcl-sdl2-image + (let ((commit "9c05c806286b66a5d9861ef829cfe68c4f3da077") + (revision "1")) + (package + (name "sbcl-sdl2-image") + (version (git-version "1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lispgames/cl-sdl2-image") + (commit commit))) + (file-name (git-file-name "cl-sdl2-image" version)) + (sha256 + (base32 "1nr7mdl125q32m15m8rdlza5kwi7m0birh1cq846pyy6zl1sjms7")))) + (build-system asdf-build-system/sbcl) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/library.lisp" + (("libSDL2_image-2.0.so.0") + (search-input-file inputs "/lib/libSDL2_image-2.0.so.0")))))))) + (inputs + (list sdl2-image + sbcl-alexandria + sbcl-cl-autowrap + sbcl-defpackage-plus + sbcl-sdl2)) + (home-page "https://github.com/lispgames/cl-sdl2-image") + (synopsis "SDL2_image wrapper for Common Lisp") + (description + "This is a (currently) brief but usable wrap for SDL2_image.") + (license license:expat)))) + +(define-public ecl-sdl2-image + (sbcl-package->ecl-package sbcl-sdl2-image)) + +(define-public cl-sdl2-image + (sbcl-package->cl-source-package sbcl-sdl2-image)) + +(define-public sbcl-sdl2-ttf + (let ((commit "6dd2df2fb3a79ec4f835e3bc882e60e8da039878") + (revision "1")) + (package + (name "sbcl-sdl2-ttf") + (version (git-version "1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lispgames/cl-sdl2-ttf") + (commit commit))) + (file-name (git-file-name "cl-sdl2-ttf" version)) + (sha256 + (base32 "07c1bl66dix6ccnyl9mqd6lbk10f9s25985zmv6lss95491ng7my")))) + (build-system asdf-build-system/sbcl) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/library.lisp" + (("libSDL2_ttf-2.0.so.0") + (search-input-file inputs "/lib/libSDL2_ttf-2.0.so.0"))))) + (add-after 'unpack 'fix-critical-warning + (lambda _ + (substitute* "src/helpers.lisp" + (("nreverse") "reverse"))))))) + (inputs + (list sdl2-ttf + sbcl-alexandria + sbcl-cffi + sbcl-cl-autowrap + sbcl-defpackage-plus + sbcl-sdl2 + sbcl-trivial-garbage)) + (home-page "https://github.com/lispgames/cl-sdl2-ttf") + (synopsis "SDL2_ttf wrapper for Common Lisp") + (description + "This is a wrapper for the SDL2_TTF library used for loading fonts and +creating text assets. The library, in it's current state, can load TTF and +OTF fonts and render fonts with the three different rendering modes provided +by the C library (solid, shaded, and blended). While Latin text, UTF8, +UNICODE, and Glyph text rendering is available only Latin text has been +tested (as shown in the examples).") + (license license:expat)))) + +(define-public ecl-sdl2-ttf + (sbcl-package->ecl-package sbcl-sdl2-ttf)) + +(define-public cl-sdl2-ttf + (sbcl-package->cl-source-package sbcl-sdl2-ttf)) + (define-public sbcl-cl-gamepad (let ((commit "7e12137927b42db064ffbf9ea34bd4790ad4bb33") (revision "1")) @@ -18193,7 +18486,13 @@ language).") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "0wv3j13fj73gigriw5r9vi920hz05ld7zllsvbxdxvmyfy9k1kly")))) + (base32 "0wv3j13fj73gigriw5r9vi920hz05ld7zllsvbxdxvmyfy9k1kly")) + (modules '((guix build utils))) + (snippet + ;; The useless bundled debian folder drags `make' into the closure. + `(begin + (delete-file-recursively "debian") + #t)))) (build-system asdf-build-system/sbcl) (inputs (list sbcl-aserve sbcl-kmrcl sbcl-xmls)) @@ -20695,8 +20994,8 @@ rendering of the XML Infoset.") (sbcl-package->ecl-package sbcl-asd-generator)) (define-public sbcl-cl-gopher - (let ((commit "62cfd180378f56e7e8b57e4302b183810c86e337") - (revision "2")) + (let ((commit "0899e7fa2134206f9d9778c7d53c49b7a59ff070") + (revision "3")) (package (name "sbcl-cl-gopher") (version (git-version "0.0.0" revision commit)) @@ -20708,7 +21007,15 @@ rendering of the XML Infoset.") (commit commit))) (file-name (git-file-name "cl-gopher" version)) (sha256 - (base32 "0szz29d83fk2cxn5j1zlf4v0154qnf9cy1ix5p4jjpsql1a8xiwg")))) + (base32 "1ky4s33m5d0wvdaqji12pxr93qqfl5x62zjp3m4ihbdj0ws3yw2f")) + (snippet + '(begin + ;; These files are mostly examples (that assume Quicklisp) which + ;; drag the SBCL package into the CL package. + (for-each delete-file + '("cl-gopher-network.lsh" + "cl-gopher-start.lsh")) + #t)))) (build-system asdf-build-system/sbcl) (inputs (list sbcl-bordeaux-threads @@ -20801,7 +21108,7 @@ JavaScript code.") (define-public sbcl-nhooks (package (name "sbcl-nhooks") - (version "1.0.0") + (version "1.1.1") (source (origin (method git-fetch) @@ -20811,7 +21118,7 @@ JavaScript code.") (file-name (git-file-name "nhooks" version)) (sha256 (base32 - "1v3gh9jf4hbpl1hnyzhkrcj3jdh3q0mlp1n6ci2cbn2rsc65baff")))) + "1379q1wbh38xlkwlpf0xy9wgbbc869zznak3l4yzwfgiw6l2hxa1")))) (build-system asdf-build-system/sbcl) (inputs (list sbcl-serapeum)) @@ -20887,7 +21194,7 @@ access lexicographic data from WordNet.") (define-public sbcl-nfiles (package (name "sbcl-nfiles") - (version "0.4.2") + (version "1.0.0") (source (origin (method git-fetch) @@ -20897,7 +21204,7 @@ access lexicographic data from WordNet.") (file-name (git-file-name "cl-nfiles" version)) (sha256 (base32 - "06cll4l5gbp98wrgdy04ar6z00sag0b46pr4dv4n6bs1ypfcgs01")))) + "1215h4xzc7vxidr7lhxyr5a7giyd08678ibz5qp4d4nvg14q94y2")))) (build-system asdf-build-system/sbcl) (inputs (list gnupg @@ -20909,7 +21216,7 @@ access lexicographic data from WordNet.") sbcl-trivial-package-local-nicknames sbcl-trivial-types)) (native-inputs - (list sbcl-prove)) + (list sbcl-lisp-unit2)) (arguments `(#:phases (modify-phases %standard-phases @@ -20990,8 +21297,8 @@ taking inspiration from Ruby's ERb module.") (sbcl-package->ecl-package sbcl-cl-template)) (define-public sbcl-fast-websocket - (let ((commit "24c0217e7c0d25b6ef6ab799452cba0b9fb58f44") - (revision "0")) + (let ((commit "baeeaddf1447015863d708f840ef9dfc5ff5b7a2") + (revision "1")) (package (name "sbcl-fast-websocket") (version (git-version "0.1" revision commit)) @@ -21004,8 +21311,7 @@ taking inspiration from Ruby's ERb module.") (commit commit))) (file-name (git-file-name "cl-fast-websoclet" version)) (sha256 - (base32 - "04sacrhpdp3ixvp6wjwxls5mv47g0q6542pd16yn199xjg0drw8a")))) + (base32 "1j7v00gbkzx4mq2v8y44jm4jx321hgrv9igfw23cvzzlyd3dzp6y")))) (build-system asdf-build-system/sbcl) (arguments ;; Test system must be loaded before, otherwise tests fail with: @@ -21471,7 +21777,7 @@ in a native template application).") (define-public sbcl-nkeymaps (package (name "sbcl-nkeymaps") - (version "0.1.1") + (version "1.0.0") (source (origin (method git-fetch) @@ -21480,15 +21786,14 @@ in a native template application).") (commit version))) (file-name (git-file-name "cl-nkeymaps" version)) (sha256 - (base32 "0shkklc3aiq44hyv1q6fahw4vjcr0iw4zsmxbhmxqh04r7185ddf")))) + (base32 "1f7s9g5s9riyyrbj8lyvzlvymdbh9x9sknxmjzfrkbz3iqlpanc3")))) (build-system asdf-build-system/sbcl) (inputs (list sbcl-alexandria - sbcl-cl-str sbcl-fset sbcl-trivial-package-local-nicknames)) (native-inputs - (list sbcl-prove)) + (list sbcl-lisp-unit2)) (home-page "https://github.com/atlas-engineer/nkeymaps") (synopsis "Keymap facility for Common Lisp") (description @@ -21542,3 +21847,935 @@ instead of #'FOO. (define-public ecl-nkeymaps (sbcl-package->ecl-package sbcl-nkeymaps)) + +(define-public sbcl-utils-kt + (let ((commit "4adfe2889036ab5ffdd3cc2182ca2cc692bf11ff")) + (package + (name "sbcl-utils-kt") + (version (git-version "2007-12-02" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kennytilton/utils-kt") + (commit commit))) + (file-name (git-file-name "cl-utils-kt" version)) + (sha256 + (base32 "016x3w034brz02z9mrsrkhk2djizg3yqsvhl9k62xqcnpy3b87dn")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/kennytilton/utils-kt") + (synopsis "Kenny's utilities for Common Lisp") + (description + "This library contains generic hacks meant to be used in any project. +It was originally developped for the Cells library.") + (license license:expat)))) + +(define-public cl-utils-kt + (sbcl-package->cl-source-package sbcl-utils-kt)) + +(define-public ecl-utils-kt + (sbcl-package->ecl-package sbcl-utils-kt)) + +(define-public sbcl-cells + (let ((commit "e8542b17fddd6340c1e237ce482a52327c8ead8e")) + (package + (name "sbcl-cells") + (version (git-version "3.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kennytilton/cells") + (commit commit))) + (file-name (git-file-name "cl-cells" version)) + (sha256 + (base32 "0rkzvwq38lwb1045w54kw020pb9i63hxiawwhqkf8k1inhak3fdk")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-utils-kt)) + (arguments + ;; Tests fail with #<TYPE-ERROR expected-type: STREAM datum: NIL>. + '(#:tests? #f)) + (home-page "https://github.com/kennytilton/cells") + (synopsis "Common Lisp implementation of the dataflow programming paradigm") + (description + "Cells is a mature, stable extension to CLOS allowing one to create +classes whose instances can have slot values determined by instance-specific +formulas.") + (license license:llgpl)))) + +(define-public cl-cells + (sbcl-package->cl-source-package sbcl-cells)) + +(define-public ecl-cells + (sbcl-package->ecl-package sbcl-cells)) + +(define-public sbcl-cl-algebraic-data-type + (let ((commit "b2568428193a512d141d6b615772d50ceb5f9bca")) + (package + (name "sbcl-cl-algebraic-data-type") + (version (git-version "1.2.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/stylewarning/cl-algebraic-data-type") + (commit commit))) + (file-name (git-file-name "cl-algebraic-data-type" version)) + (sha256 + (base32 "1lnqxcv8pd5z8n0g5p2l0dbljx9pqiv18hxl0vhsh7ldhkrjv2jx")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-alexandria + sbcl-global-vars)) + (arguments + '(#:tests? #f)) ; No tests. + (home-page "https://github.com/stylewarning/cl-algebraic-data-type") + (synopsis "Common Lisp library for algebraic data types") + (description + "CL-ALGEBRAIC-DATA-TYPE, or ADT, is a library for defining algebraic +data types in a similar spirit to Haskell or Standard ML, as well as for +operating on them.") + (license license:bsd-3)))) + +(define-public cl-algebraic-data-type + (sbcl-package->cl-source-package sbcl-cl-algebraic-data-type)) + +(define-public ecl-algebraic-data-type + (sbcl-package->ecl-package sbcl-cl-algebraic-data-type)) + +(define-public sbcl-screamer + (let ((commit "ce50614024de090b376107668da5e53232540ec7")) + (package + (name "sbcl-screamer") + (version (git-version "0.0.1" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nikodemus/screamer/") + (commit commit))) + (file-name (git-file-name "cl-screamer" version)) + (sha256 + (base32 "1jl42pl6kwkiq71d0naf3r1mn1qy89ndimfgiz58c4g66xbjb7kx")))) + (build-system asdf-build-system/sbcl) + (native-inputs + (list sbcl-iterate + sbcl-hu.dwim.stefil)) + (home-page "http://nikodemus.github.io/screamer/") + (synopsis "Nondeterministic programming and constraint propagation") + (description + "Screamer is an extension of Common Lisp that adds support for +nondeterministic programming. Screamer consists of two levels. The basic +nondeterministic level adds support for backtracking and undoable side +effects. On top of this nondeterministic substrate, Screamer provides a +comprehensive constraint programming language in which one can formulate and +solve mixed systems of numeric and symbolic constraints. Together, these two +levels augment Common Lisp with practically all of the functionality of both +Prolog and constraint logic programming languages such as CHiP and CLP(R). +Furthermore, Screamer is fully integrated with Common Lisp. Screamer programs +can coexist and interoperate with other extensions to as CLIM and Iterate.") + (license license:expat)))) + +(define-public cl-screamer + (sbcl-package->cl-source-package sbcl-screamer)) + +(define-public ecl-screamer + (sbcl-package->ecl-package sbcl-screamer)) + +(define-public sbcl-clache + (let ((commit "112976729565e1035532389ca25090ae99badd07")) + (package + (name "sbcl-clache") + (version (git-version "0.2.1" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/html/clache/") + (commit commit))) + (file-name (git-file-name "cl-clache" version)) + (sha256 + (base32 "0wxg004bsay58vr6xr6mlk7wj415qmvisqxvpnjsg6glfwca86ys")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-alexandria + sbcl-babel + sbcl-cl-annot + sbcl-cl-fad + sbcl-cl-store + sbcl-cl-syntax + sbcl-ironclad + sbcl-trivial-garbage)) + (native-inputs + (list sbcl-prove)) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-tests + (lambda _ + (substitute* "clache-test.asd" + (("cl-test-more") "prove")) + #t))))) + (home-page "https://github.com/html/clache/") + (synopsis "General caching facility for Common Lisp") + (description + "CLACHE provides a general caching facility for Common Lisp. The API is +similar to the standard hash-table interface.") + (license license:llgpl)))) + +(define-public cl-clache + (sbcl-package->cl-source-package sbcl-clache)) + +(define-public ecl-clache + (sbcl-package->ecl-package sbcl-clache)) + +(define-public sbcl-definitions + (let ((commit "1f4bd7a634a2299aea19cefb5da8041bbb27f2ec")) + (package + (name "sbcl-definitions") + (version (git-version "1.0.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Shinmera/definitions/") + (commit commit))) + (file-name (git-file-name "cl-definitions" version)) + (sha256 + (base32 "16dh9iy3v344xj4qllsp47007px3yx26fxxh9gh2cvs8dqgk3kch")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-documentation-utils)) + (home-page "https://shinmera.github.io/definitions") + (synopsis "General definitions reflection library") + (description + "This system implements a general definitions introspection library. +It gives you the ability to retrieve definitions or bindings associated with +designators such as symbols, packages, and names in general. For instance, it +allows you to retrieve all function, type, variable, method, etc. definitions +of a symbol.") + (license license:zlib)))) + +(define-public cl-definitions + (sbcl-package->cl-source-package sbcl-definitions)) + +(define-public ecl-definitions + (sbcl-package->ecl-package sbcl-definitions)) + +(define-public sbcl-filtered-functions + (let ((commit "130f69e7b9e1051bf569ef63364b09a3873f0ced")) + (package + (name "sbcl-filtered-functions") + (version (git-version "0.2.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pcostanza/filtered-functions") + (commit commit))) + (file-name (git-file-name "cl-filtered-functions" version)) + (sha256 + (base32 "0m13k8pl0gfll8ss83c0z3gax7zrrw2i4s26451jfbka1xr4fgy9")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-closer-mop)) + (home-page "https://github.com/pcostanza/filtered-functions") + (synopsis "Extension of CLOS generic function invocation") + (description + "Filtered functions provide an extension of CLOS generic function +invocation that add a simple preprocessing step before the actual method +dispatch is performed and thus enable the use of arbitrary predicates for +selecting and applying methods. See +@url{http://www.p-cos.net/documents/filtered-dispatch.pdf} for a paper that +introduces and explains filtered functions in detail.") + (license license:expat)))) + +(define-public cl-filtered-functions + (sbcl-package->cl-source-package sbcl-filtered-functions)) + +(define-public ecl-filtered-functions + (sbcl-package->ecl-package sbcl-filtered-functions)) + +(define-public sbcl-defstar + (let ((commit "132829dac9f84fa7202a0c5793aa6accb8d2662a")) + (package + (name "sbcl-defstar") + (version (git-version "1.0.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "http://bitbucket.org/eeeickythump/defstar/") + (commit commit))) + (file-name (git-file-name "cl-defstar" version)) + (sha256 + (base32 "0n6m3aqvdfnsrhlhqjcy72d1i55lbkjg13ij5c7vw003p1n78wxi")))) + (build-system asdf-build-system/sbcl) + (home-page "http://bitbucket.org/eeeickythump/defstar/") + (synopsis "Easy inline (return) type declarations for functions") + (description + "Defstar is a collection of Common Lisp macros that can be used in +place of @code{defun}, @code{defmethod}, @code{defgeneric}, @code{defvar}, +@code{defparameter}, @code{flet}, @code{labels}, @code{let*} and +@code{lambda}. Each macro has the same name as the form it replaces, with a +star added at the end, e.g. @code{defun}. (the exception is the @code{let*} +replacement, which is called @code{*let}).") + (license license:gpl3)))) + +(define-public cl-defstar + (sbcl-package->cl-source-package sbcl-defstar)) + +(define-public ecl-defstar + (sbcl-package->ecl-package sbcl-defstar)) + +(define-public sbcl-dynamic-mixins + (let ((commit "7cc09bee7d68527f37406671fabe910e8235b746")) + (package + (name "sbcl-dynamic-mixins") + (version (git-version "0.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rpav/dynamic-mixins") + (commit commit))) + (file-name (git-file-name "cl-dynamic-mixins" version)) + (sha256 + (base32 "00g3s509ysh2jp1qwsgb5bwl6qvhzcljwjz3z4mspbcak51484zj")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-alexandria + sbcl-closer-mop)) + (home-page "https://github.com/rpav/dynamic-mixins") + (synopsis "Simple, dynamic class combination for CLOS") + (description + "Dynamic-mixins is for simple, dynamic class combination; it allows +objects to be mixed and updated without manually defining many permutations.") + (license license:bsd-2)))) + +(define-public cl-dynamic-mixins + (sbcl-package->cl-source-package sbcl-dynamic-mixins)) + +(define-public ecl-dynamic-mixins + (sbcl-package->ecl-package sbcl-dynamic-mixins)) + +(define-public sbcl-sealable-metaobjects + (let ((commit "e09ec97252e0844528f61abdc0c7ee256875f8ee")) + (package + (name "sbcl-sealable-metaobjects") + (version (git-version "0.0.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/marcoheisig/sealable-metaobjects/") + (commit commit))) + (file-name (git-file-name "cl-sealable-metaobjects" version)) + (sha256 + (base32 "0hz1ivlpfhnk1w2cw4q2i000j2dc7maay06ndzziyywg7li6zf2p")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-closer-mop)) + (home-page "https://github.com/marcoheisig/sealable-metaobjects/") + (synopsis "CLOSsy way to trade genericity for performance") + (description + "This library is an extension of the Common Lisp Object System (CLOS) +that allows a compiler to inline a generic function under certain +conditions.") + (license license:expat)))) + +(define-public cl-sealable-metaobjects + (sbcl-package->cl-source-package sbcl-sealable-metaobjects)) + +(define-public ecl-sealable-metaobjects + (sbcl-package->ecl-package sbcl-sealable-metaobjects)) + +(define-public sbcl-fast-generic-functions + (let ((commit "9c307cd28af6453e45038ac3510de3123ff23743")) + (package + (name "sbcl-fast-generic-functions") + (version (git-version "0.0.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/marcoheisig/fast-generic-functions/") + (commit commit))) + (file-name (git-file-name "cl-fast-generic-functions" version)) + (sha256 + (base32 "16hf9bi2p5s77p3m3aqsihcd9iicqjhhxxpsarjv93c41qs54yad")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-closer-mop + sbcl-sealable-metaobjects + sbcl-trivial-macroexpand-all)) + (arguments + ;; Tests fail: https://github.com/marcoheisig/fast-generic-functions/issues/10 + '(#:tests? #f)) + (home-page "https://github.com/marcoheisig/fast-generic-functions/") + (synopsis "Seal generic functions to boost performance") + (description + "This library introduces @emph{fast generic functions}, i.e. functions +that behave just like regular generic functions, except that the can be sealed +on certain domains. If the compiler can then statically detect that the +arguments to a fast generic function fall within such a domain, it will +perform a variety of optimizations.") + (license license:expat)))) + +(define-public cl-fast-generic-functions + (sbcl-package->cl-source-package sbcl-fast-generic-functions)) + +(define-public ecl-fast-generic-functions + (sbcl-package->ecl-package sbcl-fast-generic-functions)) + +(define-public sbcl-compiler-macro-notes + (package + (name "sbcl-compiler-macro-notes") + (version "0.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/digikar99/compiler-macro-notes") + (commit (string-append "v" version)))) + (file-name (git-file-name "cl-compiler-macro-notes" version)) + (sha256 + (base32 "1jv8snj2wvim3k9qhl1vsx82n56nzdmwa3ms9c4ml2d58fwpfjzs")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-alexandria + sbcl-cl-environments)) + (home-page "https://github.com/digikar99/compiler-macro-notes") + (synopsis "Macros and conditions for use within macros and compiler-macros") + (description + "Alternative to the @code{compiler-macro} library: + +@itemize +@item Here, we do not treat compiler notes as warnings, but instead these are +a separate class of conditions. These are also not errors. +@item Two main condition classes are provided: compiler-macro-notes:note and +compiler-macro-notes:optimization-failure-note. While the latter is a subclass +of the former, the latter notes are printed in a slightly different manner to +the former. +@item To be able to correctly print the expansion path that led to the +condition, user code is expected to avoid performing a nonlocal exit to a +place outside with-notes. +@end itemize\n") + (license license:expat))) + +(define-public cl-compiler-macro-notes + (sbcl-package->cl-source-package sbcl-compiler-macro-notes)) + +(define-public ecl-compiler-macro-notes + (sbcl-package->ecl-package sbcl-compiler-macro-notes)) + +(define-public sbcl-ctype + (let ((commit "4fc4c5ae44c435ed82556969f698005bee50101c")) + (package + (name "sbcl-ctype") + (version (git-version "0.0.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/s-expressionists/ctype") + (commit commit))) + (file-name (git-file-name "cl-ctype" version)) + (sha256 + (base32 "05smc81ml9rbcbzdhqg2mi9drnjsipq62r5q7f7qql8hbx01vl9i")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/s-expressionists/ctype") + (synopsis "Common Lisp type system implementation ") + (description + "This system is an implementation of the Common Lisp type system; +particularly @code{cl:typep} and @code{cl:subtypep}.") + (license license:bsd-2)))) + +(define-public cl-ctype + (sbcl-package->cl-source-package sbcl-ctype)) + +(define-public ecl-ctype + (sbcl-package->ecl-package sbcl-ctype)) + +(define-public sbcl-polymorphic-functions + (package + (name "sbcl-polymorphic-functions") + (version "0.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/digikar99/polymorphic-functions/") + (commit (string-append "v" version)))) + (file-name (git-file-name "cl-polymorphic-functions" version)) + (sha256 + (base32 "161ylp3avmkylgfddp7i1kscv3bqx734jk1i97xhsbl7x83nin0h")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-alexandria + sbcl-closer-mop + sbcl-compiler-macro-notes + sbcl-ctype + sbcl-fiveam + sbcl-cl-form-types + sbcl-introspect-environment + sbcl-slime-swank)) + (arguments + ;; Tests fail: https://github.com/digikar99/polymorphic-functions/issues/8 + '(#:tests? #f)) + (home-page "https://github.com/digikar99/polymorphic-functions/") + (synopsis "Function type to dispatch on types instead of classes") + (description + "This library provides all of + +@itemize +@item ad hoc polymorphism and +@item subtype polymorphism +@item parametric polymorphism (in a very limited sense) +@end itemize + +to dispatch on the basis of types rather than classes.") + (license license:expat))) + +(define-public cl-polymorphic-functions + (sbcl-package->cl-source-package sbcl-polymorphic-functions)) + +(define-public ecl-polymorphic-functions + (sbcl-package->ecl-package sbcl-polymorphic-functions)) + +(define-public sbcl-slot-extra-options + (let ((commit "29517d980325cd63744f1acf4cfe5c8ccec2b318")) + (package + (name "sbcl-slot-extra-options") + (version (git-version "1.1.1" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/some-mthfka/slot-extra-options/") + (commit commit))) + (file-name (git-file-name "cl-slot-extra-options" version)) + (sha256 + (base32 "1b2swhjjs0w1034cy045q8l3ndmci7rjawka39q23vncy6d90497")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-alexandria + sbcl-closer-mop + sbcl-serapeum + sbcl-iterate)) + (native-inputs + (list sbcl-parachute)) + (home-page "https://github.com/some-mthfka/slot-extra-options/") + (synopsis "Extra options for slots using MOP") + (description + "This library lets you build a metaclass which in turn lets you specify +extra slot options in its classes. Options may be easily inspected and custom +inheritence may be set up. The Meta-Object Protocol (MOP) is used for the +implementation - through @code{closer-mop}. Some convenience function for +processing slot options are also available. + +Possible use case: you want to automatically set up some definitions based on +some slots, but you want to have control over it right in the class +definition.") + (license license:lgpl3+)))) + +(define-public cl-slot-extra-options + (sbcl-package->cl-source-package sbcl-slot-extra-options)) + +(define-public ecl-slot-extra-options + (sbcl-package->ecl-package sbcl-slot-extra-options)) + +(define-public sbcl-parseq + (package + (name "sbcl-parseq") + (version "0.5.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mrossini-ethz/parseq") + (commit (string-append "v" version)))) + (file-name (git-file-name "cl-parseq" version)) + (sha256 + (base32 "0b4lnhwqdlaqccanyssdj2v0am2ygw6qr4543b49kz2rwirykw0w")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/mrossini-ethz/parseq") + (synopsis "Parsing expression grammars for sequences") + (description + "Parseq (pronounced parsec) is a parsing library for common lisp. It can +be used for parsing lisp's sequences types: strings, vectors (e.g. binary +data) and lists. Furthermore, parseq is able to parse nested structures such +as trees (e.g. lists of lists, lists of vectors, vectors of strings). + +Parseq uses parsing expression grammars (PEG) that can be defined through a +simple interface. Extensions to the standard parsing expressions are +available. Parsing expressions can be parameterised and made context +aware. Additionally, the definition of each parsing expression allows the +arbitrary transformation of the parsing tree. + +The library is inspired by Esrap and uses a very similar interface. No code +is shared between the two projects, however. The features of Esrap are are +mostly included in parseq and complemented with additional, orthogonal +features. Any resemblance to esrap-liquid is merely coincidental.") + (license license:gpl2))) + +(define-public cl-parseq + (sbcl-package->cl-source-package sbcl-parseq)) + +(define-public ecl-parseq + (sbcl-package->ecl-package sbcl-parseq)) + +(define-public sbcl-physical-quantities + (package + (name "sbcl-physical-quantities") + (version "0.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mrossini-ethz/physical-quantities") + (commit (string-append "v" version)))) + (file-name (git-file-name "cl-physical-quantities" version)) + (sha256 + (base32 "0mb2s94s6fhw5vfa89naalw7ld11sdsszlqpz0c65dvpfyfmmdmh")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-parseq)) + (home-page "https://github.com/mrossini-ethz/physical-quantities") + (synopsis "Numeric type with optional unit and/or uncertainty for physics") + (description + "This lisp library handles physical quantities which consist of + +@itemize +@item value / magnitude +@item uncertainty / error +@item unit +@end itemize + +where the type of the value can be any subtype of real. For the uncertainty, +both absolute and relative values are possible. Combinations of lisp symbols +or strings are used to describe units. User defined units including +abbreviations and prefixes are supported. Error propagation and unit checking +is performed for all defined operations.") + (license license:gpl2))) + +(define-public cl-physical-quantities + (sbcl-package->cl-source-package sbcl-physical-quantities)) + +(define-public ecl-physical-quantities + (sbcl-package->ecl-package sbcl-physical-quantities)) + +(define-public sbcl-sb-cga + (let ((commit "9a554ea1c01cac998ff7eaa5f767bc5bcdc4c094")) + (package + (name "sbcl-sb-cga") + (version (git-version "1.0.1" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nikodemus/sb-cga/") + (commit commit))) + (file-name (git-file-name "cl-sb-cga" version)) + (sha256 + (base32 "1y54qlwfrhch9aghk7nsbdx7x2qsvgsws1g2k631l9dsgdakw4w8")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-alexandria)) + (home-page "https://github.com/nikodemus/sb-cga/") + (synopsis "Computer graphic algebra for Common Lisp") + (description + "SB-CGA is a computer graphics algebra library for Common Lisp. + +Despite the prefix it is actually portable - but optimizations that make it +fast (using SIMD instructions) are currently implemented for SBCL/x86-64 +only.") + (license license:expat)))) + +(define-public cl-sb-cga + (sbcl-package->cl-source-package sbcl-sb-cga)) + +(define-public ecl-sb-cga + (sbcl-package->ecl-package sbcl-sb-cga)) + +(define-public sbcl-mathkit + (let ((commit "fd884f94b36ef5e9bc19459ad0b3cda6303d2a2a")) + (package + (name "sbcl-mathkit") + (version (git-version "0.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lispgames/mathkit/") + (commit commit))) + (file-name (git-file-name "cl-mathkit" version)) + (sha256 + (base32 "174y6ndmf52h8sml87qjfl48llmynvdizzk2h0mr85zbaysx73i3")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-alexandria + sbcl-sb-cga)) + (home-page "https://github.com/lispgames/mathkit/") + (synopsis "Pure math functions useful for games, 3D, and GL in general") + (description + "This is a purely math-related utility kit, providing functions which +can be useful for games, 3D, and GL in general.") + (license license:expat)))) + +(define-public cl-mathkit + (sbcl-package->cl-source-package sbcl-mathkit)) + +(define-public ecl-mathkit + (sbcl-package->ecl-package sbcl-mathkit)) + +(define-public sbcl-sdl2kit + (let ((commit "aae663224a10ece2b0c374aa5942a3f0bc1b3c2f")) + (package + (name "sbcl-sdl2kit") + (version (git-version "0.0.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lispgames/sdl2kit/") + (commit commit))) + (file-name (git-file-name "cl-sdl2kit" version)) + (sha256 + (base32 "10ymmxqsvdn7ndda9k2qcixj75l7namgqdxc5y2w3v5r1313fy2d")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-alexandria + sbcl-cl-opengl + sbcl-defpackage-plus + sbcl-sdl2)) + (home-page "https://github.com/lispgames/sdl2kit/") + (synopsis "Utility kit for CL-SDL2") + (description + "This is a utility kit for @code{cl-sdl2} that provides something similar to +GLUT. However, it's also geared at being useful for \"real\" applications or +games.") + (license license:expat)))) + +(define-public cl-sdl2kit + (sbcl-package->cl-source-package sbcl-sdl2kit)) + +(define-public ecl-sdl2kit + (sbcl-package->ecl-package sbcl-sdl2kit)) + +(define-public sbcl-glkit + (let ((commit "0d8e7c5fed4231f2177afcf0f3ff66f196ed6a46")) + (package + (name "sbcl-glkit") + (version (git-version "0.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lispgames/glkit/") + (commit commit))) + (file-name (git-file-name "cl-glkit" version)) + (sha256 + (base32 "1x3y5jcr1f0v9sgn3y5b7b8fhgd6vv37nz73016gdwh511idi8jn")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-alexandria + sbcl-cl-opengl + sbcl-defpackage-plus + sbcl-mathkit + sbcl-sb-cga + sbcl-sdl2 + sbcl-static-vectors)) + (home-page "https://github.com/lispgames/glkit/") + (synopsis "OpenGL utilities for math, shaders, and more") + (description + "This is a utility kit for functionality related to OpenGL. It provides the following: + +@itemize +@item @code{kit.glm}: This re-exports @code{sb-cga} and @code{mathkit} for +convenience. +@item @code{kit.gl.shader}: This provides shader dictionary and compilation +functionality similar to what was originally found in @code{sdl2kit}. +@item @code{kit.gl.vao}: This provides an interface for Vertex Array Objects. +@end itemize\n") + (license license:expat)))) + +(define-public cl-glkit + (sbcl-package->cl-source-package sbcl-glkit)) + +(define-public ecl-glkit + (sbcl-package->ecl-package sbcl-glkit)) + +(define-public sbcl-trees + (let ((commit "7b06048af0248c4302088c758208276f9faf2beb")) + (package + (name "sbcl-trees") + (version (git-version "0.11" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/froydnj/trees/") + (commit commit))) + (file-name (git-file-name "cl-trees" version)) + (sha256 + (base32 "1xvydf3qc17rd7ia8sffxcpclgm3l0iyhx8k72ddk59v3pg5is4k")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/froydnj/trees/") + (synopsis "Binary trees in normal and balanced flavors") + (description + "This package implements binary trees of various kinds, presenting a +uniform interface to them all.") + (license license:bsd-3)))) + +(define-public cl-trees + (sbcl-package->cl-source-package sbcl-trees)) + +(define-public ecl-trees + (sbcl-package->ecl-package sbcl-trees)) + +(define-public sbcl-cl-geometry + (let ((commit "24eddedc47b931cec27361752736ef0b54fc9984")) + (package + (name "sbcl-cl-geometry") + (version (git-version "0.0.3" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vydd/cl-geometry") + (commit commit))) + (file-name (git-file-name "cl-cl-geometry" version)) + (sha256 + (base32 "188xrd8plvc34gz7q01zmkdrzxbpwzln103l5dl78pa4a6vzz34h")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-iterate + sbcl-trees)) + (home-page "https://github.com/lispgames/cl-geometry/") + (synopsis "Simple two dimensional computational geometry in Common Lisp") + (description + "This is a system for two dimensional computational geometry for Common Lisp. + +Note: the system assumes exact rational arithmetic, so no floating point +coordinates are allowed. This is not checked when creating geometric +objects.") + ;; The .asd says BSD-style but the LICENSE.txt is expat. + (license license:expat)))) + +(define-public cl-cl-geometry + (sbcl-package->cl-source-package sbcl-cl-geometry)) + +(define-public ecl-cl-geometry + (sbcl-package->ecl-package sbcl-cl-geometry)) + +(define-public sbcl-sketch + ;; No release in years. + (let ((commit "4cc00b08e202c7adda41391463096cf9df1705c3")) + (package + (name "sbcl-sketch") + (version (git-version "2017-11" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vydd/sketch") + (commit commit))) + (file-name (git-file-name "cl-sketch" version)) + (sha256 + (base32 "1qrnma8yvmxps9rz3pvlzsir37namppsldijdlr4110pcwi9j9h6")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-alexandria + sbcl-cl-geometry + sbcl-glkit + sbcl-mathkit + sbcl-md5 + sbcl-sdl2 + sbcl-sdl2-image + sbcl-sdl2-ttf + sbcl-sdl2kit + sbcl-split-sequence + sbcl-static-vectors)) + (arguments + '(#:asd-systems '("sketch" "sketch-examples"))) + (home-page "https://github.com/vydd/sketch") + (synopsis "Creative framework for electronic art, visual design and more") + (description + "Sketch is a Common Lisp environment for the creation of electronic +art, visual design, game prototyping, game making, computer graphics, +exploration of human-computer interaction and more. It is inspired by +the Processing language and shares some of the API.") + (license license:expat)))) + +(define-public cl-sketch + (sbcl-package->cl-source-package sbcl-sketch)) + +(define-public ecl-sketch + (sbcl-package->ecl-package sbcl-sketch)) + +(define-public sbcl-binary-types + (let ((commit "9ec42042a50403961c08179a892ae3de725b1d7a")) + (package + (name "sbcl-binary-types") + (version (git-version "1.2" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/frodef/binary-types/") + (commit commit))) + (file-name (git-file-name "binary-types" version)) + (sha256 + (base32 "0kp4xwblfxh7gmgqc38k9xzrqlcr0q1jm5167ma1pajdxd3182j8")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/frodef/binary-types/") + (synopsis "Read and write binary records for Common Lisp") + (description + "Binary-types is a Common Lisp package for reading and writing binary +files. Binary-types provides macros that are used to declare the mapping +between Lisp objects and some binary (i.e. octet-based) representation.") + (license license:bsd-3)))) + +(define-public cl-binary-types + (sbcl-package->cl-source-package sbcl-binary-types)) + +(define-public ecl-binary-types + (sbcl-package->ecl-package sbcl-binary-types)) + +(define-public sbcl-trivial-custom-debugger + (let ((commit "a560594a673bbcd88136af82086107ee5ff9ca81")) + (package + (name "sbcl-trivial-custom-debugger") + (version (git-version "1.0.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/phoe/trivial-custom-debugger") + (commit commit))) + (file-name (git-file-name "trivial-custom-debugger" version)) + (sha256 + (base32 "1iri5wsp9sc1f5q934cj87zd79r5dc8fda0gl7x1pz95v0wx28yk")))) + (build-system asdf-build-system/sbcl) + (native-inputs + (list sbcl-parachute)) + (home-page "https://github.com/phoe/trivial-custom-debugger/") + (synopsis "Allow arbitrary functions as the standard Lisp debugger") + (description + "This is a portability library that allows one to fully override the +standard debugger provided by their Common Lisp system for situations where +binding @code{*debugger-hook*} is not enough -- most notably, for +@code{break}.") + (license license:expat)))) + +(define-public cl-trivial-custom-debugger + (sbcl-package->cl-source-package sbcl-trivial-custom-debugger)) + +(define-public ecl-trivial-custom-debugger + (package + (inherit (sbcl-package->ecl-package sbcl-trivial-custom-debugger)) + (arguments + ;; Tests fail on ECL: https://github.com/phoe/trivial-custom-debugger/issues/3 + '(#:tests? #f)))) |