読者です 読者をやめる 読者になる 読者になる

macOS でInkscape 0.92pre(beta)をソースからビルドしてみる(GTK+ 2/暫定版)

まだベータ版ですが、10月18日付でアナウンスが出ています。

inkscape.org

まだソースコードのみでバイナリは提供されていないようです。よってソースからのビルドにチャレンジします。

注意

いつの間にかビルドツールがautotoolsからcmakeに変更されているようです。そのうえ、macOS向けの正式なビルド手順は公開されていないです。

よってこの記事はいろいろやってみたらコンパイル通りました、という趣旨の記事、です。

意図したわけではありませんが、俗にいうOSXネイティブ版としてビルドされた状態です。多分正式版とは挙動が一致しないです。

起動スクリプトのバグの件

macOS版の起動スクリプト起因のバグは直っていないようです。言語の設定で日本語にしようとすると落ちるバグ。

ソースコードを展開したフォルダの、packaging/macosx/Resources/bin/inkscapeというファイルをみる限り修正されているようには見えないです。

参考:Bug #476678 “Mac OS X: Fails to get locale in Japanese” : Bugs : Inkscape

.app形式にしない限り無関係なんでコメントしづらい……。

準備

どうやら本家は Homebrew ではなくMacPortsを利用しているようです。しかしながら今更MacPortsという訳にはいかないのでHomebrewでパッケージをインストールします。

依存パッケージのインストール。

GTK+ 2でビルドするか、GTK+ 3でビルドするかが問題ですが、無難にGTK+ 2を使う方向で。

$ brew install gsl  boehmgc popt gtk+ gtkmm boost gtkspell3 poppler libwpd boost

もしインストールされていなければgettextも必要です。

$ brew install gettext 

ビルド

cmakegettextを検出してくれないようなので、パスに追加しておきます。

$ export PATH=/usr/local/opt/gettext/bin:$PATH

アーカイブの展開

$ tar jxf inkscape-0.92pre2.tar.bz2
$ cd inkscape-0.92pre2
$ mkdir build
$ cd build 

gmockgtestをダウンロードするためのスクリプトがあるのでこれを実行します。

$ bash ../download-gtest.sh

cmake

Xcode付属のコンパイラOpenMPに対応していないので-D WITH_OPENMP=OFFを指定。GCC 6でもトライしましたが、コンパイルに失敗します。

$ cmake  -D Intl_INCLUDE_DIR=$(brew --prefix gettext) -D WITH_OPENMP=OFF ..

以下参考までに私の環境での出力。

------------------------------------------------------------------------
Configuration Summary
------------------------------------------------------------------------
PROJECT_NAME:            inkscape
INKSCAPE_VERSION:        0.92pre2
INKSCAPE_DIST_PREFIX:    inkscape-0.92pre2

CMAKE_BINARY_DIR:        /Users/atuyosi/workspace/inkscape-0.92pre2/build
CMAKE_INSTALL_PREFIX:    /usr/local
PACKAGE_LOCALE_DIR       /share/locale
CMAKE_SYSTEM_NAME:       Darwin
CMAKE_SYSTEM_VERSION:    16.0.0
CMAKE_SYSTEM_PROCESSOR:  x86_64
CMAKE_C_COMPILER:        /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
CMAKE_CXX_COMPILER:      /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
CMAKE_BUILD_TYPE:        Release

ENABLE_LCMS:             ON
ENABLE_POPPLER:          ON
ENABLE_POPPLER_CAIRO:    ON
GMOCK_PRESENT:           ON
WITH_DBUS:               OFF
WITH_GNOME_VFS:          OFF
WITH_GTK3_EXPERIMENTAL:  OFF
WITH_GTKSPELL:
WITH_IMAGE_MAGICK:       ON
WITH_LIBCDR:             OFF
WITH_LIBVISIO:           OFF
WITH_LIBWPG:             OFF
WITH_MESH:               OFF
WITH_NLS:                ON
WITH_OPENMP:             OFF
WITH_PROFILING:          OFF
------------------------------------------------------------------------
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/atuyosi/workspace/inkscape-0.92pre2/build

ビルドの前に

[2016/12/22 追記]

下記のコマンドを実行すると、inkscape-version.cppが生成されるので手作業での修正は不要。

$ make inkscape_version

[追記ここまで]

本来必要な/inkscape-version.cppというファイルが生成されません。よって雛形をコピーしてどうにかします。もちろん正しい対処ではありませんが、どのみちベータ版なので。

ソースアーカイブを展開したフォルダのCMakeScripts/inkscape-version.cmakeが生成するファイルのようですが、なぜか実行されません。CMake自体に詳しくないので未調査です。

$ cp ../src/inkscape-version.cpp.in src/inkscape-version.cpp

CMakeがリビジョンを埋め込むであろう箇所を修正します。

$ vi src/inkscape-version.cpp

$REVISION を適当に書き換えて保存。

ビルドとインストール

いたって普通です。

$ make -j2
$ sudo make install

起動してみる

$ /usr/local/bin/inkscape  &

いつもとは違ってXQuartz なしで起動します。いわゆるネイティブ版としてビルドしてしまっている模様。コンパイル時点で指定しないといけないのか?

f:id:atuyosi:20161023031147p:plain

コンフィグレーション時点でGTK backend が云々とかいうメッセージが出ていたような気がするのできっとそうなんでしょう。

言語の指定が日本語(Japanese)ですがメニューは英語のままです。起動スクリプトなしでダイレクトに起動しているのがまずいのかも。

f:id:atuyosi:20161023031208p:plain

gettextはちゃんと検出されてたはず……。

日本語入力

XQuartzなしで動作しているせいか良くわかりませんが、ダイレクトに入力できます。

f:id:atuyosi:20161023031012p:plain

ただし変換中の文字が表示されません。これはGTK+のパッチが当たっていないとかかな?

また「英数」キーや「かな」キーを押すとフォーカスが外れる現象に遭遇しています。

関連:Mac OS X版GTK+の日本語入力対応 その後 - ククログ(2013-12-26)

課題など

あんまり深追いする気はないですが書くだけ書いておきます。

  • XQuartzなしでちゃんと動くのか?
  • GTK+ 2がいいのか GTK+ 3がいいのか?
  • 正式版はどうなるのか
  • Inkscape.app の生成
  • 日本語化


macOS向けのInkscape.appを生成するスクリプトが付属しているのは確認済みですが、MacPortsが前提のようで上手くいっていません。パッケージ名が違うのが原因でうまく行きません。


以下参考。

$ brew install gtk-engines
$ brew install  gtk-murrine-engine
$ packaging/macosx/osx-app.sh  -s -py /usr/lib/python2.7/ -l /usr/local/lib/ -b build/bin/inkscape -p packaging/macosx/ScriptExec/Info.plist

CREATE INKSCAPE APP BUNDLE

Python modules will be copied from /usr/lib/python2.7/.
Missing gtk2-murrine -- please install gtk2-murrine and try again.  

試していませんが、シンボリックリンクで解決するかも。

まとめ

0.92で日本語まわりの問題がどうなるのかは不明ですが、展開したソースツリーを見る限りでは期待薄に思われます。

今回はOSXネイティブ版としてビルドした関係でダイレクトに日本語が入力できていますが、正式版がどうなるかはよくわかりません。

正式版の0.92で相変わらず起動スクリプトがバグったままならいっそのこと自前でビルドして使うのもありかも。


できるクリエイター Inkscape 独習ナビ Windows&Mac対応

できるクリエイター Inkscape 独習ナビ Windows&Mac対応