James Amundson <amundson@users.sourceforge.net> writes: > On Tue, 2003-09-30 at 10:52, Christophe Rhodes wrote: > >> > This is from a patch Christophe Rhodes submitted some time ago. So it >> > seems that loading Maxima as an ASDF system would also be an option. > >> It would be nice. I spoke to Jim a little about this kind of thing at >> the LSM back in the summer. > > I chose defsystem for maxima purely because it looked like the most > popular lisp system-definition tool. I won't claim that the research I > did on the subject was very sophisticated. If someone were to present a > compelling reason to switch our build system to asdf, I would certainly > listen. Well, there are two issues here: (1) what options are supported for end-users and (2) what developers usually do; the interplay between these leads to maintainability tensions. >> The reason I generated an asdf system description for maxima was that >> it allowed me to investigate full compile-warnings without drowning in >> the compilation noise: there is an option that I use in asdf to stop >> the compilation (and provide suitable restarts) if compile-file >> returns a failure code. > > I don't think I realized that. The current compilation noise is > certainly sufficient to cause drowning. This feature only really works in sbcl currently, because sbcl is the only one that takes sufficient care over the two subsidiary return values from COMPILE-FILE: the warningsp and failurep. The idea behind sbcl's treatment is that FAILUREP is meant to be set only when there is an "unintentional" run-time error; type impossibility is the obvious one, but also e.g. format string/argument count mismatch, multiple definitions of a function in the same file, and the like. Questions of style or code that is in some sense "questionable" sets warningsp; mostly the compiler is right, but sometimes it just needs to be ignored. Optimization notes set neither warningsp nor failure. Thus, when debugging a large legacy system, I start off by compiling it with asdf set to stop when compile-file returns a true FAILUREP; this generally throws up some problems. Once all of the issues identified by that are done, it can be worth investigating the style-warnings (and asdf can be set up to stop when a true WARNINGSP is returned, though it isn't by default). > I also didn't realize you already had a maxima.asd. Where is it? Did I > miss it in a message somewhere? I'm not sure that I ever attached it; in case not, here it is. It built for me on sbcl 0.8.3.95 a couple of days ago, with a few hard stops: there are still a couple of places in the maxima code that sbcl's compiler can prove are type errors; these places are not covered by the test suite, as far as I could tell. As I say, it may be that you want for the sake of maintainability to have a "common" defsystem which abstracts the differences between asdf and defsystem. I hope that helps, Cheers, Christophe -- http://www-jcsu.jesus.cam.ac.uk/~csr21/ +44 1223 510 299/+44 7729 383 757 (set-pprint-dispatch 'number (lambda (s o) (declare (special b)) (format s b))) (defvar b "~&Just another Lisp hacker~%") (pprint #36rJesusCollegeCambridge)
Attached file: maxima.asd