アプリインストール(gnuplot) - M1 MacBook Air インストール覚書(17)

はじめに

解説を書いていると時間がかかるので、番外編の方でインストールしたものをまとめています。この中で gnuplot のインストールで野良 Formula を作ることになったので、その手順をまとめておきます。

依存するものの設定

そのまま bottle では入らなかったので、以下のように build-from-source オプションを付けて ./bootstrap.sh を実行しました。

brew "gnuplot", args: ["build-from-source"]

少し進んでは依存関係で止まってしまうので、bottle が存在しないアプリをみんな build-from-source でインストールさせます。後でみたときに何のために入れたのかわかるように # for gnuplot のコメントを入れておきました。

# for gnuplot
brew "webp", args: ["build-from-source"]
brew "gd", args: ["build-from-source"]
brew "libcerf", args: ["build-from-source"]
brew "glib", args: ["build-from-source"]
brew "gobject-introspection", args: ["build-from-source"]
brew "fribidi", args: ["build-from-source"]
brew "graphite2", args: ["build-from-source"]
brew "harfbuzz", args: ["build-from-source"]
brew "pango", args: ["build-from-source"]
brew "qt", args: ["build-from-source"]

野良 Formula (qt-arm64) の作成

ここまでいって、最後の qt で build に失敗しました。調べたところ、今日 「qtwebengine をスキップすればコンパイルできた」という報告が出ていました。とりあえず、gnuplot の描画だけならなくても何とかなるのではという期待をもって、野良 Formula を作ることにしました。以下、作業記録です。

まず、事前に準備していた m1-beta-brew を tap するように arm_brew/Brewfile に追加します。

tap "hkob/m1-beta-brew"

./bootstrap.sh で tap を取得し、元となる qt.rm の Formula を自分の野良 brew にコピーします。

cp /opt/homebrew/Library/Taps/{homebrew/homebrew-core/Formula/qt.rb,hkob/homebrew-m1-beta-brew/qt-arm64.rb}

記事の通りに Formula を修正しました。以下は変更点のパッチです。

hkob@hM1Air ~ % diff -c /opt/homebrew/Library/Taps/{homebrew/homebrew-core/Formula/qt.rb,hkob/homebrew-m1-beta-brew/qt-arm64.rb}
*** /opt/homebrew/Library/Taps/homebrew/homebrew-core/Formula/qt.rb 2020-12-17 09:08:06.000000000 +0900
--- /opt/homebrew/Library/Taps/hkob/homebrew-m1-beta-brew/qt-arm64.rb    2020-12-18 17:49:19.000000000 +0900
***************
*** 1,6 ****
  # Patches for Qt must be at the very least submitted to Qt's Gerrit codereview
  # rather than their bug-report Jira. The latter is rarely reviewed by Qt.
! class Qt < Formula
    desc "Cross-platform application and UI framework"
    homepage "https://www.qt.io/"
    url "https://download.qt.io/official_releases/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz"
--- 1,6 ----
  # Patches for Qt must be at the very least submitted to Qt's Gerrit codereview
  # rather than their bug-report Jira. The latter is rarely reviewed by Qt.
! class QtArm64 < Formula
    desc "Cross-platform application and UI framework"
    homepage "https://www.qt.io/"
    url "https://download.qt.io/official_releases/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz"
***************
*** 56,62 ****
        -no-rpath
        -pkg-config
        -dbus-runtime
!       -proprietary-codecs
      ]
  
      system "./configure", *args
--- 56,64 ----
        -no-rpath
        -pkg-config
        -dbus-runtime
!       -skip qtwebengine
!       -no-assimp
!       QMAKE_APPLE_DEVICE_ARCHS=arm64
      ]
  
      system "./configure", *args

これで、qt-arm64 という Formula で qt が入るはずです。arm_brew/Brewfile を以下のように修正します。

brew "qt-arm64", args: ["build-from-source"]

./bootstrap.sh したら、かなり時間がかかりましたが無事にインストールに成功しました。

野良 Formula (gnuplot-arm64) の作成

qt-arm64 が通れば、同じ手順で qt-arm64 に依存した gnuplot-arm64 Formula を作るだけです。あとは同じ手順ですね。まず、オリジナルの Formula をコピーします。

cp /opt/homebrew/Library/Taps/{homebrew/homebrew-core/Formula/gnuplot.rb,hkob/homebrew-m1-beta-brew/gnuplot-arm64.rb}

依存関係だけ修正します。差分はこんな感じです。

hkob@hM1Air ~ % diff -c /opt/homebrew/Library/Taps/{homebrew/homebrew-core/Formula/gnuplot.rb,hkob/homebrew-m1-beta-brew/gnuplot-arm64.rb} 
*** /opt/homebrew/Library/Taps/homebrew/homebrew-core/Formula/gnuplot.rb    2020-12-17 09:08:06.000000000 +0900
--- /opt/homebrew/Library/Taps/hkob/homebrew-m1-beta-brew/gnuplot-arm64.rb   2020-12-18 17:49:13.000000000 +0900
***************
*** 1,4 ****
! class Gnuplot < Formula
    desc "Command-driven, interactive function plotting"
    homepage "http://www.gnuplot.info/"
    url "https://downloads.sourceforge.net/project/gnuplot/gnuplot/5.4.1/gnuplot-5.4.1.tar.gz"
--- 1,4 ----
! class GnuplotArm64 < Formula
    desc "Command-driven, interactive function plotting"
    homepage "http://www.gnuplot.info/"
    url "https://downloads.sourceforge.net/project/gnuplot/gnuplot/5.4.1/gnuplot-5.4.1.tar.gz"
***************
*** 30,36 ****
    depends_on "libcerf"
    depends_on "lua"
    depends_on "pango"
!   depends_on "qt"
    depends_on "readline"
  
    def install
--- 30,36 ----
    depends_on "libcerf"
    depends_on "lua"
    depends_on "pango"
!   depends_on "qt-arm64"
    depends_on "readline"
  
    def install

あとは、arm_brew/Brewfile を修正するだけです。

brew "gnuplot-arm64", args: ["build-from-source"]

./bootstrap.sh で無事にインストールできました。以下の図は実際に plot を表示した結果です。

f:id:hkob:20201218192106p:plain
gnuplot による qt plot

これで少しくらいの修正であれば、野良 Formula で対応できそうなことがわかりました。 qt が正式に動作するようになったら、Brewfile を修正します。この記事はとりあえずここまで。

次の記事: teleport を使った仮想 KVM の活用 - M1 MacBook Air インストール覚書(18) - hkob’s blog

前の記事: アプリインストール(Slack) - M1 MacBook Air インストール覚書(16) - hkob’s blog

hkob.hatenablog.com