On Mon, Feb 17, 2014 at 8:47 PM, Anton Vodonosov avodonosov@yandex.ru wrote:
I've been testing ASDF 3.1.0.66 and unfortunately detected errors:
TL;DR: All fixed in 3.1.0.67.
Thanks a whole lot for your testing, once again!
- Required method PERFORM not implemented for operation #<STANDARD-CLASS CFFI-GROVEL::PROCESS-OP {599AF195}>, component #<STANDARD-CLASS ASDF/LISP-ACTION:CL-SOURCE-FILE {582A1E35}>
Aha! Back in ASDF 2.28.x (while ASDF 3 was in beta), I made PERFORM error out by default, instead of NOP out like before. This was good, because operations were not propagated anymore into nonsensical combinations, so this would give good error messages to detect which needed PERFORM methods were missing, or which nonsensical actions were generated in the plan. Now that we reinstated the legacy propagation of operations that are not either explicitly propagated or not propagated, such nonsensical actions are generated again, and the proper default should be to NOP again in this case, not error out. Happily, when instantiating the operation itself, there will be a warning regarding this backward compatible behavior. As usual "if it's not backwards, it's not compatible".
Fixed, with test case.
New ASDF breaks ECL for Quicklisp. The problem nails down to (require 'sockets). This form works for ECL unless new ASDF is loaded.
To reproduce at cl-test-grid.cloud.efficito.com machine:
rlwrap ~/lisps/ecl-bin-13.5.1/bin/ecl -norc (require 'sockets)
;;; Loading #P"/home/testgrid/lisps/ecl-bin-13.5.1/lib/ecl-13.5.1/sockets.fas" => ("SB-BSD-SOCKETS" "SOCKETS")
------ compare with:
rlwrap ~/lisps/ecl-bin-13.5.1/bin/ecl -norc -load ~/asdf/build/asdf.lisp (require 'sockets)
ASDF could not load sockets because In function MAPCAR, the value of the second argument is #P"SYS:SOCKETS.FAS" which is not of the expected type LIST.
I'm not sure how this ever worked, if it did. The input-files method was all wrong, ever since a refactoring that happened in the 2.26.x days, after merging asdf-bundle into ASDF. I suppose it was previously overridden by a generic method that returned NIL, that I removed recently in a cleanup.
Fixed. I didn't try hard to add a refined test, but I did add a (require 'sockets) to test-bundle.script, which at least would have caught this regression.
NB: the latest ECL fails test-program.script, but I believe it's a bug in ECL.
PS: if you have time for a test with ASDF-USER :use'ing :UIOP...
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Calling a Communist a liar is pretty frustrating. How do you insult a pig by calling it a pig? Communists are not bound by our morality. They say that any crime, including lying, is moral if it advances the cause of socialism. — Ronald Reagan