1つの OS X に複数の MacPorts と Homebrew を共存させる。
RawTherapee で使う gtk-mac-integration 用に GTK+ Quartz な2つめの MacPorts を入れてみたので作業メモ。あと、Homebrew での構築もやりたかったのでそっちも追加。
作業内容
2nd MacPorts で gtk-mac-integraion(gtk-osx-application)
/opt/local を使わないのでソースからビルド。異なるプレフィックスを使用する場合のインストール方法は http://guide.macports.org/#installing.macports.source.multiple に見本あり。--with-no-root-privileges
で管理者権限不要な環境にしようと思ったけど sqlite3 のデータベース作成あたりでパーミッションエラーなので sudo。
PATH=/usr/bin:/bin:/usr/sbin:/sbin prefix=/opt/gtk tar xf MacPorts-2.0.3.tar.gz cd MacPorts-2.0.3 ./configure \ --prefix=$prefix \ --enable-readline \ --with-applications-dir=$prefix/Applications \ --with-frameworks-dir=$prefix/Library/Frameworks \ CFLAGS="-pipe -Os" make sudo make install
macports.conf
applications_dir がユーザのアプリケーションディレクトリになってたので修正。binpath はおまじない。
applications_dir /opt/gtk/Applications binpath /opt/gtk/bin:/opt/gtk/sbin:/usr/bin:/bin:/usr/sbin:/sbin buildnicevalue 10
variants.conf
x86_64 と Quartz が強制されるようにしておく。
-x11 +no_x11 +quartz +gcc48 -universal
容量削減のため distfiles をメインツリーと共用。
sudo rm -rf /opt/gtk/var/macports/distfiles sudo ln -s /opt/local/var/macports/distfiles /opt/gtk/var/macports/distfiles
あとはフルパスで port コマンドを呼び出して install gtk-osx-application
。
Homebrew で gtk-mac-integration
/usr/local は自分で使ってるので /opt/hb 辺りに置くことにした。昔使ってたときは気づかなかったけど何処に置いてもいいらしい。手始めに xz をインストールしてみたらバイナリが降ってきてびっくり。
sudo install -d -o 501 -g 20 /opt/hb git clone --depth 1 https://github.com/Homebrew/homebrew.git /opt/hb alias brew="PATH=/opt/hb/bin:/opt/hb/sbin:/usr/bin:/bin:/usr/sbin:/sbin /opt/hb/bin/brew"
現時点ではフォーミュラに gtk-mac-integration が無いっぽいので自作。brew create
してみたら「ふぉおおお!brew create
すごいよ!!簡単だよ!!!」と、ちょっと感動した(Tcl?いえ、知らない子ですね…)。depends_on 'pkg-config'
書かないと PATH
通してくれないのにハマったけど。
require 'formula' class GtkMacIntegration < Formula homepage 'http://gtk.org/' url 'http://ftp.acc.umu.se/pub/gnome/sources/gtk-mac-integration/2.0/gtk-mac-integration-2.0.5.tar.xz' sha256 '6c4ff7501d7ff35e49068052d80fcf76ce494e5953c5f3967e4958b1b0c67b9f' version '2.0.5' depends_on 'pkg-config' => :build depends_on 'xz' depends_on 'gtk+' patch do url 'http://git.gnome.org/browse/gtk-osx/plain/patches/0001-Fix-unhandled-exception-from-attempting-to-access-me.patch' sha1 'da39a3ee5e6b4b0d3255bfef95601890afd80709' end def install system "./configure", "--prefix=#{prefix}", "--disable-dependency-tracking", "--disable-silent-rules" system "make install" end end
gtk+.rb と gtkmm.rb が x11 付きなのでちょいと弄る。とりあえずローカルのフォーミュラを無理矢理コメントアウトしたけどいずれ cairo/cairomm みたいな --without-x11
オプションを追加できるようにしたいところ。Homebrew ってバリアントの管理どうなってんだろう。
diff --git a/Library/Formula/gtk+.rb b/Library/Formula/gtk+.rb index 75fc0c7..9383f4d 100644 --- a/Library/Formula/gtk+.rb +++ b/Library/Formula/gtk+.rb @@ -21,7 +21,7 @@ class Gtkx < Formula depends_on 'jasper' => :optional depends_on 'atk' depends_on 'cairo' - depends_on :x11 => '2.3.6' +# depends_on :x11 => '2.3.6' depends_on 'gobject-introspection' fails_with :llvm do @@ -35,7 +35,8 @@ class Gtkx < Formula "--prefix=#{prefix}", "--disable-glibtest", "--enable-introspection=yes", - "--disable-visibility" + "--disable-visibility", + "--with-gdktarget=quartz" system "make install" end end
diff --git a/Library/Formula/gtkmm.rb b/Library/Formula/gtkmm.rb index da0d8be..c25e514 100644 --- a/Library/Formula/gtkmm.rb +++ b/Library/Formula/gtkmm.rb @@ -18,7 +18,7 @@ class Gtkmm < Formula depends_on 'pangomm' depends_on 'atkmm' depends_on 'cairomm' - depends_on :x11 +# depends_on :x11 def install system "./configure", "--disable-dependency-tracking", "--prefix=#{prefix}"
インストールはとりあえずOK。
% brew -v install gtk-mac-integration Homebrew 0.9.5 ==> Downloading http://ftp.acc.umu.se/pub/gnome/sources/gtk-mac-integration/2.0/gtk-mac-integration-2.0.5.tar.xz Already downloaded: /Library/Caches/Homebrew/gtk-mac-integration-2.0.5.tar.xz ==> Verifying gtk-mac-integration-2.0.5.tar.xz checksum /opt/hb/opt/xz/bin/xz -dc "/Library/Caches/Homebrew/gtk-mac-integration-2.0.5.tar.xz" | tar xf - ==> Downloading http://git.gnome.org/browse/gtk-osx/plain/patches/0001-Fix-unhandled-exception-from-attempting-to-access-me.patch Already downloaded: /Library/Caches/Homebrew/gtk-mac-integration--patch-1c99223c1a21e49836d1f1c95c0d098616077037.patch ==> Verifying gtk-mac-integration--patch-1c99223c1a21e49836d1f1c95c0d098616077037.patch checksum ==> Patching /usr/bin/patch -g 0 -f -d /private/tmp/gtk-mac-integration-2Fx2/gtk-mac-integration-2.0.5 -p1 -i /private/tmp/gtk-mac-integration--patch-W64a/0001-Fix-unhandled-exception-from-attempting-to-access-me.patch patching file src/cocoa_menu_item.c ==> ./configure --prefix=/opt/hb/Cellar/gtk-mac-integration/2.0.5 --disable-dependency-tracking --disable-silent-rules ==> make install ==> Cleaning rm /opt/hb/Cellar/gtk-mac-integration/2.0.5/lib/libgtkmacintegration.la ==> Finishing up ln -s ../Cellar/gtk-mac-integration/2.0.5/include/gtkmacintegration gtkmacintegration ln -s ../Cellar/gtk-mac-integration/2.0.5/share/strings strings ln -s ../Cellar/gtk-mac-integration/2.0.5/lib/libgtkmacintegration.2.dylib libgtkmacintegration.2.dylib ln -s ../Cellar/gtk-mac-integration/2.0.5/lib/libgtkmacintegration.dylib libgtkmacintegration.dylib ln -s ../../Cellar/gtk-mac-integration/2.0.5/lib/pkgconfig/gtk-mac-integration.pc gtk-mac-integration.pc ==> Summary 🍺 /opt/hb/Cellar/gtk-mac-integration/2.0.5: 43 files, 304K, built in 58 seconds
うーん、これは楽だ。絵文字表示も面白いね。