Forked from
asdf / asdf
Source project has a limited visibility.
-
Francois-Rene Rideau authored
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).
Francois-Rene Rideau authoredTo 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).