Inkscape 0.92.1 のパッケージ(gtk/quartz backend)をつくる
スポンサーリンク
Inkscape 0.92.1 がリリースされています。
Release notes/0.92.1 - Inkscape Wiki
日付が2月13日なのは少し疑問ですが、まあいいでしょう*1。
相変わらずMac向けの公式バイナリはリリースされていませんが、次のリリースに向けてなんとかしようという動きはあるようです。
Tim Sheridan 氏によるビルド用のパッケージ作成スクリプトの修正版(ただしExperimental 扱い)が公開されています。
0.92.x_mac_packaging : Code : Inkscape
XQuartz 版が公開されています(まだテスト用扱い)。
例によって例のごとく、XQuartzなしで動くバージョンが欲しいので、自前でビルドします。
そのうちMacPortsからsudo port install inkscape +quartz
で最新版がインストールできるようになるはずです。
わざわざビルドする理由は、dmg形式にしておくとOSリカバリの時にビルドし直さなくていいよねってだけの話です。
自前でビルドしてみる
パッケージ作成スクリプトの修正版はまだメインのリポジトリに反映されていません。
素直に開発版のリポジトリから入手しようかと思いましたが、MacPortsをバージョンアップしたところ、bazaar(bzr
)の挙動がおかしいので断念。
手っ取り早く最新のリビジョンを探し、”download tarball"のリンクをクリックしてダウンロード。差分だけ取得して0.92.1のソースに適用するのも可。
~tghs/inkscape/0.92.x_mac_packaging : revision 15379
今回はリビジョン15379
。
$ tar zxf ~tghs_inkscape_0.92.x_mac_packaging-r15379.tgz $ cd ~tghs/inkscape/0.92.x_mac_packaging
移動した先のディレクトリの、README.txt
ファイルを参考にしてQuartz版を作成します(packaging/macosx/README.txt
)。
ビルド
ビルド環境は過去記事でセットアップしたMavericks環境です。
もし同一マシンでX11版とQuartz版を作り分けたい場合は、MacPortsのインストール先を区別できるようにするといいと思います。
$ export MP_PREFIX=/opt/local $ cd ~tghs/inkscape/0.92.x_mac_packaging/packaging/macosx/
独自のPortfileを使用して追加パッケージをインストールすることが前提になっています。
そのためにMacPortsの設定ファイルを編集する必要があります。
$ sudo sed -e '/^rsync:/i\'$'\n'"file://$(pwd)/ports" -i "" "$MP_PREFIX/etc/macports/sources.conf"
現在のディレクトリのパスと、$MP_PREFIX
の値を埋め込むので注意が必要です。
$ less "$MP_PREFIX/etc/macports/sources.conf"
最終行の一行上にPortfileの配置ディレクトリのための設定が追加されていればOK。
続いてパッケージのインデックスを更新。
$ (cd ports && portindex)
同じ要領でMacPorts全体のビルド設定(variants)を修正。以下はあくまでもQuartzバックエンドとしてビルドするためのものです。
$ sudo sed -e '$a\'$'\n''-x11 +quartz +no_x11 +rsvg +Pillow -tkinter +gnome_vfs' -i "" "$MP_PREFIX/etc/macports/variants.conf"
依存パッケージを一式インストール。それなりに時間がかかります。
$ sudo sed -e '$a\'$'\n''-x11 +quartz +no_x11 +rsvg +Pillow -tkinter +gnome_vfs' -i "" "$MP_PREFIX/etc/macports/variants.conf"
configure
のバグを回避するため、osx-build.sh
を修正。
$ vim osx-build.sh
267行目の下に以下の二行を追加(250行目と251行目をコピーした結果)。
# Workaround for https://bugs.launchpad.net/inkscape/+bug/1606018 CONFFLAGS="--disable-strict-build $CONFFLAGS"
もしMountain Lion やYosemite以降でビルドするなら対応する箇所に修正が必要だと思う。いまのところMavericksでしか試していません。
起動時にエラーが表示される例のバグを回避するパッチを適用。
$ patch ScriptExec/launcher-quartz-no-macintegration.sh fix_lp476678.patch
パッチは以下の通り。
--- ScriptExec/launcher-quartz-no-macintegration.sh.bak 2017-01-08 02:56:39.000000000 +0900 +++ ScriptExec/launcher-quartz-no-macintegration.sh 2017-01-08 02:58:25.000000000 +0900 @@ -143,7 +143,7 @@ export LANG="en_US.UTF-8" else tmpLANG="`grep \"\`echo $LANGSTR\`_\" /usr/share/locale/locale.alias | \ - tail -n1 | sed 's/\./ /' | awk '{print $2}'`" + tail -n1 | awk '{print $2}' | sed 's/\./ /' | awk '{print $1}'`" if [ "x$tmpLANG" == "x" ] then # override broken script
一気にdmgファイルまでビルド。
$ LIBPREFIX="$MP_PREFIX" ARCH="x86_64" ./osx-build.sh a c b -j 5 i p -s d
Inkscape.app
とdmgファイルが生成されているので動作確認する。
Sierra 対策
Mavericks でビルドしたバイナリをSierraで動かすと内部エラーで起動しない……。Mavericksでは普通に動くのに。
以前から知られている問題と同じようなので、その場しのぎの対応ですが、小細工で回避。
前述のパッチと同じ要領で、パッチを適応してdmgファイルだけ作り直す。
作業ディレクトリに戻ったうえで下記を実行。
$ patch Inkscape.app/Contents/MacOS/inkscape fix_SierraBuild.patch patching file Inkscape.app/Contents/MacOS/inkscape Hunk #1 succeeded at 154 (offset 3 lines).
dmgファイルの生成。
$ ./osx-dmg.sh -p Inkscape.app
外付けディスプレイは外して置いたほうがいいかもしれない。
Inkscape.dmg
が生成されるのでこれをインストール対象のマシンに持っていく。なお、修正パッチは下記の通り。
--- ScriptExec/launcher-quartz-no-macintegration.sh.bak 2017-01-08 02:56:39.000000000 +0900 +++ ScriptExec/launcher-quartz-no-macintegration.sh 2017-01-08 02:58:25.000000000 +0900 @@ -151,6 +151,10 @@ export LANG="$tmpLANG.UTF-8" fi fi + +if [ $OSXMINORNO -gt 11 ]; then + export LANG="$(echo $LANG | cut -d. -f 1)" +fi [ $_DEBUG ] && echo "Setting Language: $LANG" 1>&2 export LC_ALL="$LANG"
実行時にセキュリティがらみの警告が出る場合は、Application
フォルダに移動して右クリックメニューから実行すればよかったはず。
もしくは環境設定からセキュリティまわりの設定を変更。
Maverciks からデフォルトのstdlibまわりが変更になっているので、コンパイラの最適化との関係で何かまずいんだろうと思う。
完成品
あまり需要がなさそうですが一応、置いておきます。 XQuartzなしで動くQuartz
版です。
起動スクリプトのバグ修正を含みます。
変更点など
過去記事のビルドとの変更点は、以下のとおり。 独自のパッチ
- CMake ではなく従来どおりの
autotools
によるビルド方式 - Extension の動作に必要なファイルが追加(されたはず)
上述したとおり、独自の修正を含んでいます。
- 日本語ロケールで起動時に「内部エラーが発生しました」というダイアログが表示されて起動できない問題
- 特定の環境でビルドしたバイナリをSierraで実行すると起動できない
あとは冒頭のリンク先と同じです。
スクリーンショット
こんな感じ。
おしまい。
*1:確かにRC相当のプレリリース版はその辺の日付だった。