[asdf-devel] testing ASDF with cl-test-grid

Faré fahree at gmail.com
Fri Feb 22 22:30:15 UTC 2013


That smells like a bug in ECL.

This works:
rlwrap ecl -norc -eval \
"'(#.(require :asdf) #.(format t \"~S~%\" (asdf:asdf-version))
#.(asdf:load-system :sockets))"
"2.26.6"

This doesn't:
rlwrap ecl -norc -load asdf/build/asdf.lisp -eval "'(#.(require :asdf)
#.(format t \"~S~%\" (asdf:asdf-version)) #.(asdf:load-system
:sockets))"
"2.30.3"
No defined method for ASDF/ACTION:PERFORM on compiling #<compiled-file
"sockets" "sockets">.

If I just query from
rlwrap /home/testgrid/lisps/ecl-bin-12.12.1/bin/ecl -norc -load
asdf/build/asdf.lisp

I get:

(COMPUTE-APPLICABLE-METHODS #'asdf:perform (list (make-instance 'asdf:compile-op
 :force t) (asdf:find-component :sockets "sockets")))

(#<standard-method PERFORM (#<The STANDARD-CLASS ASDF/OPERATION:OPERATION>
                            #<The STANDARD-CLASS ASDF/COMPONENT:COMPONENT>)>
 #<standard-method PERFORM (#<The STANDARD-CLASS ASDF/OPERATION:OPERATION>
                            #<The STANDARD-CLASS ASDF/COMPONENT:COMPONENT>)>
 #<standard-method PERFORM (#<The STANDARD-CLASS ASDF/OPERATION:OPERATION>
                            #<The BUILT-IN-CLASS T>)>
 #<standard-method PERFORM (#<The BUILT-IN-CLASS T>
                            #<The STANDARD-CLASS ASDF/BUNDLE:COMPILED-FILE>)>)

(describe (car (last (COMPUTE-APPLICABLE-METHODS #'asdf:perform (list
(make-instance 'asdf:compile-op :force t) (asdf:find-component
:sockets "sockets"))))))

#<standard-method PERFORM (#<The BUILT-IN-CLASS T> #<The
STANDARD-CLASS ASDF/BUNDLE:COMPILED-FILE>)> is an instance of class
STANDARD-METHOD
it has the following instance slots
THE-GENERIC-FUNCTION:   #<standard-generic-function ASDF/ACTION:PERFORM>
LAMBDA-LIST:            (O C)
SPECIALIZERS:           (#<The BUILT-IN-CLASS T> #<The STANDARD-CLASS
ASDF/BUNDLE:COMPILED-FILE>)
QUALIFIERS:             NIL
THE-FUNCTION:           #<compiled-closure 09de3510>
DOCSTRING:              NIL
PLIST:                  NIL
KEYWORDS:               NIL

(asdf:perform (make-instance 'asdf:compile-op :force t)
(asdf:find-component :sockets "sockets"))

Condition of type: SIMPLE-ERROR
No defined method for ASDF/ACTION:PERFORM on compiling #<compiled-file
"sockets" "
sockets">

The method that ought to match is this:
  (defmethod perform (o (c compiled-file))
    (declare (ignorable o c))
    nil))
Interestingly, that part of the code hasn't changed since ASDF 2.26.6,
which works as seen above. However, if I change it to:
  (defmethod perform ((o operation) (c compiled-file))
    (declare (ignorable o c))
    nil))
then it works again! And so that is my workaround for 2.30.5.

I don't know what causes ECL to not match that method.
Is it the new EVAL-WHEN around it? In any case, I believe it's a bug in ECL.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
If six billion people have both more food and more forest than their three
billion parents did; if the prices of copper, wheat and natural gas are going
down, not up; if there are 20 times more carcinogens in three cups of organic
coffee than in daily dietary exposure to the worst pesticide both before and
after the DDT ban; if renewable resources such as whales are more easily
exhausted than non-renewables such as coal; if lower infant mortality leads
to falling populations, not rising ones, then perhaps we need to think
differently about what sustainability means. Perhaps the most sustainable
thing we can do is develop new technology, increase trade and spread affluence.
	— Matt Ridley


On Fri, Feb 22, 2013 at 2:07 PM, Anton Vodonosov <avodonosov at yandex.ru> wrote:
>
>
> 22.02.2013, 22:38, "Anton Vodonosov" <avodonosov at yandex.ru>:
>> Results for ECL, lisp-to-c compiler:
>> http://common-lisp.net/project/cl-test-grid/asdf/asdf-diff-16.html
>>
>> Most of the systems fails with the same error:
>> Unhandled SERIOUS-CONDITION of type SIMPLE-ERROR is signaled: No defined method for ASDF/ACTION:PERFORM on compiling #<compiled-file "sockets" "sockets">
>
> The problem nails down to usocket.asd depending on :sb-bsd-sockets. It ma be reroduced
> lik this:
>
> lisps/ecl-bin-12.12.1/bin/ecl -norc -load asdf/build/asdf.lisp
> (asdf:operate 'asdf:load-op :sb-bsd-sockets)
>
> Condition of type: SIMPLE-ERROR
> No defined method for ASDF/ACTION:PERFORM on compiling #<compiled-file "sockets" "sockets">
>
> Available restarts:
>
> 1. (RETRY) Retry compiling #<compiled-file "sockets" "sockets">.
> 2. (ACCEPT) Continue, treating compiling #<compiled-file "sockets" "sockets"> as having been successful.
> 3. (RESTART-TOPLEVEL) Go back to Top-Level REPL.
>
> Broken at LAMBDA. In: #<process TOP-LEVEL>.
>  File: #P"/home/testgrid/asdf/build/asdf.lisp" (Position #306038)
>




More information about the asdf-devel mailing list