もぐてっく

人は1つ歳をとるたび、1ビットづつ大きくなれると信じてた。

mikutter on Mac OS XのためにCairoとPangoのオレオレPortfileを作った話

OS X El Capitanへのアップグレードに伴いMacPortsをアップデートしたところ、cairoのQuartzサポートが悪さをする事象が再発しました。

moguno.hatenablog.jp

MacPortsのアップデートでactivateしていた古いパッケージが破棄された模様。

今使ってるsvnから古いPortfileを持ってくる技も今後使えなくなる可能性があるので、いい感じのPortfileを書いて、オレオレで抱え込むようにします。

方針

variantの+quartzが悪さをしているのは確実なのだけれど、+quartzがデフォルトで無効化出来ないようになっているので、その辺りをハックしたPortfileを作ります。

MacPortsにオレオレツリーを追加する。

ここでは、自分のホームディレクトリにmacportディレクトリを作ってそれをオレオレツリーにします。

mkdir ~/macports

vi /opt/local/etc/macports/sources.conf

・sources.conf

  8 # To add a local source, add a "file://" entry.
  9 #
 10 #   Example: file:///Users/landonf/misc/MacPorts/ports
 11 #
 12 # To prevent a source from synchronizing when `port sync` is used,
 13 # append "[nosync]" at the end.
 14 #
 15 #   Example: file:///Users/landonf/misc/MacPorts/ports [nosync]
 16 #
 17 # Note that MacPorts parses source URLs in order; when a port appears in
 18 # multiple sources, it installs the first occurrence. For local sources
 19 # to shadow remote ones, "file://" URLs must come before other URLs.
 20 file:///Users/moguno/macports             ←オレオレツリーのパスを追加

ハックするPortfileをもらってくる。

CairoとPangoを本家ツリーから頂いてきます。

cd /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/

tar cf - graphics/cairo | tar xf - -C ~/macports/
tar cf - x11/pango | tar xf - -C ~/macports/

Portfileの編集

デフォルトで有効になる+quartzをぶっ潰します。

cairo

118     #default_variants        +quartz     ←コメントアウト
119     # Don't allow Quartz support to be disabled. Keep the variant for awhile in
120     # case any dependents are using the active_variants portgroup to check for it.
121     #variant_set             quartz     ←コメントアウト

pango

 62     #default_variants    +quartz     ←コメントアウト
 63     # Don't allow Quartz support to be disabled. Keep the variant for awhile in
 64     # case any dependents are using the active_variants portgroup to check for it.
 65     #variant_set         quartz     ←コメントアウト

最後にPortIndexファイルを作って完成です。

cd /Users/moguno/macports
portindex

インストール

通常通りインストールすると、オレオレツリーを優先して使ってくれます。

sudo port install cairo
sudo port install pango

こんな感じで、x11にのみ+がついていればOKです。

sudo port info cairo pango

cairo @1.14.2_1 (graphics)
Variants:             opengl, quartz, universal, [+]x11     ←これ

Description:          Cairo is a vector graphics library with cross-device output support. It is designed to produce identical output on all output media while taking advantage of
                      display hardware acceleration when available (e.g. through the X Render Extension).
Homepage:             http://cairographics.org/

Extract Dependencies: xz
Build Dependencies:   pkgconfig
Library Dependencies: libpixman, glib2, fontconfig, freetype, libpng, zlib, expat, xrender, xorg-libXext, xorg-xcb-util
Conflicts with:       cairo-devel
Platforms:            darwin, macosx
License:              LGPL-2.1 MPL-1.1
Maintainers:          ryandesign@macports.org
--
pango @1.38.0 (x11)
Variants:             quartz, universal, [+]x11     ←これ

Description:          The goal of the Pango project is to provide an open-source framework for the layout and rendering of internationalized text.
Homepage:             http://www.pango.org/

Extract Dependencies: xz
Build Dependencies:   pkgconfig
Library Dependencies: glib2, cairo, harfbuzz, gobject-introspection, Xft2
Conflicts with:       pango-devel
Platforms:            darwin
License:              LGPL-2
Maintainers:          ryandesign@macports.org, openmaintainer@macports.org

これで安定してMacでmikutter出来ますね。