Dave Cooper wrote:
Hi,
What is the intended purpose of the :static-files component-type in ASDF? I see a couple examples of their use in the ASDF manual, but didn't see an explanation or real example of how to use them downstream from including them in the defsystem form in the .asd file.
Presumably they can be used for README, license, example files, and other resources which go with a system but are not Lisp source files to be compiled and loaded with the system.
If so, then what are the supported/expected operations with static-files? For example, is there a way to query a system for files of type :static-file, so that you can do something with them (e.g. copy them to a distribution directory)?
You are right that the intended purpose of static-files is to support system introspection and human readers.
I have also used them for web content in lisp-powered web applications.
Yes, you can query for all the static files:
CL-USER> (remove-if-not #'(lambda (x) (typep x 'asdf:static-file)) (asdf:component-children (asdf:find-system "alexandria"))) (#<ASDF/COMPONENT:STATIC-FILE "alexandria" "LICENCE"> #<ASDF/COMPONENT:STATIC-FILE "alexandria" "tests.lisp">) CL-USER>
Cheers, r