[GSLL-devel] iterate extensions and asdf-system-connections
Liam Healy
lhealy at common-lisp.net
Sun Jan 9 21:15:02 UTC 2011
It seems a little odd that making asdf-system-connections a dependency
doesn't fix everything up. I guess I have just assumed that
dependencies were loaded in order, but evidently not. I think however
you're ascribing too much intelligence to asdf; there is a feature
:asdf-system-connections that, if not present, skips the reading of
the asdf:define-system-connection. So, if for some reason a-s-c is
not loaded before the file(s) that have #+asdf-system-connections is
read, the whole form following those conditions is skipped.
Here are two options that I hope will help.
1) I build my own SBCL image with a few "standard" things, among them
asdf-system-connections, and then I save-lisp-and-die. That image is
the one I always run by default, so a-s-c is always in my images.
2) I am in the process of phasing out GSD, to be replaced by a system
that has the whole contents of GSD, but also includes much more of
what I use routinely for scientific computing. For a variety of
reasons, iterate is a dependency, so it just gets loaded normally. No
ETA for release, however.
Liam
On Sat, Jan 8, 2011 at 8:35 PM, James Wright <james at chumsley.org> wrote:
> Hi all,
>
> (I'm not sure whether or not this is the right place for questions
> about the grid system in gsd; apologies if I should be posting
> elsewhere.)
>
> Has anyone else found a reliable way to force the grid extension to
> iterate to load?
>
> I have a project that uses some of the various iterate extensions.
> Naturally its asdf system won't compile properly if the iterate
> extension is not loaded. There doesn't seem to be any way to ensure
> that the grid extension is loaded aside from making sure that the
> asdf-system-connections system has been loaded before I try to load my
> system. That means I need this ugly piece of work in my asd file,
> before my system definition:
>
> ;; We want to use the iterate extension for grid data
> (eval-when (:compile-toplevel :load-toplevel :execute)
> (require '#:asdf-system-connections))
>
> Including :asdf-system-connections in the dependencies of my system is
> not sufficient, either because I can't control the order in which
> systems load, or for some deeper reason (I suspect that in fact
> asdf-system-connections needs to be fully loaded before asdf even
> starts thinking about my system).
>
> Would it be possible to include an asdf system in the grid project
> like the following?
>
> (asdf:defsystem grid-iterate-extension
> :depends-on (#:grid #:iterate #:alexandria)
> :components ((:module
> "grid-iterate"
> :pathname ""
> :components ((:file "iterate")))))
>
> Then I could just include grid-iterate-extension in the dependencies
> for my asdf system and not have to go through any contortions to get
> asdf-system-connections loaded first. It has to go in its own file to
> be reliably found by asdf, which I recognize adds clutter, but I think
> it's wrong to have a dependency on asdf-system-connections that I
> can't express in my system definition.
>
> Thanks!
> James
>
> _______________________________________________
> GSLL-devel mailing list
> GSLL-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/gsll-devel
>
More information about the gsll-devel
mailing list