On Thu, Jul 28, 2016 at 12:48 PM, Eric Timmons <etimm...@mit.edu> wrote: > I *really* like using package-inferred-system for defining systems, > but I often find it doesn't behave as I expect when performing > operations on it. I'm curious if these behaviors are intended or if > the implementation is just incomplete. > > I approach package-inferred-system as a way of automatically finding > dependencies between files and on third-party systems for a given > system I'm writing. Under the hood, I know it makes a new system for > every source file, but I consider that just an implementation detail > and that when I refer to the primary system, I really mean everything > that logically belongs to that system and not just the source files > declared in the system's :components option. (Perhaps this assumption > just needs to be adjusted on my end). > > The difference between expectation and reality often manifests itself > in two places for me: > > + When I'm trying to distribute my system with a non-monolithic > operation. E.g. `(asdf:perform 'asdf:concatenate-source-op > :some-package-inferred-system) results in only the files explicitly > declared in the system's :components option being concatenated. > (Similar things happen with compile-bundle-op). > > + `(asdf:load-system :some-package-inferred-system :force t)` results > in only the files explicitly declared in the system's :components > option being reloaded. > > I was planning to write my own system class to address these issues, > but figured I should see if this is even intended behavior before > doing that =). > Indeed, this suggests that plan classes and bundle operations should probably be able to accept a force / force-not argument (or the equivalent for bundle operations) intermediate between t and :all, such as :by-primary, that forces traversal or non-traversal based on the primary system name.
I'm not willing to write it, but I'm willing to review it if and when you do. This probably requires a patch to ASDF itself. Extra props to you if you find a nice extension protocol that allows to move most of that code outside of ASDF itself. —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Yesterday I was clever, so I wanted to change the world. Today I am wise, so I am changing myself. — Rumi (1207–1273)