(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
(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))
(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)
(("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,
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))))
#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)
`(("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
"")))))))
(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"))
(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)
(define-public cl-simple-date-postgres-glue
(sbcl-package->cl-source-package sbcl-simple-date-postgres-glue))
+
+(define-public sbcl-s-sql
+ (package
+ (inherit sbcl-simple-date)
+ (name "sbcl-s-sql")
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("cl-postgres" ,sbcl-cl-postgres)))
+ (arguments
+ `(#:tests? #f)) ; TODO: Break postmodern circular dependency
+ (synopsis "Lispy DSL for SQL")
+ (description
+ "@code{s-sql} is a Common Lisp library that can be used to compile
+s-expressions to strings of SQL code, escaping any Lisp values inside, and
+doing as much as possible of the work at compile time.")))
+
+(define-public cl-s-sql
+ (sbcl-package->cl-source-package sbcl-s-sql))
+
+(define-public sbcl-postmodern
+ (package
+ (inherit sbcl-simple-date)
+ (name "sbcl-postmodern")
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)
+ ("simple-date" ,sbcl-simple-date)
+ ("simple-date-postgres-glue" ,sbcl-simple-date-postgres-glue)))
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("bordeaux-threads" ,sbcl-bordeaux-threads)
+ ("cl-postgres" ,sbcl-cl-postgres)
+ ("closer-mop" ,sbcl-closer-mop)
+ ("global-vars" ,sbcl-global-vars)
+ ("s-sql" ,sbcl-s-sql)
+ ("split-sequence" ,sbcl-split-sequence)))
+ (arguments
+ ;; TODO: Fix missing dependency errors for simple-date/postgres-glue,
+ ;; cl-postgres/tests and s-sql/tests.
+ `(#:tests? #f))
+ (synopsis "Common Lisp library for interacting with PostgreSQL")
+ (description
+ "@code{postmodern} is a Common Lisp library for interacting with
+PostgreSQL databases. It provides the following features:
+
+@itemize
+@item Efficient communication with the database server without need for
+foreign libraries.
+@item Support for UTF-8 on Unicode-aware Lisp implementations.
+@item A syntax for mixing SQL and Lisp code.
+@item Convenient support for prepared statements and stored procedures.
+@item A metaclass for simple database-access objects.
+@end itemize\n")))
+
+(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")))