The make function description in the documentation is not described well. It seems to imply that there is a default operation for each system that the system developer can specify somehow, without saying how. I see that there's a FIXME suggesting that we need to document the BUILD-OPERATION option for DEFSYSTEM.
It would be nice to have an example that shows how MAKE is intended to be used. Not a super-detailed example, just a quickie to show that this is not a feature in search of a use....
Anyone used this?
thanks, r
On Sat, Jan 30, 2016 at 6:59 PM, Robert Goldman rpgoldman@sift.net wrote:
The make function description in the documentation is not described well. It seems to imply that there is a default operation for each system that the system developer can specify somehow, without saying how. I see that there's a FIXME suggesting that we need to document the BUILD-OPERATION option for DEFSYSTEM.
It would be nice to have an example that shows how MAKE is intended to be used. Not a super-detailed example, just a quickie to show that this is not a feature in search of a use....
Anyone used this?
The idea is that some systems (primary or particularly secondary systems) can have a default operation specified by :build-operation that isn't load-op.
Thus you can declare make targets for creating executables, printing documentation, etc.
Admittedly, you could do the same with fake secondary systems that have an :in-order-to ((load-op (,build-operation ,real-target))). But I figured it would be nicer to have a more direct solution.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org [...] there is what I call the "roundtrip fallacy": it is a mistake to use, as journalists and some economists do, statistics without logic but the reverse does not hold: It is not a mistake to use logic without statistics. — Nassim Nicholas Taleb, Fooled by Randomness, 2004.
On 1/30/16 Jan 30 -6:22 PM, Faré wrote:
On Sat, Jan 30, 2016 at 6:59 PM, Robert Goldman rpgoldman@sift.net wrote:
The make function description in the documentation is not described well. It seems to imply that there is a default operation for each system that the system developer can specify somehow, without saying how. I see that there's a FIXME suggesting that we need to document the BUILD-OPERATION option for DEFSYSTEM.
It would be nice to have an example that shows how MAKE is intended to be used. Not a super-detailed example, just a quickie to show that this is not a feature in search of a use....
Anyone used this?
The idea is that some systems (primary or particularly secondary systems) can have a default operation specified by :build-operation that isn't load-op.
Thus you can declare make targets for creating executables, printing documentation, etc.
Admittedly, you could do the same with fake secondary systems that have an :in-order-to ((load-op (,build-operation ,real-target))). But I figured it would be nicer to have a more direct solution.
I have pushed a modification for BUILD-OPERATION, but I don't know what to do about BUILD-PATHNAME:
1. Lots of operations don't /have/ an output pathname. 2. How is this build-pathname to be specified? 3. How does it interact with the build cache?
I see two "big picture" problems with BUILD-PATHNAME:
1. The ASDF operations could have arbitrary tailoring that they need. It seems like it would be better to put in a way of making an operation instance, with added slot fillers if that's what you want. Why give preference to BUILD-PATHNAME?
2. BUILD-PATHNAME seems to violate your own guidelines for ASDF division of labor. How does the system developer know where the user wants the system's output dumped?
Since MAKE seems largely unused, I'm flagging it as experimental and "use at your own risk." An interesting idea, but right now more a tool in search of a user than a tool that users are looking for. Probably partly because we don't yet have a lot of alternative operations
Cheers, r