Lambdaカクテル

Common Lispを書くMT-03ライダー(初心者)です

ついにanyenvでCommon Lispが!Roswellをanyenvでインストールできるようにするラッパーを書いた

書いた.

github.com

anyenvというのはおなじみナントカenv系のツール(xxenvと呼ぶことにする)をインストールすることができるツールで,rbenvとかplenvとかをインストールすることができるのだが,なんとCommon lispの処理系であるRoswellをインストールできないではないか!!これはいけない.roswellをインストールできるようにせねばならない.

dev.classmethod.jp

しかしながらanyenvはインストールするxxenv系ツールに一定の慣習を要求しており,例えばXXENV_ROOTといった環境変数を渡してインストール先を教えたり,xxenv init -といった呼び出しを行ってxxenvの初期化を行おうとしたり,bin/以下にxxenvといった実行ファイルがあることを期待するなど,既存のxxenv系ツールの挙動や設計にかなり依存している.しかしRoswell自体はxxenv系の慣習通りに動くわけではないので,その仲介を行う必要がある.例えば何もしないとRoswellはインストール先ではなく~/.roswell配下に様々な処理系をインストールしようとするし,roswell initというコマンドは存在しない.代わりにrosコマンドがあるが,ros initは全く別の動作をするコマンドだ.したがってrosコマンドの代わりにanyenvからの呼び出しを受けて,種々の下準備を行ってrosを呼び出すためのラッパーを今回用意したのである.

このラッパーが有効であれば,anyenv install roswellでroswellがインストールされ,パスが通されるし,次回ログイン時にroswellが要求する初回起動処理が行われ,~/.anyenv/env/roswell/以下に種々のライブラリなどが配置されるようになる. またアンインストールもanyenv uninstall roswellで行え,ほぼ環境を汚さない.

今のところanyenvの提供元にこのラッパーを呼び出してくれるようにP-Rを出しているところなので,そのうち使えるようになると思う.

github.com