X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/add1a3561f697df0ea8bbd0c9b1c11fdf7334352..b3b5714fa72bf661003f27fbccba5697f5810115:/gnu/packages/lisp-xyz.scm diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 5d30446b43..078f88a70f 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -2573,6 +2573,19 @@ package.") (define-public cl-cffi (sbcl-package->cl-source-package sbcl-cffi)) +(define-public sbcl-cffi-uffi-compat + (package + (inherit sbcl-cffi-toolchain) + (name "sbcl-cffi-uffi-compat") + (native-inputs + `(,@(package-inputs sbcl-cffi-bootstrap))) ; For fix-paths phase + (inputs + `(("cffi" ,sbcl-cffi))) + (synopsis "UFFI Compatibility Layer for CFFI"))) + +(define-public cl-cffi-uffi-compat + (sbcl-package->cl-source-package sbcl-cffi-uffi-compat)) + (define-public sbcl-cl-sqlite (let ((commit "c738e66d4266ef63a1debc4ef4a1b871a068c112")) (package @@ -2995,7 +3008,7 @@ is a library for creating graphical user interfaces.") (sbcl-package->cl-source-package sbcl-cl-cffi-gtk)) (define-public sbcl-cl-webkit - (let ((commit "cd2a9008e0c152e54755e8a7f07b050fe36bab31")) + (let ((commit "79ad41996a1bd7fc8e53fe8d168e8f2030603b14")) (package (name "sbcl-cl-webkit") (version (git-version "2.4" "1" commit)) @@ -3003,12 +3016,12 @@ is a library for creating graphical user interfaces.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/jmercouris/cl-webkit") + (url "https://github.com/joachifm/cl-webkit") (commit commit))) (file-name (git-file-name "cl-webkit" version)) (sha256 (base32 - "0f5lyn9i7xrn3g1bddga377mcbawkbxydijpg389q4n04gqj0vwf")))) + "1gxvmxmss5k79v2ccigx92q46zbydxh9r7plnnqh8na348pffgcs")))) (build-system asdf-build-system/sbcl) (inputs `(("cffi" ,sbcl-cffi) @@ -3025,7 +3038,7 @@ is a library for creating graphical user interfaces.") (("libwebkit2gtk" all) (string-append (assoc-ref inputs "webkitgtk") "/lib/" all)))))))) - (home-page "https://github.com/jmercouris/cl-webkit") + (home-page "https://github.com/joachifm/cl-webkit") (synopsis "Binding to WebKitGTK+ for Common Lisp") (description "@command{cl-webkit} is a binding to WebKitGTK+ for Common Lisp, @@ -4884,7 +4897,7 @@ port within a range.") to be easy to use so that you can quickly start testing. CLUnit provides a rich set of features aimed at improving your unit testing experience.") - (home-page "http://tgutu.github.io/clunit/") + (home-page "https://tgutu.github.io/clunit/") ;; MIT License (license license:expat)))) @@ -5344,10 +5357,10 @@ and @code{kqueue(2)}), a pathname library and file-system utilities.") #t))))) (synopsis "CFFI Groveller for IOLib, a Common Lisp I/O library"))) -(define-public sbcl-iolib +(define sbcl-iolib+syscalls (package (inherit sbcl-iolib.asdf) - (name "sbcl-iolib") + (name "sbcl-iolib+syscalls") (inputs `(("iolib.asdf" ,sbcl-iolib.asdf) ("iolib.conf" ,sbcl-iolib.conf) @@ -5362,7 +5375,7 @@ and @code{kqueue(2)}), a pathname library and file-system utilities.") `(("fiveam" ,sbcl-fiveam))) (arguments '(#:asd-file "iolib.asd" - #:asd-system-name "iolib" + #:asd-system-name "iolib/syscalls" #:test-asd-file "iolib.tests.asd" #:phases (modify-phases %standard-phases @@ -5379,41 +5392,58 @@ and @code{kqueue(2)}), a pathname library and file-system utilities.") ""))))))) (synopsis "Common Lisp I/O library"))) -(define-public cl-iolib - (sbcl-package->cl-source-package sbcl-iolib)) - (define sbcl-iolib+multiplex (package - (inherit sbcl-iolib) + (inherit sbcl-iolib+syscalls) (name "sbcl-iolib+multiplex") + (inputs + `(("iolib+syscalls" ,sbcl-iolib+syscalls) + ,@(package-inputs sbcl-iolib+syscalls))) (arguments - (substitute-keyword-arguments (package-arguments sbcl-iolib) + (substitute-keyword-arguments (package-arguments sbcl-iolib+syscalls) ((#:asd-system-name _) "iolib/multiplex"))))) -(define sbcl-iolib+syscalls - (package - (inherit sbcl-iolib) - (name "sbcl-iolib+syscalls") - (arguments - (substitute-keyword-arguments (package-arguments sbcl-iolib) - ((#:asd-system-name _) "iolib/syscalls"))))) + (define sbcl-iolib+streams (package - (inherit sbcl-iolib) + (inherit sbcl-iolib+syscalls) (name "sbcl-iolib+streams") + (inputs + `(("iolib+multiplex" ,sbcl-iolib+multiplex) + ,@(package-inputs sbcl-iolib+syscalls))) (arguments - (substitute-keyword-arguments (package-arguments sbcl-iolib) + (substitute-keyword-arguments (package-arguments sbcl-iolib+syscalls) ((#:asd-system-name _) "iolib/streams"))))) (define sbcl-iolib+sockets (package - (inherit sbcl-iolib) + (inherit sbcl-iolib+syscalls) (name "sbcl-iolib+sockets") + (inputs + `(("iolib+syscalls" ,sbcl-iolib+syscalls) + ("iolib+streams" ,sbcl-iolib+streams) + ,@(package-inputs sbcl-iolib+syscalls))) (arguments - (substitute-keyword-arguments (package-arguments sbcl-iolib) + (substitute-keyword-arguments (package-arguments sbcl-iolib+syscalls) ((#:asd-system-name _) "iolib/sockets"))))) +(define-public sbcl-iolib + (package + (inherit sbcl-iolib+syscalls) + (name "sbcl-iolib") + (inputs + `(("iolib+multiplex" ,sbcl-iolib+multiplex) + ("iolib+streams" ,sbcl-iolib+streams) + ("iolib+sockets" ,sbcl-iolib+sockets) + ,@(package-inputs sbcl-iolib+syscalls))) + (arguments + (substitute-keyword-arguments (package-arguments sbcl-iolib+syscalls) + ((#:asd-system-name _) "iolib"))))) + +(define-public cl-iolib + (sbcl-package->cl-source-package sbcl-iolib)) + (define-public sbcl-ieee-floats (let ((commit "566b51a005e81ff618554b9b2f0b795d3b29398d") (revision "1")) @@ -6337,16 +6367,13 @@ power of CXML is available when necessary.") (sha256 (base32 "0fw2q866yddbf23nk9pxphm9gsasx35vjyss82xzvndnjmzlqfl5")))) - ;; Inputs must be propagated or else packages depending on this won't have the necessary packages. + ;; Inputs must be propagated or else packages depending on this won't + ;; have the necessary packages. (propagated-inputs `(("alexandria" ,sbcl-alexandria) ("trivial-garbage" ,sbcl-trivial-garbage) ("babel" ,sbcl-babel) ("iolib" ,sbcl-iolib) - ("iolib+multiplex" ,(@@ (gnu packages lisp-xyz) sbcl-iolib+multiplex)) - ("iolib+syscalls" ,(@@ (gnu packages lisp-xyz) sbcl-iolib+syscalls)) - ("iolib+streams" ,(@@ (gnu packages lisp-xyz) sbcl-iolib+streams)) - ("iolib+sockets" ,(@@ (gnu packages lisp-xyz) sbcl-iolib+sockets)) ("ieee-floats" ,sbcl-ieee-floats) ("flexi-streams" ,sbcl-flexi-streams) ("cl-xmlspam" ,sbcl-cl-xmlspam) @@ -10882,3 +10909,344 @@ foreign libraries. (define-public cl-postmodern (sbcl-package->cl-source-package sbcl-postmodern)) + +(define-public sbcl-dbi + (package + (name "sbcl-dbi") + (version "0.9.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fukamachi/cl-dbi.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0m1fsravfaizamdak84adh3jxc4j91maqnrb4m08bfbmb04cdqhs")))) + (build-system asdf-build-system/sbcl) + (inputs + `(("bordeaux-threads" ,sbcl-bordeaux-threads) + ("closer-mop" ,sbcl-closer-mop) + ("split-sequence" ,sbcl-split-sequence))) + (arguments + `(#:tests? #f)) ; TODO: Break circular dependency with dbd-* + (synopsis "Database independent interface for Common Lisp") + (description + "@code{dbi} is a Common Lisp library providing a database independent +interface for MySQL, PostgreSQL and SQLite.") + (home-page "https://github.com/fukamachi/cl-dbi") + (license license:llgpl))) + +(define-public cl-dbi + (sbcl-package->cl-source-package sbcl-dbi)) + +(define-public sbcl-dbd-mysql + (package + (inherit sbcl-dbi) + (name "sbcl-dbd-mysql") + (inputs + `(("cl-mysql" ,sbcl-cl-mysql) + ("dbi" ,sbcl-dbi))) + (synopsis "Database driver for MySQL"))) + +(define-public cl-dbd-mysql + (sbcl-package->cl-source-package sbcl-dbd-mysql)) + +(define-public sbcl-dbd-postgres + (package + (inherit sbcl-dbi) + (name "sbcl-dbd-postgres") + (inputs + `(("cl-postgres" ,sbcl-cl-postgres) + ("dbi" ,sbcl-dbi) + ("trivial-garbage" ,sbcl-trivial-garbage))) + (synopsis "Database driver for PostgreSQL"))) + +(define-public cl-dbd-postgres + (sbcl-package->cl-source-package sbcl-dbd-postgres)) + +(define-public sbcl-dbd-sqlite3 + (package + (inherit sbcl-dbi) + (name "sbcl-dbd-sqlite3") + (inputs + `(("cl-sqlite" ,sbcl-cl-sqlite) + ("dbi" ,sbcl-dbi) + ("trivial-garbage" ,sbcl-trivial-garbage))) + (synopsis "Database driver for SQLite3"))) + +(define-public cl-dbd-sqlite3 + (sbcl-package->cl-source-package sbcl-dbd-sqlite3)) + +(define-public sbcl-uffi + (package + (name "sbcl-uffi") + (version "2.1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "http://git.kpe.io/uffi.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1hqszvz0a3wk4s9faa83sc3vjxcb5rxmjclyr17yzwg55z733kry")))) + (build-system asdf-build-system/sbcl) + (arguments + `(#:tests? #f ; TODO: Fix use of deprecated ASDF functions + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-permissions + (lambda _ + (make-file-writable "doc/html.tar.gz") + #t))))) + (synopsis "Universal foreign function library for Common Lisp") + (description + "UFFI provides a universal foreign function interface (FFI) + for Common Lisp.") + (home-page "http://quickdocs.org/uffi/") + (license license:llgpl))) + +(define-public cl-uffi + (package + (inherit (sbcl-package->cl-source-package sbcl-uffi)) + (arguments + `(#:phases + ;; asdf-build-system/source has its own phases and does not inherit + ;; from asdf-build-system/sbcl phases. + (modify-phases %standard-phases/source + (add-after 'unpack 'fix-permissions + (lambda _ + (make-file-writable "doc/html.tar.gz") + #t))))))) + +(define-public sbcl-clsql + (package + (name "sbcl-clsql") + (version "6.7.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "http://git.kpe.io/clsql.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1v1k3s5bsy3lgd9gk459bzpb1r0kdjda25s29samxw4gsgf1fqvp")) + (snippet + '(begin + ;; Remove precompiled libraries. + (delete-file "db-mysql/clsql_mysql.dll") + (delete-file "uffi/clsql_uffi.dll") + (delete-file "uffi/clsql_uffi.lib") + #t)))) + (build-system asdf-build-system/sbcl) + (native-inputs + `(("cffi-uffi-compat" ,sbcl-cffi-uffi-compat) + ("rt" ,sbcl-rt) + ("uffi" ,sbcl-uffi))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-permissions + (lambda _ + (make-file-writable "doc/html.tar.gz") + #t)) + (add-after 'unpack 'fix-tests + (lambda _ + (substitute* "clsql.asd" + (("clsql-tests :force t") + "clsql-tests")) + #t))))) + (synopsis "Common Lisp SQL Interface library") + (description + "@code{clsql} is a Common Lisp interface to SQL RDBMS based on the +Xanalys CommonSQL interface for Lispworks. It provides low-level database +interfaces as well as a functional and an object oriented interface.") + (home-page "http://clsql.kpe.io/") + (license license:llgpl))) + +(define-public cl-clsql + (package + (inherit (sbcl-package->cl-source-package sbcl-clsql)) + (native-inputs + `(("rt" ,cl-rt))) + (inputs + `(("mysql" ,mysql) + ("postgresql" ,postgresql) + ("sqlite" ,sqlite) + ("zlib" ,zlib))) + (propagated-inputs + `(("cl-postgres" ,cl-postgres) + ("cffi-uffi-compat" ,cl-cffi-uffi-compat) + ("md5" ,cl-md5) + ("uffi" ,cl-uffi))) + (arguments + `(#:phases + ;; asdf-build-system/source has its own phases and does not inherit + ;; from asdf-build-system/sbcl phases. + (modify-phases %standard-phases/source + (add-after 'unpack 'fix-permissions + (lambda _ + (make-file-writable "doc/html.tar.gz") + #t))))))) + +(define-public sbcl-clsql-uffi + (package + (inherit sbcl-clsql) + (name "sbcl-clsql-uffi") + (inputs + `(("cffi-uffi-compat" ,sbcl-cffi-uffi-compat) + ("clsql" ,sbcl-clsql) + ("uffi" ,sbcl-uffi))) + (synopsis "UFFI helper functions for Common Lisp SQL interface library"))) + +(define-public sbcl-clsql-sqlite3 + (package + (inherit sbcl-clsql) + (name "sbcl-clsql-sqlite3") + (inputs + `(("clsql" ,sbcl-clsql) + ("clsql-uffi" ,sbcl-clsql-uffi) + ("sqlite" ,sqlite))) + (arguments + (substitute-keyword-arguments (package-arguments sbcl-clsql) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "db-sqlite3/sqlite3-loader.lisp" + (("libsqlite3") + (string-append (assoc-ref inputs "sqlite") + "/lib/libsqlite3"))) + #t)))))) + (synopsis "SQLite3 driver for Common Lisp SQL interface library"))) + +(define-public sbcl-clsql-postgresql + (package + (inherit sbcl-clsql) + (name "sbcl-clsql-postgresql") + (inputs + `(("clsql" ,sbcl-clsql) + ("clsql-uffi" ,sbcl-clsql-uffi) + ("postgresql" ,postgresql))) + (arguments + (substitute-keyword-arguments (package-arguments sbcl-clsql) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "db-postgresql/postgresql-loader.lisp" + (("libpq") + (string-append (assoc-ref inputs "postgresql") + "/lib/libpq"))) + #t)))))) + (synopsis "PostgreSQL driver for Common Lisp SQL interface library"))) + +(define-public sbcl-clsql-postgresql-socket3 + (package + (inherit sbcl-clsql) + (name "sbcl-clsql-postgresql-socket3") + (inputs + `(("cl-postgres" ,sbcl-cl-postgres) + ("clsql" ,sbcl-clsql) + ("md5" ,sbcl-md5))) + (arguments + (substitute-keyword-arguments (package-arguments sbcl-clsql) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-after 'create-asd-file 'fix-asd-file + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib/" (%lisp-type))) + (asd (string-append lib "/clsql-postgresql-socket3.asd"))) + (substitute* asd + (("CLSQL-POSTGRESQL-SOCKET-SYSTEM::") + ""))) + #t)))))) + (synopsis "PostgreSQL driver for Common Lisp SQL interface library"))) + +(define-public sbcl-clsql-mysql + (package + (inherit sbcl-clsql) + (name "sbcl-clsql-mysql") + (inputs + `(("mysql" ,mysql) + ("sbcl-clsql" ,sbcl-clsql) + ("sbcl-clsql-uffi" ,sbcl-clsql-uffi) + ("zlib" ,zlib))) + (arguments + (substitute-keyword-arguments (package-arguments sbcl-clsql) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((lib (string-append "#p\"" + (assoc-ref outputs "out") + "/lib/\""))) + (substitute* "clsql-mysql.asd" + (("#p\"/usr/lib/clsql/clsql_mysql\\.so\"") + lib)) + (substitute* "db-mysql/mysql-loader.lisp" + (("libmysqlclient" all) + (string-append (assoc-ref inputs "mysql") "/lib/" all)) + (("clsql-mysql-system::\\*library-file-dir\\*") + lib))) + #t)) + (add-before 'build 'build-helper-library + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((mysql (assoc-ref inputs "mysql")) + (inc-dir (string-append mysql "/include/mysql")) + (lib-dir (string-append mysql "/lib")) + (shared-lib-dir (string-append (assoc-ref outputs "out") + "/lib")) + (shared-lib (string-append shared-lib-dir + "/clsql_mysql.so"))) + (mkdir-p shared-lib-dir) + (invoke "gcc" "-fPIC" "-shared" + "-I" inc-dir + "db-mysql/clsql_mysql.c" + "-Wl,-soname=clsql_mysql" + "-L" lib-dir "-lmysqlclient" "-lz" + "-o" shared-lib) + #t))))))) + (synopsis "MySQL driver for Common Lisp SQL interface library"))) + +(define-public sbcl-sycamore + (let ((commit "fd2820fec165ad514493426dea209728f64e6d18")) + (package + (name "sbcl-sycamore") + (version "0.0.20120604") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ndantam/sycamore/") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "00bv1aj89q5vldmq92zp2364jq312zjq2mbd3iyz1s2b4widzhl7")))) + (build-system asdf-build-system/sbcl) + (arguments + `(#:asd-file "src/sycamore.asd")) + (inputs + `(("alexandria" ,sbcl-alexandria) + ("cl-ppcre" ,sbcl-cl-ppcre))) + (synopsis "Purely functional data structure library in Common Lisp") + (description + "Sycamore is a fast, purely functional data structure library in Common Lisp. +If features: + +@itemize +@item Fast, purely functional weight-balanced binary trees. +@item Leaf nodes are simple-vectors, greatly reducing tree height. +@item Interfaces for tree Sets and Maps (dictionaries). +@item Ropes. +@item Purely functional pairing heaps. +@item Purely functional amortized queue. +@end itemize\n") + (home-page "http://ndantam.github.io/sycamore/") + (license license:bsd-3)))) + +(define-public cl-sycamore + (sbcl-package->cl-source-package sbcl-sycamore))