Hello Robert,

Your description of what we are trying to accomplish is accurate.  In short, we 
aim to:

    - Use existing binaries when they are installed as OS packages.
    - Allow things to work as expected when those binaries are not installed, 
i.e., write binaries to the user's cache.

Your suggestion to write configuration files along with the packages to control 
output translation seems like a good approach.  That is, when a user installs 
the cl-alexandria-sbcl package, we could write 
${PREFIX}/etc/common-lisp/asdf-output-translations.conf.d/10-cl-alexandria-sbcl.conf.
  Without that package installed, I believe the default behaviour - writing to 
the user's cache - works.  I'm working on implementing this approach but have 
encountered hurdles:

1. Custom Configuration Directory

Our packages should only write under ${PREIX} (typically /usr/local/).  Is it 
possible to tell ASDF to read from 
/usr/local/etc/common-lisp/asdf-output-translations.conf.d instead of 
/etc/common-lisp/asdf-output-translations.conf.d?  Ideally, we could do this 
from our asdf-init.lisp.  I notice that #:system-output-translations-pathname 
is exported.  Could it be used for this purpose?

2. Configuration Error

I manually created a test configuration file at 
/etc/common-lisp/asdf-output-translations.conf.d/10-asdf-sbcl.conf, with this 
DSL:

% cat /etc/common-lisp/asdf-output-translations.conf.d/10-asdf-sbcl.conf
(:output-translations
 :inherit-configuration
 ("/usr/local/lib/common-lisp/asdf/**/" 
"/usr/local/lib/common-lisp/asdf/sbclfasl/**/"))

However, ASDF reports an error:

% sbcl
This is SBCL 2.4.10, 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.
;;; loading #P"/usr/local/lib/common-lisp/asdf/sbclfasl/build/asdf.fasl"
* (asdf:load-system :foo)

debugger invoked on a ASDF/OUTPUT-TRANSLATIONS:INVALID-OUTPUT-TRANSLATION in 
thread
#<THREAD tid=103125 "main thread" RUNNING {1103F50093}>:
  Invalid asdf output-translation
  (:OUTPUT-TRANSLATIONS :INHERIT-CONFIGURATION
   ("/usr/local/lib/common-lisp/asdf/**/"
    "/usr/local/lib/common-lisp/asdf/sbclfasl/**/"))
  in #P"/etc/common-lisp/asdf-output-translations.conf.d/10-asdf-sbcl.conf"
  (will be skipped)

Do you know what's wrong with this DSL?

3. Distinguishing Lisp Implementations

This approach will only work if we can distinguish the running Lisp 
implementation.  The manual mentions, "You may use #+features to customize the 
configuration file." Can we use something like #+sbcl in the .conf files to 
conditionally set up the output translations for SBCL?

Thank you for your time and insight.

Kind regards,
Joe

Attachment: signature.asc
Description: PGP signature

Reply via email to