I'd really like to use :around-compile (for use with local-package-aliases), but I can't seem to combine it with package-inferred-system as the inferred systems don't inherit the around-compile slot from the top level system.
I'd happily supply a patch to enable it. But I'm not sure if it would make the most sense to just inherit around-compile from the top level system or add an additional initarg for the package-inferred-system class that gets passed to the inferred systems.
-Eric
On Mon, Nov 30, 2015 at 11:51 PM, Eric Timmons etimmons@mit.edu wrote:
I'd really like to use :around-compile (for use with local-package-aliases), but I can't seem to combine it with package-inferred-system as the inferred systems don't inherit the around-compile slot from the top level system.
I'd happily supply a patch to enable it. But I'm not sure if it would make the most sense to just inherit around-compile from the top level system or add an additional initarg for the package-inferred-system class that gets passed to the inferred systems.
Dear Eric,
I don't have strong feelings about this one. I obviously didn't think enough about it.
Yes, package-inferred-system's could inherit :around-compile from their primary system, and maybe other things, too.
Can you send a patch?
If you don't want to rely on a patch, you could use a subclass that does it all.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Quality means doing it right when no one is looking. — Henry Ford Morality means doing the right thing when no one is looking. — Jan Krepelka
Faré fahree@gmail.com writes:
Yes, package-inferred-system's could inherit :around-compile from their primary system, and maybe other things, too.
Can you send a patch?
Patch is attached. One deficiency is that if the parent's around-compile changes and the system is reloaded, the parent will recompile as expected but the inferred systems won't. The inferred systems see the change but they're not seen as being out of date. Not sure if that's worth worrying about/how to go about changing that.
I can definitely add inheritance of other things, but I'm not sure what makes the most sense. Maybe:
+ :homepage + :bug-tracker + :mailto + :source-control + :version
?
-Eric
On Tue, Dec 1, 2015 at 1:06 PM, Eric Timmons etimmons@mit.edu wrote:
Faré fahree@gmail.com writes:
Yes, package-inferred-system's could inherit :around-compile from their primary system, and maybe other things, too.
Can you send a patch?
Patch is attached.
Applied in 3.1.6.7.
One deficiency is that if the parent's around-compile changes and the system is reloaded, the parent will recompile as expected but the inferred systems won't. The inferred systems see the change but they're not seen as being out of date. Not sure if that's worth worrying about/how to go about changing that.
Yeah, getting proper incrementality from defsystem-depends-on and suches is a TODO item for a future major ASDF release. Doing it right requires introducing new kinds of nodes in the dependency graph for loading asd files, and rethinking how we track defsystem-depends-on dependencies as well as direct load-system statements in .asd files.
If you're willing to do it, I'll be glad to provide guidance and code review.
I'd also like to kill the current parse-defsystem code inherited from ASDF 1 to replace it by something that relies less on side-effects, but I'm not sure how to do it in a way that doesn't break backward compatibility with some hidden assumption that I don't know about. A quick mucking around with the code revealed too many strings to pull — though most of them related to the above defsystem-depends-on issue.
I can definitely add inheritance of other things, but I'm not sure what makes the most sense. Maybe:
- :homepage
- :bug-tracker
- :mailto
- :source-control
- :version
I'm not sure these make sense for a system that isn't the primary system. Maybe version is useful, so you can have version constraints on a secondary system without having to depend on the primary system, when the secondary system doesn't depend on the primary.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Long live consumership, which is individual and responsible choice! Down with citizenship, which is collective and irresponsible choice!