[asdf-devel] Disabling "built-in" output translation

Mark Evenson evenson at panix.com
Tue May 17 11:41:20 UTC 2011


ASDF contains some specialized code for ABCL that enable the translation 
of ASDF systems whose source is packaged into jar files to locate the 
corresponding object files in ASDF's user cache.  In trying to figure 
out the correct mechanism to allow for "binary" ASDF distribution under 
ABCL that would include both the source and the fasls in the same jar 
file, I need to disable the jar file translation mechanism.

I expected that invoking DISABLE-OUTPUT-TRANSLATIONS would clear this 
built-in translation mechanism, but it doesn't seem to do this.   Only 
invoking CLEAR-OUTPUT-TRANSLATIONS seems to actually change the output 
translation map.  To wit:

ASDF> (disable-output-translations)
((T T) 
(#P"/Users/evenson/.cache/common-lisp/abcl-0.26.0-dev-fasl37-macosx-java/**/*.*" 
T) (#P"/___jar___file___root___/**/*.*" 
#P"/Users/evenson/.cache/common-lisp/abcl-0.26.0-dev-fasl37-macosx-java/**/*.*") 
(#P"jar:file:/**/*.jar!/**/*.*" #<FUNCTION TRANSLATE-JAR-PATHNAME 
{771931F8}>) (T 
#P"/Users/evenson/.cache/common-lisp/abcl-0.26.0-dev-fasl37-macosx-java/**/*.*"))
ASDF> (output-translations)
((#P"/Users/evenson/.cache/common-lisp/abcl-0.26.0-dev-fasl37-macosx-java/**/*.*" 
T) (#P"/___jar___file___root___/**/*.*" 
#P"/Users/evenson/.cache/common-lisp/abcl-0.26.0-dev-fasl37-macosx-java/**/*.*") 
(#P"jar:file:/**/*.jar!/**/*.*" #<FUNCTION TRANSLATE-JAR-PATHNAME 
{771931F8}>) (T T) (T 
#P"/Users/evenson/.cache/common-lisp/abcl-0.26.0-dev-fasl37-macosx-java/**/*.*"))
ASDF> (disable-output-translations)
((T T) 
(#P"/Users/evenson/.cache/common-lisp/abcl-0.26.0-dev-fasl37-macosx-java/**/*.*" 
T) (#P"/___jar___file___root___/**/*.*" 
#P"/Users/evenson/.cache/common-lisp/abcl-0.26.0-dev-fasl37-macosx-java/**/*.*") 
(#P"jar:file:/**/*.jar!/**/*.*" #<FUNCTION TRANSLATE-JAR-PATHNAME 
{771931F8}>) (T 
#P"/Users/evenson/.cache/common-lisp/abcl-0.26.0-dev-fasl37-macosx-java/**/*.*"))
ASDF> (output-translations)
((#P"/Users/evenson/.cache/common-lisp/abcl-0.26.0-dev-fasl37-macosx-java/**/*.*" 
T) (#P"/___jar___file___root___/**/*.*" 
#P"/Users/evenson/.cache/common-lisp/abcl-0.26.0-dev-fasl37-macosx-java/**/*.*") 
(#P"jar:file:/**/*.jar!/**/*.*" #<FUNCTION TRANSLATE-JAR-PATHNAME 
{771931F8}>) (T T) (T 
#P"/Users/evenson/.cache/common-lisp/abcl-0.26.0-dev-fasl37-macosx-java/**/*.*"))
ASDF> (clear-output-translations)
; No value
ASDF> (output-translations)
NIL
ASDF>

Should DISABLE-OUTPUT-TRANSLATIONS actually push that (T T) list into 
the beginning of that (OUTPUT-TRANSLATION) list or does the API expect 
that the user use it something like

ASDF> (setf (output-translations) (disable-output-translations))

Should ASDF under ABCL strip out the jar translation mechanism as well, 
or should the ASDF API expect that the user would actual issue a 
(CLEAR-OUTPUT-TRANSLATIONS)?  I confess that I am a bit confused when 
one would ever use DISABLE-OUTPUT-TRANSLATIONS as opposed to 
CLEAR-OUTPUT-TRANSLATIONS.

Once I understand the ASDF API here a bit better, I will work on the 
necessary ABCL specific ASDF patches if necessary.

-- 
"A screaming comes across the sky.  It has happened before, but there
is nothing to compare to it now."





More information about the asdf-devel mailing list