Operations on package-inferred-system

Eric Timmons etimmons at mit.edu
Thu Jul 28 16:48:08 UTC 2016


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 =).

-Eric



More information about the asdf-devel mailing list