pgModelerをm1 macでビルドしたメモ

pgModelerはPostgreSQLを対象とするモデリングツールで、ビルド済みのバイナリは有料で販売していてソースから自分でビルドするのはご自由にという形で提供されている。 ちょっと試してみたいという程度なので今回はソースからビルドしてみた。 多少の試行錯誤があったので、手順をメモする。

前準備

$ brew install postgresql
$ brew install qt@5
$ git clone https://github.com/pgmodeler/pgmodeler.git
$ cd pgmodeler

libxml2も使うがXcodeに付いてくるものがあるので別途インストールする必要はない。

pgmodeler.priを修正する

バージョン番号などの詳細は実行したタイミングによって異なるので適宜修正する。

diff --git a/pgmodeler.pri b/pgmodeler.pri
index 1ab60335..e2dbdd1b 100644
--- a/pgmodeler.pri
+++ b/pgmodeler.pri
@@ -195,8 +195,8 @@ unix:!macx {
 }
 
 macx {
-  !defined(PGSQL_LIB, var): PGSQL_LIB = /Library/PostgreSQL/12/lib/libpq.dylib
-  !defined(PGSQL_INC, var): PGSQL_INC = /Library/PostgreSQL/12/include
+  !defined(PGSQL_LIB, var): PGSQL_LIB = /opt/homebrew/Cellar/postgresql/14.1_1/lib/libpq.dylib
+  !defined(PGSQL_INC, var): PGSQL_INC = /opt/homebrew/Cellar/postgresql/14.1_1/include
   !defined(XML_INC, var): XML_INC = /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/libxml2
   !defined(XML_LIB, var): XML_LIB = /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/libxml2.tbd
   INCLUDEPATH += $$PGSQL_INC $$XML_INC

ビルドする

$ /opt/homebrew/Cellar/qt@5/5.15.2_1/bin/qmake -r CONFIG+=release pgmodeler.pro
$ make
$ make install

これで/Applications/pgModeler.appが作られるが、アプリをクリックしても実行できない。 実行するにはコード署名が要るようで、以下のコマンドでそれができる。

$ codesign --force --deep --sign - /Applications/pgModeler.app 

これでpgModeler.appを実行できた。

f:id:tsimo:20211218023128p:plain

余談

最初Qt5をインストーラでインストールして使おうとしたが、ビルドが通らなかった。 コンソール出力を見るとリンカがエラーを出していて、x86_64とarm64が混じってるらしかった。 qmakeで生成されたMakefilex86_64という指定があったので、インストールしたQtがx86版だったっぽい。 postgresqlに合わせてqt5もhomebrewでインストールしてqmakeからやり直すとビルドできた。

コード署名のやり方は、アプリの実行ができなくてコンソールアプリでエラー内容を確認して、そこにあった

Namespace CODESIGNING, Code 0x2

という文言で検索すると同様の問題に遭遇して解決できたケースを見つけることができた。

参考

pgModelerのサイトにソースからのビルド方法はあるが、コード署名については触れられていない。 pgmodeler.io