[asdf-devel] ASDF 2.0 requirements : simplify the output locations mechanism

james anderson james.anderson at setf.de
Wed Apr 21 09:50:38 UTC 2010


On 2010-04-21, at 10:56 , Juan Jose Garcia-Ripoll wrote:

> On Wed, Apr 21, 2010 at 10:31 AM, james anderson  
> <james.anderson at setf.de> wrote:
> the patch which was enclosed in the earlier message[2] demonstrated
> an implementation which modifies the three functions - component-
> pathname, input-files, and output-files, extends the function which
> constructs the component absolute pathname, and adds a function to
> map between logical and physical pathname components. [...]
> we can discuss the general utility of logical pathnames at length, at
> your leisure. elsewhere. my enquiry concerns whether logical pathname
> translations would serve as a more compact implementation mechanism
> for asdf output translations than the present method.
>
> >
> > And even then you'll have a hard time fixing things that users
> > can now trivially do with the following translation:
> >
> > (:root ("C:/my/cl/cache" :implementation))
> >
> > This will work and make his file in
> >   \\remote-host\myshare\cl\cl-foo\foo-V2.000\bar_baz.lisp
> > be compiled as obvious from the spec into
> >   C:\my\cl\cache\sbcl-1.0.38-windows-x86\remote-host\myshare\cl\cl-
> > foo\foo-V2.000\bar_baz.fasl
>
> this would appear to be the equivalent of a translation on the  
> order of
>
>  `("**;*.*.* ,(concatenate 'string "C:/my/cl/cache/"
>                                    (asdf::implementation-identifier)
>                                    "/**/*.*.*"))
>
> Let's try to clarify the discussion.
>
> * Fare insists on the validity of the current pathname translation  
> mechanism, which allows the user to specify the destination of  
> compiled files using physical pathnames and some configuration file  
> or S-expr. If the user knows where the original file lived, he can  
> find where the compiled file lives easily -- one to one mapping, no  
> ambiguity, no names changes except mapping everything to a new tree.
>
> * James is claiming that this can be implemented using _internally_  
> logical pathnames with a logical pathname tree structure that is  
> constructed from the component names and not from the physical  
> location of the files they represent. This would be complemented  
> with a function to obtain the actual location of compiled files  
> given the component object. The configuration can be mapped to this  
> structure and the overall implementation would then be smaller.

in principle, yes. in detail, there is no need to construct a global  
structure as the computation can proceed locally.

>
> I see shortcomings on both sides
>
> - Code size
> - A bunch of people already using asdf-binary-locations out there  
> (which is what was merged in)

which one should be able to continue to support in any case.

> - James' implementation only seems to allow one file per component  
> and it does not seem to take into account when OUTPUT-FILES returns  
> more than one file.

to quote from the original post.

> further experiments demonstrated that - with changes to the scripts
> to account for functions which would be removed, all regression tests
> pass, and that with appropriate initialization, a multi-runtime build
> is supported for the normal abcl/acl/ccl/clisp/cmucl/ecl/lw/sbcl
> complement.

that is, the multi-runtime build included ecl. for which the  
expression of the functional requirements was the conditionalization  
in the output-files method. if that is the extent of the requirement,  
then ecl is taken into account.


> - In James's model the interrogation: where does the compiled file  
> associated to "file1.lsp" does not make sense without traversing  
> the ASDF system and locating that file and its associated component.

if the intended question was: "does the compiled file associated with  
'file1.lsp' make sense without traversing the ASDF system?"

yes and no.
yes, in that the output - and _input_ - location translations are  
computed with respect to the respective component only.
no, in that system instantiation protocol includes a step which  
(effectively) walks the model to compute a location for each  
component. as i noted in the original message, this makes it a lot  
easier to understand a component pathname computation, but is  
independent of any translation mechanism. in addition, it is no  
longer even unique to the lp-based location translation  
implementation. as the step was already introduced in 1.676.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20100421/969d1679/attachment.html>


More information about the asdf-devel mailing list