質問: Aというsystemがあったとして、 このsystem中のfoo.lispが壊れていて、(load-system :a)とするとビルドができないとします。 この場合、A systemのfoo.lispを直接書き換えてしまえば修正は可能ですが、 Quicklisp等のパッケージマネージャーを利用していて、パッケージマネージャーから供給されるソースは一切変更したくなくないもの、とします。 このような場合、ASDFで処理されるソースコンポーネントを差し替えるにはどのような方法がベストでしょうか。 ちなみに、ASDFの中身を眺めてみましたが、うまい場所のフックが見付からず、asdf:performに対象のソースファイルのコンポーネントが来たら代替のものに差し替える(代替のコンポーネントは別のsystemとして定義しておく)方法位しか思い付きませんでした。 ``` (defmethod asdf:perform :around (op (compo (Eql 壊れたソースコンポーネント))) (asdf:perform operation 修正したソースコンポーネント)) ``` なにか正式な作法があれば是非知りたいです。
回答: パッチの処理を追加できるフックの場所を探してみましたが、やはりasdf:performメソッド位しかないようです。 とりあえず、このメソッドに処理を追加すれば目的の動作はできるようなので、一旦クローズとします。