ASDF3: How to globally disable output translations on Windows

Robert Goldman rpgoldman at sift.net
Tue Mar 8 03:14:30 UTC 2016


On 3/7/16 Mar 7 -8:22 PM, 9nauuk wrote:
> Hi,
> 
> I just upgraded from SBCL 1.1.4 to SBCL 1.3.3.  As a result, I
> I had to upgrade to ASDF3 from ASDF2.  To make matters worse,
> I had to do this on a computer running Micros*t Windows (XP, to
> be exact.)  I'd like to keep object files together with source 
> files.  With ASDF2, a 00-disable.conf file of a single line of 
> (t t) in directory 
>   $HOME/.config/common-lisp/asdf-output-translations.conf.d/ 
> would do the trick.  I was surprised this does not work with
> ASDF3.  After poking around for quite some time, I came across
> Section 13.5.2 at https://common-lisp.net/project/asdf/asdf.html.
> Adding a 99-disable-cache.conf file per the instruction at that
> section still won't make ASDF3 keep object files with my source
> files.  I know I can call ASDF:DISABLE-OUTPUT-TRANSLATIONS in my
> .sbclrc but I also have a lot of Lisp code to be processed by 
> SBCL invoked with "--no-sysinit --no-userinit".  If you know how
> to wholly disable the compiler output cache on a Windows machine, 
> I'll be grateful you can drop me a line. 
> 
> Best wishes,
> 
> 9nauuk
> 

I'm afraid I don't myself use the .config/ stuff.  However, note that
the XDG directory-handling was fixed relatively (relative to your
upgrade jump) recently.  Fixed in the sense that our older mapping of
the XDG naming conventions was inaccurate.  Second, note that the XDG
standard is a *linux* standard, and as such maps poorly to Windows.

So my first question would be: "are you sure that ASDF is even seeing
those configuration files?"

What does (UIOP:XDG-CONFIG-HOME) return for you?  Is that what you
expected?  What about (UIOP:XDG-CONFIG-DIRS)?

On windows, I believe that the directories loaded are
$HOME/config/common-lisp/asdf-output-translations.conf.d/ not
$HOME/.config/yadda-yadda-yadda

See the following snippet:

 (defun xdg-config-home (&rest more)
    "Returns a pathname for the directory containing user-specific
configuration files.
MORE may contain specifications for a subpath relative to this directory: a
subpathname specification and keyword arguments as per RESOLVE-LOCATION
\(see
also \"Configuration DSL\"\) in the ASDF manual."
    (resolve-absolute-location
     `(,(or (getenv-absolute-directory "XDG_CONFIG_HOME")
            (os-cond
             ((os-windows-p) (xdg-data-home "config/"))
             (t (subpathname (user-homedir-pathname) ".config/"))))
       ,more)))

This is why I keep all of my config in my cl-init file (or loaded
therefrom), where God meant it to be, instead of splattering it all over
the filesystem.  I believe "XDG" stands for "Easter Egg Hunt" in some
language....



More information about the asdf-devel mailing list