On Sun, Oct 28, 2012 at 1:51 AM, Faré <fahree@gmail.com> wrote:
This particular example looks like it works for me on
ecl-12.7.1-52ca46e0-linux-x64.
So does replacing the (require :asdf) by loading 2.25.4. On the other hand,
(asdf:upgrade-asdf) from the builtin 2.017.5 miserably segfaults :-(

The version released with that ECL is too old. Recent git sources ship with the latest ASDF and asdf-bundle (well, perhaps a few days off if I missed some announcement)

If you load 2.25.4 on that release, it will not use the prebuilt asdf but rather just load the *.fas files, which misses totally the point: prebuilt components do not work.

If you want to reproduce the error and see how component-relative-pathname fails to produce the right output, use this

(ext::install-bytecodes-compiler)
(setf *load-verbose* t)
(progn
 (load "~/devel/ecl/contrib/asdf/asdf.lisp" :verbose t)
 (load "~/devel/ecl/contrib/asdf/specials.lisp" :verbose t)
 (load "~/devel/ecl/contrib/asdf/bundle.lisp" :verbose t)
 (load "~/devel/ecl/contrib/asdf/ecl.lisp" :verbose t))
(trace asdf::component-relative-pathname)
(load "~/quicklisp/setup")

The definition of component-relative-pathname wraps around the slot value, totally ignoring the value of the pathname type

(defmethod component-relative-pathname ((component component))
  (coerce-pathname
   (or (slot-value component 'relative-pathname)
       (component-name component))
   :type (source-file-type component (component-system component))
   :defaults (component-parent-pathname component)))

Thus the screwed output:

1> (COMPONENT-RELATIVE-PATHNAME #<compiled-file "sockets" "sockets">)
<1 (COMPONENT-RELATIVE-PATHNAME #P"SYS:SOCKETS.FASC")
1> (COMPONENT-RELATIVE-PATHNAME #<compiled-file "sockets" "sockets">)
<1 (COMPONENT-RELATIVE-PATHNAME #P"SYS:SOCKETS.FASC")

Juanjo

--
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain) 
http://juanjose.garciaripoll.googlepages.com