From: Robert G. <rpg...@re...> - 2007-02-14 01:55:58
|
Richard M Kreuter wrote: > Gary King <gw...@me...> writes: > >> Load-only source files seems to be a perennial ASDF request. The >> patch below purports to add load-only Common Lisp source files to >> ASDF. One can create a system file with them either by using the new >> class "interpreted-cl-source-file" or by using the keyword :load-only- >> p. For example, both of the files in the below would only be loaded, >> not compiled: >> >> (asdf:defsystem test5 >> :components >> ((:module "deps" >> :pathname "." >> :components >> ((:interpreted-cl-source-file "file1") >> (:file "file2" :load-only-p t))))) >> >> If no-one sees any problems with this, I'll commit it soon. > > Why have both a class and a slot? The lack of a writer suggests that > you don't expect the value to change once an instance is created; why > not have just the class? > > In fact, if you're willing to use just a class, I think you can > implement the functionality as an extension using asdf's protocols: > > (defclass load-only-cl-source-file (cl-source-file) > ()) > > (defmethod perform ((o compile-op) (c load-only-cl-source-file)) > nil) > > (defmethod output-files ((o compile-op) (c load-only-cl-source-file)) > nil) > > (defmethod input-files ((o load-op) (c load-only-cl-source-file)) > (list (component-pathname c))) > > I named the class "load-only-cl-source-file" because asdf doesn't > control whether an implementation's LOAD interprets or compiles the > file. I'm not certain that this implements everything necessary; it > does everything the documentation calls for except for adding method > to EXPLAIN, and does seem to work for a system with two files that > merely print output when compiled and loaded. > > I'm all for including features that people find useful in asdf.lisp > itself, however. > I was actually the one who asked for this --- I found myself adding this to a large number of systems. In particular to systems I was importing into ASDF. Some of those have macros, etc. that need loading only. A good example is my tester forms, built on Dick Waters' RT, where I have tests that check values against structures that are described using #S, which doesn't compile (at least on ACL). I figured once I put this kind of source file in about 8 systems that it was time to move it into asdf proper! ;-) |