[asdf-devel] distributing asdf

Faré fahree at gmail.com
Fri Jan 18 16:54:00 UTC 2013


OK, so I've put in the archives/ directory of asdf a few tarballs. See:
   http://common-lisp.net/project/asdf/archives/

The driver is in asdf-driver-2.26.118.tar.gz, which has only the
general-purpose utilities.
I minimally tested that loading it on top of 2.26 doesn't make 2.26
obviously not work.
I'll fix backward incompatibility bugs when found.
Remember: "If it's not backwards, it's not compatible".
The solution is to promptly rename any function the semantics of which clashes.

The defsystem is in asdf-defsystem-2.26.118.tar.gz,
which includes a bootstrapped asdf.lisp in addition to the
defsystem-specific sources.

And an archive of the git repo plus a bootstrapped asdf.lisp is in
asdf-2.26.118.tar.gz.

It's all build through a lisp script. Lisp scripting is so much more
run than shell scripting,
and it's easier than ever to do in a portable way thanks to
asdf-driver and inferior-shell.
See bin/asdf-builder for my "canonical" example.

I've finally debugged the CLISP upgrade, an issue with magic symbols
for setf-functions.

Featurewise, there a now debugged and somewhat tested mini-language
ensure-pathname.
POIU was debugged, and its deferred-warning support was moved to asdf-driver,
though not yet used in asdf-defsystem.

I devised a convention for putting multiple defsystems in a same file,
with asdf being able to find all of them without ambiguity:
foo.asd can contain system foo, foo/bar, foo/bar/baz, foo/quux, etc.
This won't work on an old asdf, but going forward, you will be able to do that.
asdf.asd itself already uses this trick to define asdf/defsystem.

logical pathnames get weirder. If you're crazy enough to use them in
your source-registry,
the files will be loaded as logical pathnames, at least on some
implementations that
don't translate-logical-pathname their *load-pathname*. You get what
you're asking for.
The central-registry keeps using probe-file, which will resolve to a truename.

I'm peddling a new operation 'build-op which should do "the default
thing for this system",
whatever that be. For asdf/defsystem, it's not load-op, it's
concatenate-source-op.

At Stelian Ionescu's request, I implemented a :read-file-form way to
point defsystem
to a form that contains the version of a system or component. As an extension to
what he requested, the form doesn't have to be the first in the file,
but you can
define a path of accessors to go grab the version number. For instance,
POIU has (:read-file-form "poiu.lisp" :path (1 2 2)) which means the 3rd element
of the third element of the second form (yay English having an off-by-one bug).

Less bugginess, more features. ASDF is not a "Lisp with batteries
included" by far,
but it is growing enough spare battery energy to let you go grab the
bigger batteries.

The downside is it's bigger. The upside is that it's as many redundant
libraries that
you don't have to write and/or import on top of it, and it really
makes Lisp scripting easier.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
To have a right to do a thing is not at all the same
as to be right in doing it.     — G.K. Chesterton




More information about the asdf-devel mailing list