[asdf-devel] ASDF 2 questions

Faré fahree at gmail.com
Thu Sep 30 17:47:46 UTC 2010


On 23 September 2010 11:37, Didier Verna <didier at lrde.epita.fr> wrote:
> [ Please, Cc: me as I'm not on the mailing list ]

I already replied to all your questions on c.l.l but I'll reply again here.


> 1/ why isn't "source-registry.conf" named "asdf-source-registry.conf" ?
Because it's not used solely by ASDF, but also by XCVB.


> 2/ Should we understand that the convention of having a "systems"
>   directory with .asd files symlinked there is now obsolete ?
>   I still prefer to keep that because I can select which of the
>   installed sources I do want to be seen. I guess you could also use
>   exclude patterns for doing so, but it seems way more complicated.
>   Comments ?
>
It is still supported by ASDF2 and will remain supported for ASDF2.
But yes, we recommend new users to move to the new way.
You can still select sources with the new way,
e.g. using :directory instead of :tree.

> 3/ The following contents for source-registry.conf fails:
>
> (:source-registry
>  (:directory (merge-pathnames "share/common-lisp/systems/"
>                               (user-homedir-pathname)))
>  (:directory "/usr/local/share/common-lisp/systems")
>  (:directory "/usr/share/common-lisp/systems")
>  :inherit-configuration)
>
>  Am I to understand that this file cannot really contain Lisp code (and
>  so I couldn't use #'merge-pathnames)? Because in that case, this
>  sucks. I have several machines on which $HOME is different (e.g.
>  /home/ or /Users/, and no, I don't want to create a /home/ -> /Users/
>  symlink on my Macs)
>
3a- Use #.

3b- A future version will use the path designator DSL from
output-translations in the source-registry, at which point you can
specify (:home "share/common-lisp/systems/")


> 4/ I'm also struggling with the output translations.
>
> I'm happy with the default settings (using .cache/blabla) except for one
> case. For lisp files located under ~/Science/Source/Common Lisp/
> (recursively), I want the compiled files to remain at the same place,
> under an implementation-specific subdirectory, like
> asdf-binary-locations did for me before.
>
> For instance, ~/Science/Source/Common Lisp/foo/bar/baz.lisp would
> produce somthing like:
> ~/Science/Source/Common Lisp/foo/bar/sbcl-1.0.32.30-linux-x86-64/baz.fasl
>
> I tried this:
>
> (:output-translations
>  ("/Users/didier/Science/Source/Common Lisp/"
>  (:current-directory :implementation))
>  :inherit-configuration)
>
> but this doesn't work. SBCL says:
>
> This is SBCL 1.0.42.52, an implementation of ANSI Common Lisp.
> More information about SBCL is available at <http://www.sbcl.org/>.
>
> SBCL is free software, provided as is, with absolutely no warranty.
> It is mostly in the public domain; some portions are provided under
> BSD-style licenses.  See the CREDITS and COPYING files in the
> distribution for more information.
> ; loading system definition from
> ; /usr/local/lib/sbcl/sb-bsd-sockets/sb-bsd-sockets.asd into #<PACKAGE "ASDF0">
> ASDF could not load sb-grovel because :CURRENT-DIRECTORY fell through ETYPECASE expression.
>                                      Wanted one of ((EQL :DEFAULT-DIRECTORY)
>                                                     (EQL :SYSTEM-CACHE)
>                                                     (EQL :USER-CACHE)
>                                                     (EQL :HOME) (EQL :ROOT)
>                                                     CONS STRING PATHNAME)..
> ASDF could not load asdf-install because Error while trying to load definition
>                                         for system sb-bsd-sockets from
>                                         pathname
>                                         /usr/local/lib/sbcl/sb-bsd-sockets/sb-bsd-sockets.asd:
>                                         :CURRENT-DIRECTORY fell through ETYPECASE expression.
>                                         Wanted one of ((EQL
>                                                         :DEFAULT-DIRECTORY)
>                                                        (EQL :SYSTEM-CACHE)
>                                                        (EQL :USER-CACHE)
>                                                        (EQL :HOME) (EQL :ROOT)
>                                                        CONS STRING PATHNAME)..
>
> debugger invoked on a LOAD-SYSTEM-DEFINITION-ERROR:
>  Error while trying to load definition for system sb-bsd-sockets from pathname
>  /usr/local/lib/sbcl/sb-bsd-sockets/sb-bsd-sockets.asd:
>  :CURRENT-DIRECTORY fell through ETYPECASE expression.
>  Wanted one of ((EQL :DEFAULT-DIRECTORY) (EQL :SYSTEM-CACHE) (EQL :USER-CACHE)
>                 (EQL :HOME) (EQL :ROOT) CONS STRING PATHNAME).
>
> So what's the magick ?
>
:current-directory was removed as non sensical on many Lisp implementations.

Try this entry:
((:home "Science/Source/Common Lisp/")
 (:home "Science/Source/Common Lisp/" #p"**" :implementation #p"*.*"))

> 5/ Finally, I would like confirmation that ASDF now handles outdated
>   fasl's correctly, and we don't need to do the black magick ourselves.
>
I'm not sure what you mean, so I'd say probably not.
If you have "black magick" that you think should be part of ASDF,
please submit it here, and/or as an ASDF bug on launchpad.

[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
Microphones, liberating singers from having to be loud to be heard, gave back
to each language a music that matches its own prosody.




More information about the asdf-devel mailing list