>From 81b0547c40c20ef040e7bc0f2d0623b39bd38098 Mon Sep 17 00:00:00 2001 From: Andy Patterson
Date: Thu, 10 May 2018 01:07:22 -0400 Subject: [PATCH] gnu: Add some lisp packages. --- gnu/packages/lisp.scm | 727 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 727 insertions(+) diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 1f8e6ab42..17e709641 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -1433,3 +1433,730 @@ compressor. It works on data produced by @code{parse-js} to generate a `(("sbcl" ,sbcl) ("sbcl-cl-uglify-js" ,sbcl-cl-uglify-js))) (synopsis "JavaScript compressor"))) + +(define-public sbcl-closer-mop + (package + (name "sbcl-closer-mop") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/pcostanza/closer-mop" + "/archive/v" version ".tar.gz")) + (sha256 + (base32 "1pyc8lk2yxbjhycm57377vhxy0xrh2pmg0w89m7fifan6haiisbl")) + (file-name (string-append "closer-mop-" version ".tar.gz")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/pcostanza/closer-mop/") + (synopsis "Meta Object Protocol (MOP) compatibility layer") + (description "Closer to MOP is a compatibility layer that rectifies many +of the absent or incorrect CLOS MOP features across a broad range of Common +Lisp implementations.") + (license license:x11))) + +(define-public sbcl-trivial-types + (let ((commit "ee869f2b7504d8aa9a74403641a5b42b16f47d88") + (revision "1")) + (package + (name "sbcl-trivial-types") + (version (string-append "0.1-" revision "." (string-take commit 7))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/m2ym/trivial-types.git") + (commit commit))) + (sha256 + (base32 "1s4cp9bdlbn8447q7w7f1wkgwrbvfzp20mgs307l5pxvdslin341")) + (file-name (string-append "trivial-types-" version "-checkout")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/m2ym/trivial-types") + (synopsis "Trivial type definitions") + (description "TRIVIAL-TYPES provides missing but important type +definitions such as PROPER-LIST, ASSOCIATION-LIST, PROPERTY-LIST and TUPLE. +By using these types, you can keep type declarations more accurate. For +example, you may write a class definition like: + address@hidden +(defclass person () + ((name :type string)) + ((age :type fixnum)) + ((friends :type list))) address@hidden example + +However, it is not obvious for anyone except you that FRIENDS slot has +only a list of person. If you want declare FRIENDS slot more +accurately, PROPER-LIST is the best for that: + address@hidden +(defclass person () + ((name :type string)) + ((age :type fixnum)) + ((friends :type (proper-list person)))) address@hidden example + +In addition, TRIVIAL-TYPES also provides standard designators defined +in ANSI standard such as PACKAGE-DESIGNATOR. They are useful when you +write a function that takes a package-oid argument like: + address@hidden +(defun list-external-symbols (package) + (declare (package-designator package)) + (loop for symbol being the external-symbol of package + collect symbol)) address@hidden example +") + (license license:lgpl2.0+)))) + +(define-public sbcl-named-readtables + (let ((commit "4dfb89fa1af6b305b6492b8af042f5190c11e9fc") + (revision "1")) + (package + (name "sbcl-named-readtables") + (version (string-append "0.9-" revision "." (string-take commit 7))) + (source + (origin + (method git-fetch) + (uri (git-reference + + (url "https://github.com/melisgl/named-readtables.git") + (commit commit))) + (sha256 + (base32 "083kgh5462iqbb4px6kq8s7sggvpvkm36hx4qi9rnaw53b6ilqkk")) + (file-name (string-append "named-readtables-" version "-checkout")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/melisgl/named-readtables/") + (synopsis "Library that creates a namespace for named readtables") + (description "Named readtables is a library that creates a namespace for +named readtables, which is akin to package namespacing in Common Lisp.") + (license license:bsd-3)))) + +(define-public sbcl-cl-interpol + (package + (name "sbcl-cl-interpol") + (version "0.2.6") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/edicl/cl-interpol" + "/archive/v" version ".tar.gz")) + (sha256 + (base32 "1cdl0dn55nsrr9w5ykzfgwh3f76n4k7g9cd1i6d90nqsdcnnwc3x")) + (file-name (string-append "cl-interpol-" version ".tar.gz")))) + (build-system asdf-build-system/sbcl) + (inputs `(("cl-unicode" ,sbcl-cl-unicode))) + (native-inputs `(("flexi-streams" ,sbcl-flexi-streams))) + (home-page "http://weitz.de/cl-interpol/") + (synopsis "String interpolation library for Common Lisp") + (description "CL-INTERPOL is a library for Common Lisp which modifies the +reader so that you can have interpolation within strings similar to Perl or +Unix Shell scripts. It also provides various ways to insert arbitrary +characters into literal strings even if your editor/IDE doesn't support +them.") + (license license:bsd-2))) + +(define-public sbcl-split-sequence + (package + (name "sbcl-split-sequence") + (version "1.4") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/sharplispers/split-sequence" + "/archive/v" version ".tar.gz")) + (sha256 + (base32 "12qgmnas2vd1wgyddf4fv2j5xsaj5mb2r0ylh043bwr6986gdbqa")) + (file-name (string-append "split-sequence-" version ".tar.gz")))) + (build-system asdf-build-system/sbcl) + (native-inputs `(("fiveam" ,sbcl-fiveam))) + (home-page "http://cliki.net/split-sequence") + (synopsis "Common Lisp utility to split sequences") + (description "A Common Lisp library whose purpose is to split a sequence +into a list of subsequences delimited by objects satisfying a test.") + (license license:public-domain))) + +(define-public sbcl-rt + (let ((revision "1") + (commit "a6a7503a0b47953bc7579c90f02a6dba1f6e4c5a")) + (package + (name "sbcl-rt") + (version (string-append "0.0.0-" revision "." (string-take commit 7))) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "http://git.kpe.io/rt.git") + (commit commit))) + (sha256 + (base32 "13si2rrxaagbr0bkvg6sqicxxpyshabx6ad6byc9n2ik5ysna69b")) + (file-name (string-append "rt-" version "-checkout")))) + (build-system asdf-build-system/sbcl) + (home-page "http://www.cliki.net/RT") + (synopsis "Regression testing framework") + (description "@code{rt} is short for \"regression testing\", an older +test tramework from the CMU AI Repository.") + (license (list + license:lgpl3 ; for rt.asd + license:expat))))) ; for rt.lisp + +(define-public sbcl-hu.dwim.asdf + (let ((revision "1") + (commit "170b0e4fdde3df0bc537327e7600575daac9e141")) + (package + (name "sbcl-hu.dwim.asdf") + (version (string-append "0.0.0-" revision "." (string-take commit 7))) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/nixeagle/hu.dwim.asdf") + (commit commit))) + (sha256 + (base32 "10ax7p8y6vjqxzcq125p62kf68zi455a65ysgk0kl1f2v839c33v")) + (file-name (string-append "hu.dwim.asdf-" version "-checkout")))) + (build-system asdf-build-system/sbcl) + (home-page "http://hub.darcs.net/hu.dwim/hu.dwim.asdf") + (synopsis "Extensions to ASDF") + (description "Various ASDF extensions such as attached test and +documentation system, explicit development support, etc.") + (license license:public-domain)))) + +(define-public sbcl-hu.dwim.stefil + (let ((revision "1") + (commit "ab6d1aa8995878a1b66d745dfd0ba021090bbcf9")) + (package + (name "sbcl-hu.dwim.stefil") + (version (string-append "0.0.0-" revision "." (string-take commit 7))) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://gitlab.common-lisp.net/xcvb/hu.dwim.stefil.git") + (commit commit))) + (sha256 + (base32 "1d8yccw65zj3zh46cbi3x6nmn1dwdb76s9d0av035077mvyirqqp")) + (file-name (string-append "hu.dwim.stefil-" version "-checkout")))) + (build-system asdf-build-system/sbcl) + (native-inputs + `(("asdf:cl-hu.dwim.asdf" ,sbcl-hu.dwim.asdf))) + (inputs + `(("sbcl-alexandria" ,sbcl-alexandria))) + (home-page "http://hub.darcs.net/hu.dwim/hu.dwim.stefil") + (synopsis "Simple test framework") + (description "Stefil is a simple test framework for Common Lisp, +with a focus on interactive development.") + (license license:public-domain)))) + +(define-public sbcl-repl-utilities + (let ((commit "e0de9c92e774f77cab1a4cd92e2ac922ac3a807e") + (revision "1")) + (package + (name "sbcl-repl-utilities") + (version (string-append "0.0.0-" revision "." (string-take commit 7))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/m-n/repl-utilities.git") + (commit commit))) + (sha256 + (base32 "1r5icmw3ha5y77kvzqni3a9bcd66d9pz5mjsbw04xg3jk0d15cgz")) + (file-name (string-append "repl-utilities" version "-checkout")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/m-n/repl-utilities/") + (synopsis "Library to simplify life at the REPL") + (description "REPL-Utilities provides a set of features which makes the +use of the Read-Eval-Print-Loop (REPL) easier for common tasks.") + (license license:bsd-3)))) + +(define-public sbcl-babel + (package + (name "sbcl-babel") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/cl-babel/babel/archive/v" + version ".tar.gz")) + (sha256 + (base32 "189kgbmslh36xx0d2i1g6a7mcvjryvjzkdlnhilqy5xs7hkyqirq")) + (file-name (string-append name "-" version ".tar.gz")))) + (build-system asdf-build-system/sbcl) + (native-inputs + `(("tests:cl-hu.dwim.stefil" ,sbcl-hu.dwim.stefil))) + (inputs + `(("sbcl-alexandria" ,sbcl-alexandria) + ("sbcl-trivial-features" ,sbcl-trivial-features-bootstrap))) + (home-page "https://common-lisp.net/project/babel/") + (synopsis "Charset encoding and decoding library") + (description "Babel is a charset encoding and decoding library, not unlike +GNU libiconv, but completely written in Common Lisp.") + (license license:x11))) + +(define-public sbcl-cffi-bootstrap + (package + (name "sbcl-cffi-bootstrap") + (version "0.18.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/cffi/cffi/archive/v" + version ".tar.gz")) + (sha256 + (base32 "0ac40z3sg5szhm99l3bjpm0v1yz2vlhc6scqx1qzvlfcawc66m9q")) + (file-name (string-append name "-" version ".tar.gz")))) + (build-system asdf-build-system/sbcl) + (inputs + `(("libffi" ,libffi) + ("alexandria" ,sbcl-alexandria) + ("babel" ,sbcl-babel) + ("trivial-features" ,sbcl-trivial-features-bootstrap))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "libffi/libffi.lisp" + (("libffi.so.6" all) (string-append + (assoc-ref inputs "libffi") + "/lib/" all))) + (substitute* "toolchain/c-toolchain.lisp" + (("\"cc\"") (format #f "~S" (which "gcc"))))))) + #:asd-system-name "cffi" + #:tests? #f)) + (home-page "http://common-lisp.net/project/cffi") + (synopsis "Common Foreign Function Interface for Common Lisp") + (description "The Common Foreign Function Interface (CFFI) +purports to be a portable foreign function interface for Common Lisp. +The CFFI library is composed of a Lisp-implementation-specific backend +in the CFFI-SYS package, and a portable frontend in the CFFI +package.") + (license license:x11))) + +(define-public sbcl-cffi-toolchain + (package + (inherit sbcl-cffi-bootstrap) + (name "sbcl-cffi-toolchain") + (inputs + `(("libffi" ,libffi) + ("sbcl-cffi" ,sbcl-cffi-bootstrap))) + (arguments + (substitute-keyword-arguments (package-arguments sbcl-cffi-bootstrap) + ((#:asd-system-name _) #f) + ((#:tests? _) #t))))) + +(define-public sbcl-cffi-libffi + (package + (inherit sbcl-cffi-toolchain) + (name "sbcl-cffi-libffi") + (inputs + `(("cffi" ,sbcl-cffi-bootstrap) + ("cffi-grovel" ,sbcl-cffi-grovel) + ("trivial-features" ,sbcl-trivial-features-bootstrap) + ("libffi" ,libffi))))) + +(define-public sbcl-cffi-grovel + (package + (inherit sbcl-cffi-toolchain) + (name "sbcl-cffi-grovel") + (inputs + `(("libffi" ,libffi) + ("cffi" ,sbcl-cffi-bootstrap) + ("cffi-toolchain" ,sbcl-cffi-toolchain) + ("alexandria" ,sbcl-alexandria))) + (arguments + (substitute-keyword-arguments (package-arguments sbcl-cffi-toolchain) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'build 'install-headers + (lambda* (#:key outputs #:allow-other-keys) + (install-file "grovel/common.h" + (string-append + (assoc-ref outputs "out") + "/include/grovel")))))))))) + +(define-public sbcl-cffi + (package + (inherit sbcl-cffi-toolchain) + (name "sbcl-cffi") + (inputs (package-inputs sbcl-cffi-bootstrap)) + (native-inputs + `(("cffi-grovel" ,sbcl-cffi-grovel) + ("cffi-libffi" ,sbcl-cffi-libffi) + ("rt" ,sbcl-rt) + ("bordeaux-threads" ,sbcl-bordeaux-threads) + ,@(package-native-inputs sbcl-cffi-bootstrap))))) + +(define-public sbcl-trivial-features-bootstrap + (package + (name "sbcl-trivial-features") + (version "0.8") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/trivial-features/trivial-features/archive/v" + version ".tar.gz")) + (sha256 + (base32 "0db1awn6jyhcfhyfvpjvfziprmq85cigf19mwbvaprhblydsag3c")) + (file-name (string-append "trivial-features-" version ".tar.gz")))) + (build-system asdf-build-system/sbcl) + (arguments '(#:tests? #f)) + (home-page "http://cliki.net/trivial-features") + (synopsis "Ensures consistency of @code{*FEATURES*} in Common Lisp") + (description "Trivial-features ensures that @code{*FEATURES*} is +consistent across multiple Common Lisp implementations.") + (license license:x11))) + +(define-public sbcl-osicat + (package + (name "sbcl-osicat") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/osicat/osicat/archive/v" + version ".tar.gz")) + (sha256 + (base32 + "10g8gvmnpl94c3iqf6nav663brk1qnc9wyz46q3vk4i77pbl63r6")) + (file-name (string-append "osicat-" version ".tar.gz")))) + (build-system asdf-build-system/sbcl) + (inputs + `(("cffi" ,sbcl-cffi) + ("alexandria" ,sbcl-alexandria) + ("trivial-features" ,sbcl-trivial-features-bootstrap))) + (native-inputs + `(("cffi-grovel" ,sbcl-cffi-grovel) + ("rt" ,sbcl-rt))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; We don't want the libraries in lib/