• Francois-Rene Rideau's avatar
    Fix issue upgrading from 3.1.7 or earlier · 1a241a5c
    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).
    1a241a5c
action.lisp 23.3 KB