あどけない話

Internet technologies

cabal 1.18 が提供するサンドボックスの小技

cabal 1.18 のサンドボックスがどういう機能か知らない人は、An Introduction to Cabal sandboxes2013年8月現在のHaskell開発環境をどうぞ。

それで、sandbox サブコマンドの--sandbox オプションが早速役に立ったというお話。

--sandbox オプション

パッケージを Hackage に上げる場合、cabal sdist で tar.gz を作ります。

% cd ~/work/ghc-mod
% cabal clean
% cabal sdist
Source tarball created: dist/ghc-mod-2.1.2.tar.gz

慎重な人は、必要なファイルが漏れてないか、untar して cabal test するでしょう。

% cd dist
% tar zxvf ghc-mod-2.1.2.tar.gz
% cd ghc-mod-2.1.2
% cabal test
Package has never been configured. Configuring with default flags. If this
fails, please run configure manually.
Resolving dependencies...
Configuring ghc-mod-2.1.2...
cabal: At least the following dependencies are missing:
convertible -any,
ghc-paths -any,
ghc-syb-utils -any,
hlint >=1.7.1,
hspec >=1.7.1,
io-choice -any

はい。サンドボックスを使ってパッケージを開発している場合、こうなるのは当然ですね。しかし、untar したディレクトリに新たにサンドボックスを作り、依存ライブラリをインストールするのは時間の無駄です。開発時に使っていたサンドボックスを再利用すればいいのです。

% cabal sandbox init --sandbox ../../.cabal-sandbox
% cabal test

いやぁ、よく考えてありますね。