はじめに
解説を書いていると時間がかかるので、番外編の方でインストールしたものをまとめています。この中で 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 を表示した結果です。
これで少しくらいの修正であれば、野良 Formula で対応できそうなことがわかりました。 qt が正式に動作するようになったら、Brewfile を修正します。この記事はとりあえずここまで。
次の記事: teleport を使った仮想 KVM の活用 - M1 MacBook Air インストール覚書(18) - hkob’s blog
前の記事: アプリインストール(Slack) - M1 MacBook Air インストール覚書(16) - hkob’s blog