新千葉 ガーベージ・コレクション

FPGA マガジンやインターフェースで書けなかったこと等をちょぼちょぼ書いてます。@ryos36

common lisp で venv 的なことを

ASDL で出来るのだろうなと思い調べてみるとありますね。

diary.wshito.com

この通りにやるとできます。ASDF の Ver3 に移行したので、すでに .config/common-lisp/source-registry.conf.d をつかってます(てのはすでにブログに書いた) asdf を久々に使う - 新千葉 ガーベージ・コレクション

さて、あとは動的に出来るはず。禁じ手的な asdf:central-registry を書き換える(これは Ver2. の手法なのでおすすめされていない) がありますが(通常の registry より後方互換のために先に読まれる模様)

asdf:initialize-source-registry で設定すれば動的に出来ます。はい。その際に DSL (S 式だけどこの ASDF アプリローカルな記述ね) を使えば、あとからロードパスを設定出来てそれは優先順位的に先に設定されるもよう。引数には :inherit-configuration か :ignore-inherited-configuration を設定する。前者は既にある設定を引き継ぐ(つまりいま設定しようとしている値を足す)、後者は既にある設定を無視して新たに設定しなおす。

DSL の詳細はこちら ASDF マニュアル

あと asdf.conf というファイルを置いておくと自動的に読み込まれるみたいね(試してない。既出の wshito さんのページ 参照の事)

ということで、ローカルにプロジェクトをダウンロードして自分でディレクトリ設定してそこにバージョン違いのものを入れておけば、複数の違うバージョンのものがインストール可能。

ついでに書くと asdf:user-cache を上書きすると、普段は ~/.cache/.... の下にコンパイルされたオブジェクトが置かれるけど、それを変えることが出来る。

(setf asdf:*user-cache* #P"/home/user/Works/my-cache/")

こんなかんじ。 あ~これ便利だわ。