imagemagick@6 formula のアップデート方法(備忘録)

ImageMagick がちょいちょい細かくバージョンを上げてくれるので、自分が使いたいバージョンにあげたときの作業ログです。 私が作業したのは https://github.com/Homebrew/homebrew-core/pull/40921 です。

Pull Request を作成するところで hub が使われるのでインストールしておく。

$ brew install hub

Pull Request を送れるように、手元の Repository に https://github.com/Linuxbrew/brew/blob/master/docs/How-To-Open-a-Homebrew-Pull-Request.md#formulae-related-pull-request に従い Repository を fork し remote を指定しておきます。

$ cd $(brew --repository homebrew/core)
$ git remote add <YOUR_USERNAME> https://github.com/<YOUR_USERNAME>/homebrew-core.git

環境変数 HOMEBREW_GITHUB_API_TOKEN で GitHub の API トークンを設定しておく必要がありました。

あとは、以下の様に bump-formula-pr コマンドを実行すると、テスト実行やら Pull Request の作成まで自動でやってくれます。

$ export IMAGEMAGICK_VERSION="6.9.10-96"
$ curl -O https://imagemagick.org/download/releases/ImageMagick-$IMAGEMAGICK_VERSION.tar.xz
$ export SHASUM256=`shasum -a 256 ImageMagick-$IMAGEMAGICK_VERSION.tar.xz | awk '{print $1}'`

$ cd $(brew --repository homebrew/core)
$ brew bump-formula-pr imagemagick@6 --strict \
--url=https://dl.bintray.com/homebrew/mirror/imagemagick%406-$IMAGEMAGICK_VERSION.tar.xz \
--mirror=https://www.imagemagick.org/download/releases/ImageMagick-$IMAGEMAGICK_VERSION.tar.xz \
--sha256=$SHASUM256

どうも ImageMagick が特殊らしく、Pull Request がマージされると --url で指定した URL へ --mirror からコピーされるようです。ImageMagick 公式サイトでは最新の tar ball しか保持していないからいろいろ都合が悪いのでしょうか。

そのせいか、本来は --sha256 を指定しなければ自動計算されるらしいのですが、いちいち指定しないと駄目っぽい。(sha256 の自動取得の際に --url の URL が使われるのだがそこにはまだファイルが存在していないため。) という作法を知らなかったため、ずいぶんハマりました(・ω・)