Macを買ってmikutterを入れたときのメモ

おひさです。転職したら前よりお金が入るようになったのでMacBook Air (2020)を買ってしまいました。

さて、新しいマシンを買ったときにすることと言えば、mikutterのインストールですね! 買って半年くらいしてそろそろやるかという気持ちになったので、トライしてみました。

前提条件

インストール作業時の私の環境はこんな感じ。先にTissueの開発環境を作ったり、Objective-Cを触って遊んでいたので既に色々入っている。
  • macOS Catalina 10.15.7
  • Xcode 12.0.1 インストール済
  • homebrew インストール済
  • XQuartz インストール済

mikutterのダウンロード

私はdevelop版を常用しているので、mikutterのbrew formulaは完全に無視して直接git clone。場所は適当にホームの下のどこかに。

作業時に使ったリビジョンはmikutter 4.1.1リリース直前の d97f09b918d92624a4e76fce7d6a17cef9aedb4e でした。

依存関係を何とかする

mikutterをX無しで使用するのは、地獄というか無理であることがAkkiesoft氏のブログによって知られています。実際試してみたんですが、TLのレンダリングが汚いとか、画像プレビューがまともに描画されないとか、そのウィンドウを閉じたらrubyごとクラッシュしたとか、散々でした。

先のブログではMacPortsを使っていますが、私の環境には既にhomebrewが入っています。あまりこれらを共存させたくないので、何とかbrewで押し切りたいところです。

幸い、homebrewかつX11での環境構築の資料があひる氏の手によってまとめられています。これをベースに……あああ! homebrewがX11のサポートをやめている!

ということで、何とかしてcairoとgtk+をX11サポートでビルドするよう、formulaにパッチを当てました……。

まず、cairoはXのヘッダーを参照できるよう depends_on :x11 を追加した上で、configureの部分でXCBとXLibのサポートを有効にします。

     system "./configure", "--disable-dependency-tracking",
                           "--prefix=#{prefix}",
                           "--enable-gobject=yes",
                           "--enable-svg=yes",
                           "--enable-tee=yes",
                           "--enable-quartz-image",
-                          "--enable-xcb=no",
-                          "--enable-xlib=no",
-                          "--enable-xlib-xrender=no"
+                          "--enable-xcb=yes",
+                          "--enable-xlib=yes",
+                          "--enable-xlib-xrender=yes"
     system "make", "install"
   end

そして、gtk+のformulaからは "--with-gdktarget=quartz"と書かれた部分を削除することで、X11をバックエンドとして使うようにします。
ところが、これだけだとビルドエラーを起こして動きませんので、upstreamから拾ってきたパッチを適当に当てるようにします。

あとは、この2つを --HEAD --build-from-source オプション付きでインストールします。

他の手順はほぼあひる氏の資料通りで、何とか動きました!

今回作成したformulaは全部tapとしてまとめていますので、gtkをビルドするという苦行をこなす気があれば簡単にお使いいただけます。たぶん。……動かなかったらすまん。
shibafu528/homebrew-tap - https://github.com/shibafu528/homebrew-tap

コメント

このブログの人気の投稿

2019年の振り返り

Yukari for Android 1.2

Yukari 5周年によせて