cabal 1.18 のサンドボックスがどういう機能か知らない人は、An Introduction to Cabal sandboxes か 2013年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
いやぁ、よく考えてありますね。