Re: XCVB, a replacement for ASDF

"Attila Lendvai" <[email protected]> Tue, 3 Jun 2008 12:40:09 +0200
Newsgroups gmane.lisp.cclan.general
Message-ID <[email protected]>
> Also, if you know other people I should be talking to regarding this
> topic, or webpages or papers I should have read, please point me to
> them.

one more thing about .asd symlinking. i still remember the time when i
managed to get out of the thought-trap advertised by asdf to use
symlinks to configure what's in my *central-registry*.
creating/updating symlinks is a pain compared to a 10-liner lisp code
that scans a directory and sets up the registry. since then i've
forgotten symlinks and never missed them.

it would be cool if xcvb had better support for some kind of registry
management from the lisp side. for example we have a separate snapshot
of the set of libraries for each project we are working on. when i
want to fix a bug in a project, i want to load it with the same
version of its dependencies that are used on the live system.
currently we have this setup:

- a "global" workspace. it's a dir on the dev machines with systems
that rarely change and we have not patched.

- a "head" workspace, in /home/user/workspace which holds the latest
of everything, including local modifications. normally when working, i
load this lisp vm using this environment. if something from "global"
needs patching, it's copied to "head" and changed there.

- a merged copy of the "head" + "global" dirs for each project. when i
plan to update a live system, i update this directory on my developer
machine and test the app. then update the server version of this
directory, rebuild and restart the live system. (we do this update
using distributed VCS'es, not rsync or similar, although that's also
an option, but being able to see the history/version/etc comes very
handy comapred to file dates.)

that 10-liner lisp scanner scans directories for .asd file in a given
order (i.e. "head" first, then "global"; also skips dirs prefixed with
'_' for convenience).

we create various core files at different workspaces/stages. for the
head we have two stage, one level with the rarely changed libs loaded,
and one with almost everything except the leaf projects. leaf projects
are the domain solutions (that will hopefully please a customer... :)


another dream feature: installing/updating from VCS systems. all of
our dependencies are installed (by hand) using VCS repos when
available. it would be great if xcvb had a repository of VCS repo
links. then it could check out repos as a means of installing, and/or
scan for remote changes to interactively exec the required VCS
commands to update the installed systems. if it's added, then darcs
and git support should happen first, the rest is already dying out.
tags could be listed as lib versions.

hth,

-- 
 attila

ps: some of the code for this is here:
http://common-lisp.net/cgi-bin/darcsweb/darcsweb.cgi?r=cl-dwim-environment;a=headblob;f=/environment.lisp

ps: this code is a bit messy, but we are too busy cleaning up the
stuff we are buidling using this, so... :)

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/