homebrewのformulaをカスタマイズする

久しぶりにimagemagickを使おうとしたら、librsvgをリンクしないインストールになっているのに気付いた。以前、そのあたりはいい感じにしておいたはずなのにな、と思って調べたところ、formulaからインストール時のオプションが削除されてしまった(PR)ということのようだ。

何か別のオプションなりなんなりがあるのかな? と調べてみたが、そういうのはないらしい。

そもそもの話が「オプションについてはhomebrewのCIを通しているわけでもないし、ましてや相互の組み合わせときたら」(issue)ということで、必要ならtapを作ってねという流れになるのだろうと思う。

とはいえそこまでの話でもないので、今回はbrew editして必要なビルドオプションを追加してインストールすることにした。

brew edit imagemagick

エディタが開くので、依存関係とconfigueオプションを追加する。

--- a/Formula/imagemagick.rb
+++ b/Formula/imagemagick.rb
@@ -28,6 +28,7 @@ class Imagemagick < Formula
   depends_on "openjpeg"
   depends_on "webp"
   depends_on "xz"
+  depends_on "librsvg"
   uses_from_macos "bzip2"
   uses_from_macos "libxml2"

@@ -55,6 +56,7 @@ def install
       --without-x
       --without-wmf
       --enable-openmp
+      --with-rsvg
       ac_cv_prog_c_openmp=-Xpreprocessor\ -fopenmp
       ac_cv_prog_cxx_openmp=-Xpreprocessor\ -fopenmp
       LDFLAGS=-lomp

あとはインストールすればよい。

brew reinstall --build-from-source homebrew

すでにimagemagickをインストールしていたので、ここではinstallではなくreinstallしている。またbottleなimagemagickがあるので--build-from-sourceオプションによりソースからのインストールを指定しておく。

bottleなimagemagickではこう↓だったのが

$ magick -list format | grep SVG
     MSVG  SVG       rw+   ImageMagick's own SVG internal renderer
      SVG  SVG       rw+   Scalable Vector Graphics (XML 2.9.4)
     SVGZ  SVG       rw+   Compressed Scalable Vector Graphics (XML 2.9.4)

editしたimagemagickでこう↓変化した。

$ magick -list format | grep SVG
     MSVG  SVG       rw+   ImageMagick's own SVG internal renderer
      SVG  SVG       rw+   Scalable Vector Graphics (RSVG 2.44.15)
     SVGZ  SVG       rw+   Compressed Scalable Vector Graphics (RSVG 2.44.15)

なお、brew editするとこういう状態↓になる。

$ cd $(brew --repository homebrew/core)
$ git status --short
 M Formula/imagemagick.rb