[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