@gugamilare first paragraph of the link, methods are a problem. If the dependency file depends on more things than the dependency system, it is broken. Further, defining functions in the file determining the dependencies conflates extending the dependency capabilities and just adding a system. If you want to extend it do it from a separate system, figure out what extra optional information is to be available.
Tbh I don't like 'tricky loading', but i guess one could add a :run-file-before-compile or something. Same for testing, just add an attachment system :test, and then :run (Of course, it must be made official that it is to work this way.
Code: Select all
(def-system :system-with-test (:depends-on a b c) (:test (:depends-on d) (:run-file "file-to-run-test.lisp")))
gugamilare wrote:You can also state which kind is your file, separating Lisp source from, e.g., C source, documentation, text files, license...
Well, what i have written so far has something like a file-hook, what i have written ontop of that currently does it with the file extension, i can imagine that people want to specify the type from the file, though. I guess that can be added, perhaps a :file-type in a system will make files from that system of that type and the value of it to be passed into the file-hook. Extensions can then work via the file-hook.
gugamilare wrote:I believe that currently the biggest problem with asdf is not to support that lame OS that don't use symbolic links. That and asdf-install, which you can substitute with clbuild or something else.
Is it really that much of a problem? Can't you just manually add all the systems you want into asdf:*central-registry*? I started doing it that way in linux, found making all the damn symlinks too much fuss.
@Suroy, i am speaking mostly of the format right now, not really implementation. You are right though. Another thing that would be nice is to have extensions that can check that it lists the direct dependencies, and nothing less(more). If system A directly depends on B and C, fails to indicate that it depends on C, and B depends on C, that will work, because B loads C for A. But if a next version of B stops relying on C, the dependency specification of A breaks.