Do you see many Python projects being distributed as virtualenv tarballs which quicklisp bundles may be seen as the equivalent to?
Let me present a sane scheme for dependency management, in terms of software distribution:
+ Create an ASDF system definition.
+ Create a README and list all dependencies with links to the code, version requirements (if any) and other notes/gotchas. This is useful to have regardless.
* Optionally, create a install-deps-via-quicklisp.lisp script that pulls down given dependencies via quicklisp.
* Optionally, create a quicklisp bundle.
Quicklisp (and the way quicklisp does things) should never be forced on the user. Don't get me wrong, it simplifies dependency management and has made things easier for newcomers but it compromises on other fronts and is not (and should not become) the standard way of managing dependencies in CL-land since a lot of its design choices do not mesh well with many real-world scenarios. Always leave a fallback.
(loop for system in (list "sxql" "cl-ppcre" "dexador" "clss" "plump" "plump-sexp" "datafly" "xml-emitter" "local-time" "hunchentoot" "cl-who" "lass" "smackjack" "parenscript") do (asdf:load-system system))
I get a load of warnings about "redefining functions". Rather annoying...Here is an example (example.asd)
(defsystem :example
:name "Example"
:description "Example."
:author "foo@bar"
:serial t
:license "BSD"
:version "1.0"
:depends-on (:sxql :cl-ppcre :dexador :clss :plump)
:components ((:file "packages")
(:file "file1")
(:file "file2")
(:file "file3")))
You don't need to specify .lisp extension for files.
Your packages.lisp may be: (in-package #:cl-user)
(defpackage #:example
(:use #:cl #:sxql #:cl-ppcre)
(:export #:*global-symbol*
#:exported-function))
Then you can load your system through ASDF, including all its dependencies,
like so: (asdf:oos 'asdf:load-op :example)
This assumes that example.asd is inside a directory that can be found in: asdf:*central-registry*I added the list of packages to the README and I'll think about a good way to use ASDF without QL and/or usability loss later. Thank you though!