<br>hi!<br><br>i've been playing with the idea of adding darcs support to asdf-install. unfortunately i don't have that much free time to jump right into it, so i sum up my ideas and design plan, so maybe someone feels like hacking on it. if there are other interested people we could use this mail as a scratch doc, feel free to add/change whatever you feel like is missing/wrong, but please start your reply as a forward so the mail will not be full of reply-annotations.
<br><br>user features:<br><ul><li>pointing to an url containing a dir '_darcs' (or CVS, or whatever else, but i'm missing darcs the most) should issue a 'darcs get' command to get the repo</li><li>support auto updating of installed repos
</li><li>support versions so that asdf looks for version tags with heuristic search among the tags in the repo (tries things like v-1.2.3, v1.2.3, version-1.2.3, etc). then it could get the tag requested by the user. the default operation should be to only get tagged state from the repos, so the user is relatively safe from too fresh code. this of course needs cooperation from the repo maintainers to tag the rerpos according to the released versions, but i'm sure that's the smallest problem.
</li></ul>design plan:<br><ul><li>create clos objects for packages (better name?) and implement the install protocol on them, so we can override things like getting the stuff and cleaning up. the protocol should be as finegrained as needed, without coding i would start from these:
<br></li><ul><li>install</li><li>uninstall<br></li><li>download</li><li>update</li><li>comptaiblep</li></ul><li>create a TARPackage<br></li><li>create a RepositoryPackage class that implements the base functionality by customising the install defmethod's
</li><li>create a DarcsPackage that adds the missing pieces to darcs get the package<br></li></ul>future:<br><div style="margin-left: 40px;">ultimately i would like to see a tighter integration with asdf in regards of version handling and dependencies. asdf should allow more complex entries for dependencies that also contain a :version info (with support for 'latest' or 'head', so tagged repos could contain dependencies for the exact versions, while the head could contain deps for the head of other systems when necessary).
<br><br>then asdf-install could/should have an operation that starts out from a given asdf system and gets the correct versions of all the dependencies into dirs named project-name-version (and with the darcs integraion all that needs to be done by the maintainers is to properly tag the repos). then some sort of :around method on load-op should rebind the *central-registry* so that the load-op of a system gets a registry with the proper versions.
<br><br>of course there are many open questions, like what happens for contradictory version requirements (a continuable error for using the newer version?) and if a version is already loaded and another version is requested by some operation (fail?).
<br><br>and of course this all should be dropped and we should have something like the smalltalk guys: structured editing of the code in a running lisp image and operations to migrate modules between running images, but this is a much longer story and needs much more work...
<br></div><br>opinions? or better voulenteers? :)<br><br>-- <br>- attila<br><br>"- The truth is that I've been too considerate, and so became unintentionally cruel...<br> - I understand.<br> - No, you don't understand! We don't speak the same language!"
<br>(Ingmar Bergman - Smultronstället)