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).
Loading
Please sign in to comment