ASDF-INSTALL Tutorial

Introduction

If you're reading this you're probably already convinced that Common Lisp is a very fine programming language. However, while the ANSI standard is huge and provides tons of functionality there are a couple of things (like, say, XML parsers, web servers, GUIs, regular expressions) that aren't included and must either be provided by your particular implementation or otherwise by a third-party library.

Hitherto these libraries had to be installed manually, an often complex process. However, many library authors are now packaging their systems using the ASDF-INSTALL standard, allowing for automatic installation on any Lisp system that supports it.

What is ASDF?

In order to understand what ASDF-INSTALL does we first have to understand what ASDF is and why we need it. ASDF ("Another System Definition Facility"), written by Daniel Barlow, is a library that automates the compilation and loading of "systems", i.e. Lisp programs which are usually composed of a couple of files which have to be compiled and loaded in a certain order. ASDF is similar to the Unix make program. ASDF works with the majority of CL implementations in use today.

A similar system which precedes ASDF is MK:DEFSYSTEM. You don't need it for ASDF-INSTALL but it won't hurt to have it available for libraries which aren't aware of ASDF. However, this document makes no effort to explain how MK:DEFSYSTEM is used. See Henrik Motakef's article "Fight The System."

Update: Marco Antoniotti has patched ASDF-INSTALL to make it work with MK:DEFSYSTEM as well. See the section about MK:DEFSYSTEM below.

What is ASDF-INSTALL?

ASDF-INSTALL, also written by Dan Barlow, is layered atop of ASDF and can automatically download Lisp libraries from the Internet and install them for you. It is also able to detect and resolve dependencies on other libraries. (These libraries have to be prepared for ASDF-INSTALL by their author. See more below.)

ASDF-INSTALL was originally written for the SBCL Common Lisp implementation. It has been recently ported to CMUCL, Allegro Common Lisp, Xanalys LispWorks, and CLISP by Edi Weitz. Marco Baringer added support for OpenMCL, James Anderson added support for Macintosh Common Lisp (MCL). Douglas Crosher added support for the Scieneer Common Lisp.

It'd be nice if users of other Lisps (like Corman Lisp, or ECL, could provide patches to make ASDF-INSTALL available on more platforms.

The original ASDF-INSTALL is distributed with SBCL. The latest incarnation of the "portable" version is available from Common-Lisp.net.

Note that the "portable" version can be considered a fork of the original (SBCL-only) version. Likewise, versions of ASDF-INSTALL distributed with other Lisp implementations like OpenMCL are most likely forks of the "portable" version. This document mostly describes how to use the "portable" version. If you're on a system like SBCL or OpenMCL that comes with its own version of ASDF-INSTALL you are advised to ignore the rest of this tutorial and instead consult the documentation that was supplied by your vendor. (Parts of this tutorial might apply to these implementations as well but they're not guaranteed to be kept up to date.)

This tutorial and the portable version of ASDF-INSTALL were originally started by Edi Weitz but they're now maintained by Gary King.