[asdf-devel] compile-with-nicknames

Gábor Balázs gabalz at gmail.com
Mon Oct 17 04:18:49 UTC 2011


Hm, I like the idea of having multiple classes for cl-source-file objects.
But I wouldn't do it through CLOS.
Just playing around, something like this might be able to provide
functionality to your problem.

(defsystem com.host.my-system
  (:serial t)
  (:depends-on ("system-1" "system-2")
  (:components ((:file "file1")
                (:file "file2" :class 1)
                (:file "file3" :class 2)
                (:file "file4" :class 1))
  (:before-compile 1 #'(lambda (component) (do what you want)))
  (:after-compile 1 #'(lambda (component) (do what you want)))))

And class 0 could be the (unspecified) default.
However, I would still prefer to have some kind of simplified notation for
the local package renaming functionality as I think that is the most common.
And I have no idea how difficult it is to put something like this into asdf
as I am not familiar with its code...

`bg`


2011/10/16 Faré <fahree at gmail.com>

> > I have my function, which does the described job for me too. The point
> here
> > is to offer this functionality in public on an easy, standard way.
> Agreed.
>
> > Personally, I like to have a single defsystem sexp in the asd file, so I
> > would prefer avoiding function definitions there.
> Same here. However, I would even more prefer having one generic mechanism
> for all these similar issues (wrapping bindings and environment-setup
> side-effects around compilation), rather than every time having to invent
> a new ad-hoc mechanism for each possible binding or side-effect that one
> might conceivably want:
>
>        locally renaming packages
>        binding *readtables* and other syntax-controlling variables
>        handling warnings and other conditions
>        proclaiming optimization settings
>        saving code coverage information
>        maintaining meta-data about compilation timings
>        resetting gensym counters, PRNG seeds, etc., for determinism
>        cheating the source-location and/or timestamping systems
>        checking that some cleanup function was properly called
>        etc.
>
> > However to do that nicely, asdf should be refactored in a way
> > described by Robert.
> Not necessarily.
> It is often important to wrap code around compilation, as shown above,
> but after writing XCVB, it seems to be that it isn't so useful
> to have wrappers around subtrees of the build, unless you can somehow
> save the information to files after a build, and merge it from saved
> files when you skip the incremental compilation of a file that hasn't
> been modified. In other words, all the information should be inside
> the FASL or a complement to said FASL. Otherwise, whatever information
> you use is just going to make your build less deterministic,
> and you'll end up always building from clean anyway, at which point
> you might as well use a load list instead of asdf.
>
> > But I think it would be still nice to offer this
> > (cheap) renaming functionality separately without some heavy syntax
> > (wrapping the whole defsystem into a function seems to be heavy for me).
> >
> A more interesting question would be:
> why not do that as originally intended,
> by defining a proper CLOS subclass of cl-source-file?
> If it isn't fully satisfactory, what would be,
> and what variant of CLOS would it take?
> (Say, would SHEEPLE make things nicer?)
>
> > it is fairly easy to implement into the current mainstream asdf version
> > it is easy to use, so CL library developers could easily eliminate the
> > :nicknames options from the package definitions and use this instead
> (they
> > should basically change only a few lines of code in the .asd and
> > package.lisp files)
> > unfortunately, it is not the most general solution, so the arbitrary
> > function wrapping would not be provided this way
> >
> > I feel the 2nd point very valuable, so I think it would worth doing...
> >
> —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics•
> http://fare.tunes.org
> Voting for liberty is like raping for virginity. — Jim Davidson
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20111016/6f87cacc/attachment.html>


More information about the asdf-devel mailing list