RPG <rpgoldman@gmail.com> 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:
http://www.freebsd.org/ports/index.html
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports.html
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":
http://www.freebsd.org/cgi/ports.cgi?query=lisp&stype=all
Here are some snippets from the Makefile for the CMUCL port (loads "19b")
which show how the version/archive-site/maintainer/etc. is handled:
http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/lang/cmucl/Makefile?rev=1.25
...[snip]...
PORTNAME= cmucl
PORTVERSION= 19b
CATEGORIES= lang lisp
MASTER_SITES= ftp://ftp.common-lisp.net/pub/project/cmucl/release/${PORTVERSION}/ \
http://www.pmsf.de/pub/cmucl/release/${PORTVERSION}/ \
ftp://ftp.averillpark.net/cmucl/release/${PORTVERSION}/ \
ftp://ftp.linux.org.uk/pub/lisp/cmucl/release/${PORTVERSION}/ \
ftp://ftp.tepus.com/pub/project/cmucl/release/${PORTVERSION}/
DISTNAME= ${PORTNAME}-${PORTVERSION}-x86-FreeBSD
MAINTAINER= cracauer@cons.org
COMMENT= The CMU implementation of Common Lisp
ONLY_FOR_ARCHS= i386
USE_BZIP2= YES
NO_WRKSUBDIR= yes
NO_BUILD= yes
MAN1= lisp.1 cmucl.1
...[snip]...
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
-----
Rob Warnock <rpw3@rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607