[asdf-devel] XDG_DATA_DIRS and colon separated things

Rupert Swarbrick rswarbrick at gmail.com
Tue Dec 13 13:44:35 UTC 2011


Hi,

TL;DR: Confusing error message. Is it possible to make it less confusing
       and/or ignore the silly input I inadvertently gave asdf?

I'm writing because I've just spent ages debugging a confusing niggle
with interaction between ASDF and my linux box. Basically, running sbcl
in a terminal and then trying to (require 'foo) gave me this rather
confusing error message:

> This is SBCL 1.0.54.0.debian, 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.
> * (require :cl-fad)
> ASDF could not load cl-fad because
> Invalid designator for an absolute pathname: #P"common-lisp/systems/".
>
> debugger invoked on a SIMPLE-ERROR in thread
> #<THREAD "initial thread" RUNNING {AB1B781}>:
>   Invalid designator for an absolute pathname: #P"common-lisp/systems/"
>
> Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
>
> restarts (invokable by number or by possibly-abbreviated name):
>   0: [REINITIALIZE-SOURCE-REGISTRY-AND-RETRY] Retry finding system cl-fad after
>                                               reinitializing the
>                                               source-registry.
>   1: [ABORT                                 ] Exit debugger, returning to top
>                                               level.
>
> (ASDF::RESOLVE-ABSOLUTE-LOCATION-COMPONENT
>  #P"common-lisp/systems/"
>  :DIRECTORY
>  T
>  :WILDEN
>  NIL)

I finally worked out what was going on by looking at
default-source-directory:

> * (default-source-registry)
>
> (:SOURCE-REGISTRY (:DIRECTORY #P"/home/rupert/.sbcl/systems/")
>  (:DIRECTORY #P"/home/rupert/src/mine/atonews/")
>  (:DIRECTORY #P"/home/rupert/.local/share/common-lisp/systems/")
>  (:TREE #P"/home/rupert/.local/share/common-lisp/source/")
>  (:DIRECTORY #P"common-lisp/systems/") (:TREE #P"common-lisp/source/")
>  (:DIRECTORY #P"/opt/gnome/share/common-lisp/systems/")
>  (:TREE #P"/opt/gnome/share/common-lisp/source/")
>  (:DIRECTORY #P"/usr/local/share/common-lisp/systems/")
>  (:TREE #P"/usr/local/share/common-lisp/source/")
>  (:DIRECTORY #P"/usr/share/common-lisp/systems/")
>  (:TREE #P"/usr/share/common-lisp/source/") :INHERIT-CONFIGURATION)

Note the #P"common-lisp/systems/" line! Tracing further, I found that
this comes from a mistake I made when setting up my
shell. $XDG_DATA_DIRS is

  :/opt/gnome/share/:/usr/local/share/:/usr/share/

Because of the leading colon, the split-string call on line 4020 of
asdf.lisp gives me a leading "", resulting in path names that aren't
fully qualified.

Now, I'll fix my setup, since it's my own silly fault, but do any of you
have an idea for how to make this error less perplexing for the next
person who does something similar? (Maybe just drop "" components?)


Rupert
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 315 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20111213/9dc0987b/attachment.sig>


More information about the asdf-devel mailing list