kiyokaのブログアーカイブ

Archive of old blog posts

次はアプリを試作してみよう

私がRubyで書いているLisp方言、 [Nendo]の開発状況続き。

さて、[Nendo]をどういう方向に持って行こうか考えているのだが、考える前にNendoで簡単なアプリを作ってみようと思い立った。 そうすれば、自分が言語に期待するものがわかるんじゃないか。 最初に作ろうと思っているのは、パッケージマネージャソフト Stowのラッパー。 昔、Cmmiというパッケージマネージャのラッパーを作ったけど、ちょっと自分のパッケージ管理のユースケースに合わなくなってきた。 今は無理矢理CmmiとStowの組合せでやっているけど、ちょっとめんどくさい。 もっとStow専用にして、スムースに使えるものがいい。

こんな風に使いたい。ツールの名前はstowspecがいいかな。 ソースアーカイブを引数に渡すと自動的に ~/stowspecに登録してくれる

$ stowspec http://www.example.com/hogehoge-1.2.3.tar.gz
$ cd ~/stowspec
$ ls 
hogehoge-1.2.3

specファイルがS式になっていて、さっきのコマンドで自動生成されている

$ cd ~/stowspec/hogehoge-1.2.3
$ cat specfile

(stow
  (configure "configure --prefix=/usr/local/stow/hogehoge-1.2.3")
  .
  ()
  .

specファイルがカレントディレクトリにあれば /usr/local/stow/ へのインストールまでは全く考えなくても良い。

$ cd ~/stowspec/hogehoge-1.2.3
$ stowspec
 以下、 configure, make, make install の全プロセスが走る。
  .
  .

こうすれば、ソースコードからビルドした手順が残せたり、同一ソフトの複数バージョンを混乱無く管理できそう。 他にも実現したいことは、

  • ~/stowspec 以下をgitで管理したい。そのためには、~/stowspec 以下にはspecファイル以外は置きたくない。
  • –prefix指定がちゃんと動かないtarボールを発見してエラー通知したい。
  • インストールターゲットごとに、ビルド条件を変えたい。(そこはS式なのでifとかcondとか使って自由自在) かな。 今の[Nendo]の機能では不足がありすぎるだろうから、随時構文を追加したり、デザインを見なおしたりしながら進めようと思う。