Next: What happened to the bundle operations?, Previous: Pitfalls of the transition to ASDF 2, Up: “What has changed between ASDF 1, ASDF 2, and ASDF 3?” [Contents][Index]
While ASDF 3 is largely compatible with ASDF 2, there are a few pitfalls when upgrading from ASDF 2, due to limitations in ASDF 2.
:depends-on ((:version "asdf" "3.1.2"))
,
but that you also check that ASDF 3 is installed,
or else the upgrade catastrophe might happen before that specification is checked,
by starting your .asd file with a version check as follows:
#-asdf3 (error "MY-SYSTEM requires ASDF 3.1.2")
(require "asdf") #-asdf3.1 (error "ASDF 3.1 or bust")
require
at first, and
make heroic attempts to load it the hard way if at first they don’t succeed,
see tools/load-asdf.lisp distributed with the ASDF source repository,
or the code of cl-launch
.
(ignore-errors (funcall 'require "asdf")) ;; <--- try real hard ;; <--- insert heroics here, if that failed to provide ASDF 2 or 3 ;; <--- insert configuration here, if that succeeded (asdf:load-system "asdf") ;; <--- re-configure here, too, in case at first you got ASDF 2
Forward incompatibility can be determined using the variable
asdf/upgrade::*oldest-forward-compatible-asdf-version*
,
which is 2.33 at the time of this writing.