[asdf-install-devel] darcs support

Attila Lendvai attila.lendvai at gmail.com
Tue Oct 17 12:30:12 UTC 2006


hi!

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.

user features:

   - 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
   - support auto updating of installed repos
   - 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.

design plan:

   - 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:
   - install
      - uninstall
      - download
      - update
      - comptaiblep
   - create a TARPackage
   - create a RepositoryPackage class that implements the base
   functionality by customising the install defmethod's
   - create a DarcsPackage that adds the missing pieces to darcs get the
   package

future:
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).

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.

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?).

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...

opinions? or better voulenteers? :)

-- 
- attila

"- The truth is that I've been too considerate, and so became
unintentionally cruel...
- I understand.
- No, you don't understand! We don't speak the same language!"
(Ingmar Bergman - Smultronstället)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/asdf-install-devel/attachments/20061017/68d2ee16/attachment.html>


More information about the asdf-install-devel mailing list