[asdf-devel] Two questions

Christophe Rhodes csr21 at cantab.net
Wed Sep 30 13:00:15 UTC 2009


Nick Levine <ndl at ravenbrook.com> writes:

>    > 1. Problems with the :feature feature.
>
>    It's the "asdf:feature feature", not the ":feature feature".
>
> If you're suggesting I can go
>
>    (:file "foo" :depends-on ((asdf:feature :frob)))
>
> -- well, I tried it and the results weren't any different.

Yeah.  This has worked at some point in the past, but it certainly looks
broken now.  What with the change in development repository, vcs,
history and management I can't track down how this was meant to work and
why exactly it doesn't, but... it does seem like it's been broken for a
long time.

>    You'll probably also want :if-component-dep-fails :ignore, if the
>    effect you want is for foo simply not to be loaded if :frob is not
>    present on *features*.
>
> Wouldn't that supress all sorts of genuine errors?

The way I've used this in the past (in at least my recollection) is
something like

(defsystem foo
  :components ((:module "impl-dep" 
                        :if-component-dep-fails :try-next
                        :components (("sbcl" :depends-on ((feature :sbcl)))
                                     ("abcl" :depends-on ((feature :abcl)))
                                     ...))
               (:module "actual-stuff" :depends-on "impl-dep" ...)))

>    [...]
>
>    With an :around method on asdf:output-files.  
>
> Tried that, it didn't have any effect.

At least here, doing

  (defmethod asdf:output-files :around ((o asdf:compile-op) (c asdf:cl-source-file)) 
    (let ((results (call-next-method)))
      (mapcar (lambda (x) (make-pathname :directory '(:absolute "tmp") 
                                         :name (pathname-name x) 
                                         :type (pathname-type x)))
              results)))

results in fasls being placed in /tmp/ rather than wherever they would
normally have ended up.  This is with asdf as distributed with SBCL;
I'm afraid I'm not up to date with the changes that have been made to
asdf development recently.

Cheers,

Christophe




More information about the asdf-devel mailing list