💾 Archived View for thrig.me › tech › lisp › asdf.gmi captured on 2024-05-10 at 12:35:29. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

ASDF - Another System Definition Facility

Common LISP build facility. I really should learn more about it one of these years. In the meantime, LISP systems I make get installed to the following directory so that ASDF can load them.

    $ mkdir -p "$HOME"/.local/share/common-lisp/source
    $ cd "$HOME"/.local/share/common-lisp/source
    $ git clone https://thrig.me/src/morna.git

You can also keep the repositories elsewhere and symlink them into the ~/.local/share/common-lisp/source directory. Sometimes you may need to touch the *.lisp files before ASDF will recompile things. Probably new systems should be built from a template to cut down on typos.

Quicklisp also searches this directory, so should be able to load these packages. Quicklisp also does dependencies, so might make it easier to install a complicated package than going out and getting those things (and maybe verifying those things?) yourself. Assuming that Quicklisp is kept up to date, etc.

Building things is hard?

Using Systems

Usually you make yet another package, and import things into that. There are various complications around what gets exported, shadowed, etc; check the DEFPACKAGE documentation for details.

    (require :asdf)
    (asdf:load-system :morna)
    (defpackage :foo (:use :cl :morna))
    (in-package :foo)

    ...

If instead you are using Quicklisp, the above might be replaced with:

    ; load quicklisp here, if need be (see the quicklisp docs)
    (ql:quickload :morna :silent t)

    ...

See Also

ASDF

Quicklisp