Edit: a much more clearer reply is in comp.lang.lisp.
jjgarcia wrote:I do not think 100% extensibility is ok, but people are building Makefiles and other flexible build systems out there and they are still able to build and install their C and C++ libraries without problems. Extensibility is not the problem, but the lack of verifiable rules.
jjgarcia wrote:Suppose at some point CFFI becomes powerful enough to drive the process of compiling and loading shared libraries.
Hmm i saw it as a 'linked todo graph', where different things to do are in done different files. Like a graph how things depend with functions(files) along the way that actually do it.
But i kindah missed that the files are actually objects from which these functions are to be created, not the functions themselves. And then each different function has it's own dependencies. Something like (dosomething-depends-on what file/system), (dosomething what file/system) with the things to do; 'what'; being :compile, :load, :compile-test, :test, or if it were cffi-driven :ecl-to-c :cffi-compile, :cffi-load, and various autodocs :doxygen-autodoc. Maybe even :benchmark-test. Perhaps one would want extensions like this to be able to choose them what to do if a dependency is missing aswel.
Edit: but with this extensibility, i expect it to be used. The basic load, compile and such should of course then also be in terms of the extensibility, in it's own little package.
I don't think regular projects which don't have their purpose to serve people something for asdf should do anything with extending. Infact, perhaps asdf should spy on *package*, and warn them if defsystem and extending is done from the same package, or it could put stuff in a package :asdf-extend.
You misread and i (moreso) miswrote my last paragraph. I meant 'reading' as-in accessors/reader methods. Just that there is a generic function: (defgeneric get-system-keyword (system keyword)..) Just getting the data behind keywords like :description etcetera.
Edit: having operation :test-op goes right against this idea, i think it would be better to allow stuff to have entries, and have something like :test (:components ..
:run-components ...) and then :compile-test, :load-test :do-test as operations. Tests can then fail with ERROR, ASSERT, WARN, and such, right? Not to say my way is the only way.. Edit: ok, you could see it as adding another way to add 'files', but it leads people in the direction of extending it, when they imo shouldn't be.