Dear Sam,
in a first approximation, you could use something like:
(defun all-steps-for-system (system) (asdf::traverse (make-instance 'asdf:load-op :force t) (asdf:find-system system)))
Then you could find all the files produced in order with:
(defun all-files-for-system (system) (loop :for (operation . component) :in (all-steps-for-system system) :for output-files = (asdf:output-files operation component) :append output-files))
Problem A: there might be more than fasls amongst files produced, e.g. object files produced by cffi-grovel.
Problem B: files and systems loaded outside of the asdf dependency mechanism proper are untracked. These include systems loaded from .asd files directly, either by an explicit (asdf:load-system ...) or by a :defsystem-depends-on declaration. Some systems rely on that, e.g. iolib when it depends on cffi-grovel. Solving this problem will require modifying ASDF to basically trace load-system. OR we could modify the loading so as to track which components were needed
XCVB solves these problems - actually xcvb-master works exactly that way. However, I haven't done the hard work to support linking .o files into single image deliverables, since it's a portability hell.
PS: thanks a whole lot for including ASDF in CLISP and keeping it up to date!
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] Brain, n.: The apparatus with which we think that we think. — Ambrose Bierce, "The Devil's Dictionary"
On 29 December 2010 03:31, Sam Steingold sds@gnu.org wrote:
Hi, How do I distribute an application built using asdf? Specifically, given file foo.lisp, I need the list of all the fasl files of all the files on which foo.lisp depends (+ foo.fasl) in the correct order of loading. Thanks! -- Sam Steingold (http://sds.podval.org/) on Ubuntu 10.04 (lucid) http://iris.org.il http://ffii.org http://memri.org http://jihadwatch.org http://palestinefacts.org http://openvotingconsortium.org I'd give my right arm to be ambidextrous.