[asdf-devel] [PROPOSAL] Easier configuration, installation, and removal of asdf systems

Krzysztof Drewniak krzysdrewniak at gmail.com
Fri Nov 19 20:22:56 UTC 2010

To make asdf easier to use by providing a standard interface for
configuring, installing, and removing systems

To facilitate easier configuration, installation, and removal of asdf
systems, I propose 2 new operations and 2 new functions be added.
The operations would be install-op and remove-op, and the functions
would be configure and config-of

These new components would work as defined below:

 * New function: configure

        (defmethod configure (&rest options) ...)
        configure would, given a plist of options, print them to a file
        in the current directory (which is assumed to contain the asdf
        system to configure), for example `config.asdf'. If config.asdf
        already exists, it should be moved to config.asdf.bak before the
        mew config.asdf is written.
 * New operation: install-op
        install-op would, given a directory in which `configure' had
        been run, use the options given to configure to install the
        system. The options involved would be :sources
        and :registry . :sources is the pathname of a directory which is
        to be created, after which the contents of the current directory
        is copied into the directory named by :sources . 
        After the files are copied, all .asd files in :sources are
        linked into the pathname located in :registry.
        It is an error to run install-op without first having called

 * New function config-get
        (defmethod config-get (system config-key &optional default) ...)
        config-get will, given a system and config-key retrieve the
        value of config-key located in the config.asdf file located in
        the same director as the .asd file of the system (after
        dereferencing symlinks).
        This method is meant so that library/program authors can add
        additional configure options which the library/program can later
        access (Ex. a graphics library with an optional #d component
        could instruct users to pass `:3d t' or `:3d nil' depending on
        whether they want the 3d component. The user's choice would be
        accessed through config-get).
        The functions will return 2 values, the primary being the result
        of the lookup or default if the lookup fails, and a secondary
        which is T if the lookup succeeded and NIL otherwise. 

 * New operation: remove-op
        remove-op would undo the operations preformed by install-op,
        first removing the symlinks in :registry then deleting :sources.

Comments, suggestions, questions, etc. are appreciated.

Krzysztof Drewniak

[P.S. I will not be available between 09/22/2010 and 09/29/2010 due to a
vacation resort in Mexico which has an 80% chance of no free Internet]
X-Real-Email-With-Antispam: krzysdrewniak at gmail dot com
pgp key on keyserver.ubuntu.com 94F02AE8

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20101119/4a1dd6c4/attachment.sig>

More information about the asdf-devel mailing list