Commit 1a241a5c authored by Francois-Rene Rideau's avatar Francois-Rene Rideau

Fix issue upgrading from 3.1.7 or earlier

To reproduce the bug, on sbcl, allegro, cmucl (and presumably all other
implementations?) try:

ASDF_UPGRADE_TEST_TAGS=3.1.7 \
ASDF_UPGRADE_TEST_METHODS="'load-asdf-lisp'compile-load-asdf-upgrade" \
make u l=sbcl ; \
make t l=sbcl t=test-utilities.script

TEST ABORTED: These two expressions fail comparison with EQUAL:
 NIL evaluates to NIL
 (FISHY-ASDF-EXPORTED-SYMBOLS) evaluates to
 (("ASDF/INTERFACE" "REQUIRED-COMPONENTS")
  ("ASDF/PLAN" "TRAVERSE-SUB-ACTIONS" "REQUIRED-COMPONENTS" "TRAVERSE-ACTIONS"))

After loading the FASL compiled from 3.1.7 (or earlier ASDF3),
the symbols are unexported in their old package ASDF/ACTION,
and the same-named symbols in ASDF/PLAN (and ASDF/INTERFACE)
are fresh symbols that are not fbound.

The solution is for ASDF/ACTION to :UNINTERN those symbols.
ASDF/PLAN cannot include ASDF/ACTION in its :RECYCLE clause,
because it comes *after* ASDF/ACTION, and that would negatively affect
other symbols from ASDF/ACTION that ASDF/PLAN imports (at least on CCL).
parent f66917e8
......@@ -7,6 +7,7 @@
(:use :uiop/common-lisp :uiop :asdf/upgrade
:asdf/component :asdf/system #:asdf/cache :asdf/find-system :asdf/find-component :asdf/operation)
(:import-from :asdf/operation #:check-operation-constructor)
#-clisp (:unintern #:required-components #:traverse-action #:traverse-sub-actions)
(:export
#:action #:define-convenience-action-methods
#:action-description
......
......@@ -2,6 +2,8 @@
;;;; Plan
(uiop/package:define-package :asdf/plan
;; asdf/action below is needed for required-components, traverse-action and traverse-sub-actions
;; that used to live there before 3.2.0.
(:recycle :asdf/plan :asdf)
(:use :uiop/common-lisp :uiop :asdf/upgrade
:asdf/component :asdf/operation :asdf/system
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment