Bug in UIOP XDG implementation
Robert P. Goldman
rpgoldman at sift.net
Fri Mar 27 19:31:48 UTC 2015
Jason Miller wrote:
> With $XDG_CONFIG_DIRS unset, (uiop:user-configuration-directories)
> returns only $XDG_CONFIG_HOME/common-lisp/
> However, with it set to "/etc/xdg" it returns a list that starts with
> There are two problems with this:
> 1) The XDG Base Directory Specification says that "If $XDG_CONFIG_DIRS is
> either not set or empty, a value equal to /etc/xdg should be used."
> 2) My understanding of uiop:user-configuration-directories is that it's
> listed in order of importance, but, from the XDG spec:
> "The base directory defined by $XDG_CONFIG_HOME is considered more
> important than any of the base directories defined by
> So, what I think is correct is that with $XDG_CONFIG_DIRS set it should
> return a list starting with $XDG_CONFIG_HOME, followed by the lists in
> $XDG_CONFIG_DIRS, and with it not set, should return a list of
> $XDG_CONFIG_HOME followed by /etc/xdg/common-lisp/
> Even if that's not correct, due to #1 the current implementation is
> definitely wrong.
1. Please put a ticket to this effect on the launchpad bugs page,
2. I am not sure that this is a bug. The XDG specifies how a general
framework for user configuration should operate. But AFAICT
UIOP:USER-CONFIGURATION-DIRECTORIES doesn't claim to return something
specified by this standard, but rather, claims to return a list of user
configuration directories *FOR COMMON LISP* that somehow comply with the
specification. I.e., adding "common-lisp/" is acceptable.
I'm not sure about this since the documentation string for the UIOP
function does not clearly state what it claims to be supplying.
"Determine user configuration directories" is not specific enough to
support claims about whether the implementation is correct or buggy.
3. If we can determine that the implementation is erroneous, I would
welcome patches that would fix it. I do not plan to try to fix it
myself. I don't use this means of configuration, and don't have the time
to investigate it, or the specification that underlies it. I still use
ASDF:*CENTRAL-REGISTRY*, since it permits me to configure ASDF entirely
in common lisp without using a DSL or wandering off into configuration
files which the shell will hide from me when I am confused about my
More information about the asdf-devel