LispWorks 6 support was broken since 3.1.6.1

Bug #1636007 reported by Chun Tian
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ASDF
Won't Fix
Wishlist
Faré

Bug Description

Hi ASDF maintainers,

I think LispWorks 6 support (I'm using 6.1 on Mac OS X) was broken since asdf-3.1.6.1, the exact Git commit that broke it is this one:

"""
SHA 3a9457a891697d590cefc7abfc435c73f8af4827
by Francois-Rene Rideau, 2015-11-18 PM10:02
parent 1050e5d9f75477e329f088756f7c2b151e2fea23

Move all code out of header.lisp
"""

I simply cannot load any ASDF systems after above Git commit, for example:

CL-USER 1 > (asdf:load-system :puri)

Error: Component :PURI not found
  1 (continue) Retry ASDF operation.
  2 Retry ASDF operation after resetting the configuration.
  3 (abort) Return to level 0.
  4 Restart top-level loop.

Type :b for backtrace or :c <option number> to proceed.
Type :bug-form "<subject>" for a bug report template or :? for other options.

CL-USER 2 : 1 > :b
Call to ERROR
Call to (METHOD ASDF/OPERATE:OPERATE (SYMBOL T))
Call to CLOS::NEXT-METHOD-CALL-3
Call to (SUBFUNCTION 2 (METHOD ASDF/OPERATE:OPERATE :AROUND (T T)))
Call to ASDF/CACHE:CALL-WITH-ASDF-CACHE
Call to (METHOD ASDF/OPERATE:OPERATE :AROUND (T T))
Call to (METHOD ASDF/OPERATE:OPERATE :AROUND (T T))
Call to ASDF/OPERATE:LOAD-SYSTEM
Call to EVAL

I don't understand the code changes and how it can break LispWorks 6.1, so I can't fix it by myself, but I hope you can fix this in ASDF head (and I'll provide whatever help that I can do for you).

Regards,

Chun Tian (binghe)

Tags: lispworks
Revision history for this message
Chun Tian (binghe.lisp) wrote :
Revision history for this message
Faré (fahree) wrote :

I do not have a license for LispWorks 6, so I cannot test it. The personal edition requires 32-bit libraries not available on Ubuntu x64 16.04.

ASDF works fine with LispWorks 7. What is the relevance of LispWorks 6?

If you want to fix it on LispWorks 6, you may have to do it yourself. Can you expand on this error? Is it a failure due to the source-registry not working?

Does the same configuration work on another implementation?

Revision history for this message
Chun Tian (binghe.lisp) wrote :
Download full text (8.1 KiB)

Hi Faré,

LispWorks 7 works fine on my side too. All other CL platforms work too. But LispWorks 6 (and all prior versions) doesn't work (not only on Mac OS X, but also on Linux).

Here is the differences:

* LispWorks 7 ships with ASDF 3.1.4 and Quicklisp directly uses it. On startup, it upgrades ASDF from 3.1.4 to 3.1.7.30 (current ASDF Git master version):

"Upgrading ASDF from version 3.1.4 to version 3.1.7.30"

* LispWorks 6 doesn't have ASDF shipped, thus Quicklisp load its own ASDF (version: 2.26) first, then my init script upgrade it to latest ASDF:

"; Renamed old ASDF package away to ASDF-2.26"

Here is my init scripts:

;;; The following lines added by ql:add-to-init-file:
#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname))))
  (when (probe-file quicklisp-init)
    (load quicklisp-init)))

(pushnew (merge-pathnames "Lisp/asdf/" (user-homedir-pathname)) asdf:*central-registry* :test #'equal)

(asdf:load-system :asdf)

As you can see, I first load Quicklisp, then use its ASDF to load latest ASDF.

Actually the real issue is related to Quicklisp: latest ASDF on LispWorks 6 can ONLY load those systems which has a directory that I manually put into asdf:*central-registry*. All other systems (managed by Quicklisp) just can't be found. It looks like Quicklisp doesn't exist at all.

Here is a full backtrace: (if you could give me a little hint, I'm glad to fix it by myself)

Condition: Component :PURI not found

Call to ERROR {offset 119}
  SYSTEM::ESTRING : ASDF/FIND-SYSTEM:MISSING-COMPONENT
  SYSTEM::EARGS : (:REQUIRES :PURI)

Call to (METHOD ASDF/OPERATE:OPERATE (SYMBOL T)) {offset 362}
  ASDF/OPERATION:OPERATION : ASDF/LISP-ACTION:LOAD-OP
  ASDF/COMPONENT:COMPONENT : :PURI
  #:REST1244637 : NIL
  DBG::|or-| : NIL

Binding frame:
  CLOS::*NEXT-METHODS* : NIL

Binding frame:
  CLOS::*NEXT-METHODS* : (#<Closure CLOS::METHOD-COMBINATION-TEMPLATE 423007DA74>)

Call to CLOS::NEXT-METHOD-CALL-3 {offset 154}
  CONS : (METHOD ASDF/OPERATE:OPERATE :AROUND (T T))
  CLOS::NEXT-METHODS : (#<Closure CLOS::METHOD-COMBINATION-TEMPLATE 423007DA74>)
  #:G196779 : ASDF/LISP-ACTION:LOAD-OP
  #:G196780 : :PURI
  #:G196781 : NIL

Binding frame:
  UIOP/LISP-BUILD:*COMPILE-FILE-FAILURE-BEHAVIOUR* : :WARN

Binding frame:
  UIOP/LISP-BUILD:*COMPILE-FILE-WARNINGS-BEHAVIOUR* : :WARN

Binding frame:
  ASDF/UPGRADE:*VERBOSE-OUT* : NIL

Binding frame:
  ASDF/OPERATE::*IN-OPERATE* : T

Call to (SUBFUNCTION 1 (METHOD ASDF/OPERATE:OPERATE :AROUND (T T))) {offset 660}
  ASDF/OPERATE::IN-OPERATE : T
  ASDF/OPERATE::*IN-OPERATE* {Special} : T
  ASDF/OPERATE::OPERATION-REMAKER : #<Closure 1 subfunction of SYSTEM::CONSTANTLY-AUX 4050003E54>
  ASDF/OPERATE::COMPONENT-PATH : :PURI
  ASDF/UPGRADE:*VERBOSE-OUT* {Special} : NIL
  UIOP/LISP-BUILD:*COMPILE-FILE-WARNINGS-BEHAVIOUR* {Special} : :WARN
  UIOP/LISP-BUILD:*COMPILE-FILE-FAILURE-BEHAVIOUR* {Special} : :WARN
  ASDF/COMPONENT:COMPONENT {Closed} ...

Read more...

Revision history for this message
Chun Tian (binghe.lisp) wrote :

OK, I found a workaround solution: setup Quicklisp again after upgrading ASDF:

;;; The following lines added by ql:add-to-init-file:
#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname))))
  (when (probe-file quicklisp-init)
    (load quicklisp-init)))

;;; bootstrap newer ASDF
(pushnew (merge-pathnames "Lisp/asdf/" (user-homedir-pathname)) asdf:*central-registry* :test #'equal)
(asdf:load-system :asdf)

;;; Setup Quicklisp again
#+lispworks6
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname))))
  (when (probe-file quicklisp-init)
    (load quicklisp-init)))

In this way, LispWorks 6 works for me now. It seems that, the "hook" that Quicklisp put into ASDF, has disappeared during ASDF upgrading process.

Revision history for this message
Faré (fahree) wrote :

OK, so the problem isn't that the upgrade isn't working, the problem is that the configuration is lost during upgrade from ASDF 2, which is a known issue that won't be fixed.

Solutions:
1- Use the script in asdf/tools/install-asdf.lisp to tell LispWorks 6 about a recent ASDF, or
2- In your initialization file and/or startup script, load a recent ASDF *before* you load Quicklisp, or
3- Complain loudly to Xach for providing a dysfunctional 4 year old obsolete version of ASDF with Quicklisp, explaining the aggravation that causes.

Changed in asdf:
assignee: nobody → Faré (fahree)
importance: Undecided → Wishlist
status: New → Won't Fix
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.