In ASDF 2.26.8, I fixed long-standing bug lp#479522 "wanted: recompile
system when dependency changes".
https://bugs.launchpad.net/asdf/+bug/479522
It was this left-over from ASDF 1, whereby if a system A is modified,
it is recompiled, but this does not cause the recompilation of a
system B that depends-on A.
Back in the dark days of ASDF 1, when computers were slow and
compilation was at a premium, this was considered a "feature" by some,
though a bug by many more. Bug-compatibility made us preserve this
dubious behavior into ASDF 2.
Since ASDF 2.21, the :FORCE-NOT feature of OPERATE allows you to avoid
compilation of whichever systems you specify, so you don't need to
rely on bugs of the implementation to achieve your desired effect.
The bug is now fixed. If you were relying on it, please use :FORCE-NOT instead.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Wishing without work is like fishing without bait.
I haven't heard any objection to my plan of merging asdf-bundle into
asdf, but I have not any actively supporting mention either — just the
fact that it will moderately enhance the lives of Quicklisp, ECL and
MKCL maintainers. I'm leaving you a few more days to send me feedback
before I actually do it.
In the meantime, I added a precompiled-system feature to asdf-bundle.
You can distribute a library as fasl-only, by first (1) compiling it
with fasl-op on your build image:
(asdf:operate 'asdf::fasl-op :my-library)
Then copying the output file (first (asdf:output-files (make-instance
'asdf::fasl-op) (asdf:find-system :my-library))
to some destination of your choice.
(2) in your user's image, have a .asd that looks like that, or better,
evaluate the form as part of your initialization, without the need for
a .asd:
(defsystem :my-library :class :precompiled-system :fasl
#p"/path/to/my-library.system.fasl")
The fasl argument can be a logical pathname or an expression that will
be evaluated later.
This way, user libraries can use defsystem :depends-on and find the
library whether its source is present or whether a .fasl was made
available.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
We are always in anarchy. But we pay a hefty price maintaining the illusion
that we aren't, and another one being misled by the illusion.
On Thu, Nov 29, 2012 at 9:50 PM, Faré <fahree(a)gmail.com> wrote:
> On Thu, Nov 29, 2012 at 11:18 AM, Juan Jose Garcia-Ripoll
> <juanjose.garciaripoll(a)gmail.com> wrote:
>> On Thu, Nov 29, 2012 at 2:41 PM, Faré <fahree(a)gmail.com> wrote:
>>>
>>> Now, do we want to distribute asdf-bundle.lisp as a separate system
>>> asdf-bundle.asd?
>>> Do we want to distribute it as part of asdf.asd the way we used to do
>>> asdf-ecl.lisp?
>>> Do we want to just add its contents to asdf.lisp, a growth of a bit over
>>> 10% in size,
>>> for additional functionality on many platforms and much less headaches on
>>> ECL?
>>
>> ECL will pledge to whatever means of distribution you choose. Just keep me
>> informed.
>>
> After carefully considering the headache for users of Quicklisp and ECL,
> and the fact that asdf-bundle now supports load-fasl-op
> for all actively maintained implementations,
> except ABCL which has its own thing,
> I've decided that it's probably best to fold asdf-bundle into ASDF.
> (Note that I haven't tested the SCL, LispWorks or MKCL ports, and
> that the LispWorks port I just threw together probably needs some love).
>
> The only objection I can imagine is file size,
> but somehow, I fear we're past the point of being able to complain.
> I fully assume the creeping featuritis since ASDF 1.
> wc stats are as follows:
> 4534 19011 200127 asdf.lisp
> 597 2138 21861 asdf-bundle.lisp
> 5131 21149 221988 total
> So the increase is a bit under 11% increase in character file size.
>
> I'll give a few days for people to issue objections,
> and if none is raised, I'll go ahead with the merge some time next week,
> after hopefully testing on more implementations.
> Hopefully, I will add some tests to the ASDF test suite.
Hello Faré,
Here is a pair of tiny patches to update ASDF 2.26.5 for MKCL 1.1.2 (coming
out RSN).
The first one is against asdf itself. The second against asdf-bundle.
Cheers,
Jean-Claude