Install with Quicklisp:
(ql:quickload "print-licenses")
Note that in order to do this the project must be quickload
ed, so you might
want to do this in a separate Lisp image if you don't want to clutter your
current one.
If the project does not specify its license in its ASDF system definition it will be listed as 'Unspecified'. You should manually figure out what license it uses (and maybe send a pull request).
Example:
(print-licenses 'fast-io)
=>
alexandria | Public Domain / 0-clause MIT
babel | MIT
cffi | MIT
cffi-grovel | MIT
cffi-toolchain | MIT
fast-io | NewBSD
static-vectors | MIT
trivial-features | MIT
trivial-gray-streams | MIT
uiop | Unspecified
Or you might want to group systems by their license:
(print-licenses :fast-io
:group-by-license t)
=>
MIT
babel, cffi, cffi-grovel, cffi-toolchain, fast-io, static-vectors, trivial-features, trivial-gray-streams
Public Domain / 0-clause MIT
alexandria
Unspecified
asdf, uiop
Related, to get a graph of dependencies:
- asdf-dependency-graph - A minimal wrapper around
dot
to generate an image of the dependencies graph.
and this snippet:
;; thanks https://gist.github.com/svetlyak40wt/a8ed639bf8fe07caed1531611bcf932d
;; added: max-level
(defun print-dependency-graph (system-name &key (level 0) (max-level most-positive-fixnum))
(when (= level max-level)
(return-from print-dependency-graph))
(loop repeat level
do (format t " "))
(format t "~A~%" system-name)
(typecase system-name
((or string symbol)
(let ((system (asdf/system:find-system system-name)))
(loop for dep in (asdf/system:system-depends-on system)
do (print-dependency-graph dep :level (1+ level) :max-level max-level))))))
(print-dependency-graph :str :max-level 3)
;; =>
STR
cl-ppcre
cl-ppcre-unicode
cl-ppcre
cl-unicode
cl-change-case
cl-ppcre
cl-ppcre-unicode
Original code entirely taken from @sjl's utilities, the original snippet to build the license tree coming from a @dk_jackdaniel's snippet.
MIT.