ASDF3: How to globally disable output translations on Windows

Faré fahree at gmail.com
Tue Mar 8 03:26:27 UTC 2016


>> 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....
>
This is supposed to work the same way in ASDF 2 and ASDF 3, just made
portable to more architectures.

The only things that should have changed are indeed
(1) how SBCL may or may not find your home directory (on Windows, I've
seen weird discrepancies regarding $HOME between applications).
(2) our recent change in the way that .config is used. It might have
been just ~/.config/ on Windows, but is now something more like
(uiop:xdg-config-home) with an elaborate heuristic.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
The party of the first part shall be known in this contract
as the party of the first part.
       — Groucho Marx



More information about the asdf-devel mailing list