Subject: Re: A Humble Request: ASDF-INSTALL and version numbers
From: (Rob Warnock)
Date: Thu, 16 Feb 2006 05:39:53 -0600
Newsgroups: comp.lang.lisp
Message-ID: <>
RPG <> wrote:
| Would something like the following meet your needs (this is just a
| first sketch of a solution)?
| 1.  When issuing a version, one bumps the :version argument in the asd
| defsystem;
| 2.  We add an :asdf-install-url argument to the asd defsystem
| 3.  One signs the asd file.
| 4.  One uploads the tarball, asd file, and signatures wherever one
| wishes, with whatever name one wishes.
| 5.  One puts a link to the asd file to Cliki (possibly a link to the
| tarball, too, for backward compatibility -- see below).  Note that this
| step, as with current "-latest" practice, only needs to be performed
| once, yet still permit automatic detection of upgrades.  I.e., only
| steps 1, 3 and 4 need be carried out to issue a patched version.
| Now asdf-install would pull the asd file from a well-known location,
| examine it, and pull the corresponding tarball.

Hmmm... This is starting to sound very much like the way the FreeBSD
"ports" system works:

except that "ports" uses a stylized "Makefile" and other auxiliary
files ("distinfo", "pkg-descr", & "pkg-plist", at a minimum) instead
of ASDF-Install. The ports system includes specifying canonical and
alternative archives for a port, as well as required prerequisites
and their versions.

The way it's usually used is to install the entire collection
of "ports", which is just the information files [for all 11000+
ports, currently ~70 MB!!], and then when you want to install
a specific port, you "cd" to the corresponding directory (e.g.,
"/usr/ports/lang/cmucl" for CMUCL) and say "make intall". But
you can also take a more a la carte approach.

The following lists the FreeBSD ports matching "lisp":

Here are some snippets from the Makefile for the CMUCL port (loads "19b")
which show how the version/archive-site/maintainer/etc. is handled:
    PORTNAME=	  cmucl
    CATEGORIES=	  lang lisp

    COMMENT=	  The CMU implementation of Common Lisp

    ONLY_FOR_ARCHS= i386
    USE_BZIP2=	  YES
    NO_BUILD=	  yes
    MAN1=	  lisp.1 cmucl.1

whereas the "distinfo" file contains the actual filename for the
distribution, length, and checksums (MD5 & SHA-256):

    MD5 (cmucl-19b-x86-FreeBSD.tar.bz2) = 9536c4f52b59041e90ed676dcab85cdf
    SIZE (cmucl-19b-x86-FreeBSD.tar.bz2) = 7283215
    SHA256 (cmucl-19b-x86-FreeBSD.tar.bz2) = 2683234da65a1a295429eacc88af011baf621333a556b8413063117de7a4e41d

I'm not suggesting trying to copy "ports" exactly, but it *does*
represent a system which has been shown capable of scaling to over
10.000 packages, and seems to address many of the concerns I have
heard in this thread. At the very least, it would be good to use
it as a checklist of features needed in a Common Lisp Repository.


Rob Warnock			<>
627 26th Avenue			<URL:>
San Mateo, CA 94403		(650)572-2607