はてな使ったら負けだと思っている deriving Haskell このページをアンテナに追加 RSSフィード

2011-02-21

ghc-pkg-autofix-0.1.3 を公開しました

|  ghc-pkg-autofix-0.1.3 を公開しました - はてな使ったら負けだと思っている deriving Haskell を含むブックマーク はてなブックマーク -  ghc-pkg-autofix-0.1.3 を公開しました - はてな使ったら負けだと思っている deriving Haskell

ghc-pkg-autofix に "-" が入ったパッケージ名を正しく扱えないと云うバグがあったので直しました。

ひどすぎる……。こちらからどうぞ

トラックバック - http://haskell.g.hatena.ne.jp/mr_konn/20110221

2011-02-20

破壊された依存性を解決するための ghc-pkg-autofix をリリースしました

|  破壊された依存性を解決するための ghc-pkg-autofix をリリースしました - はてな使ったら負けだと思っている deriving Haskell を含むブックマーク はてなブックマーク -  破壊された依存性を解決するための ghc-pkg-autofix をリリースしました - はてな使ったら負けだと思っている deriving Haskell

重要:0.1.2にはバグがあったので、入れた人は最新版にしといてください!

cabal-install はべんりでこれのない生活ちょっと考えられないって感じですが、妙なところが不便ですよね。

よくあるのが、なぜか既にインストールされているバージョンのパッケージを勝手に上書きインストールして、package id がかわってしまうためにそれに依存しているパッケージが壊れてしまったり。

こういう悲しい事故は割と頻繁に起こって、その度に .ghci/*/package.conf.d/hoge.conf とかを書き直して ghc-pkg recache --user しないといけないわけですが。

流石にこういう作業が多すぎるので、それを自動化するツールを書きました。

それが ghc-pkg-autofix です。GitHubレポジトリはこちら

ご利用は USE AT YOUR OWN RISK と云うことで。

やっていることは簡単で、

  1. ghc-pkg check
  2. dependency が壊れているパッケージを検出
  3. 壊れた依存先の新しい package id (Hash 値?) を見付けて
  4. .conf ファイルを書き直し
  5. ghc-pkg recache --user

と云う作業をしています。今のところ壊れている奴は全部直そうとしていて、今後のアップデートで一部のライブラリだけ直せるようにしたりとかするかもしれません。

使い方は単純で、たとえば、

$ ghc-pkg check
There are problems in package authenticate-0.7.2.3:
  dependency "tagsoup-0.12-68a50e968bc5c990d3a358f4dbde8e22" doesn't exist
There are problems in package lambdabot-utils-4.2.1:
  dependency "tagsoup-0.12-68a50e968bc5c990d3a358f4dbde8e22" doesn't exist
There are problems in package xss-sanitize-0.2.4:
  dependency "tagsoup-0.12-68a50e968bc5c990d3a358f4dbde8e22" doesn't exist

みたいになってるときに

$ ghc-pkg-autofix

を実行すれば勝手によろしくやってくれます。

まだまだ荒削りなので、github とかでどんなことをやっているか確認してみてもいいかもです。


何か機能提案とかバグとかあったら教えてください。

追記:対象は package 単位で conf を管理する様になったヴァージョンからなので、 6.8だか6.10だかでは動かないと思います。すんません。

トラックバック - http://haskell.g.hatena.ne.jp/mr_konn/20110220