Skip to content

Instantly share code, notes, and snippets.

@atuyosi
Last active February 12, 2017 08:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save atuyosi/394d47473b6f0c91d731f7fb9aa9f56d to your computer and use it in GitHub Desktop.
Save atuyosi/394d47473b6f0c91d731f7fb9aa9f56d to your computer and use it in GitHub Desktop.
Inkscapeパッケージ(macOS)作業メモ

macOS Native (Gtk2/Quartz) のパッケージ(Inkscape.dmg)を作成する

  • Inkscape 0.92
  • Gtk 2
  • App bundle
  • Inkscape.dmg

必要なもの

  • Xcode
  • Intell Mac
  • Command Line Tools
  • MacPorts

Xcodeはライセンス認証が完了している必要があります。

Patches

修正したパッケージ作成スクリプト、パッチの類は以下にあります。

https://www.dropbox.com/sh/a0gjwf0u0ymrkl5/AACTDMZ68Gv_Ew6p2D1bVDkna?dl=0

準備

公式サイトからソースコードをダウンロードし、展開します。

$ tar zxf inkscape-0.92.0.tar.bz2
$ cd inkscape-0.92.0

展開したソースコードの直下にあるInfo.plist.inを修正しておきます。

$ cp Info.plist.in Info.plist
$ vi Info.plist

バージョン番号を埋め込む箇所に@VERSION@という箇所があるので、これをビルドするバージョンに置き換え。

-> @VERSION@ to 0.92

CMakeLists.txtにパッチを当てる。パッチは上記のdropboxのリンクから入手。ファイルがpatchesフォルダにあると仮定しています。

$ patch -p0 < patches/CMakeLists.txt.patch

Patch for packaging

同じ要領でパッチを当てます。osx-app.shは上書きで。

$ cd packaging/macosx/
$ patch -p0 < patches/fix_lp476678.patch
$ cp patches/osx-app.sh osx-dmg.sh

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

まずは必要なツールなど。

$ sudo port install libiconv wget cmake

下記のコマンドで必要なパッケージを確認できます。

$ port deps inkscape

オプションとして+quartz -x11`を追加してインストールします。

まず基本的なパッケージから。

$ sudo port install pkgconfig autoconf automake libtool intltool perl5.24 +quartz -x11
$ sudo port install cairo pango +quartz -x11
$ sudo port  install  gdk-pixbuf2 -x11 +quartz

残りのパッケージ。

$ sudo port install desktop-file-utils  popt  boehmgc  gsl  gtkmm  dbus-glib  lcms2  poppler  boost  ImageMagick  libcdr-0.1  libexif  libvisio-0.1  libwpg-0.3  aspell  gtkspell2  potrace  py27-lxml  py27-numpy +quartz -x11

Exstentionのために下記のパッケージを追加でインストール(2017/02/12 追記)。

sudo port install py27-lxml

面倒であれば以下のように、一度Inkscapeそのものをインストールすれば勝手に依存パッケージが一式インストールされます。

$ sudo port install inkscape +xquartz
$ sudo port uninstall inkscape

[Option] もしGNOME VFS を有効にしたいのであれば、追加でgnome-vfsmm をインストールしてください(任意)。

sudo port install gnome-vfsmm

Prepare working directory

作業用のフォルダを作成して移動します。テスト用のツールをダウンロードするためのスクリプトを実行しておきます。

$ mkdir build && cd build
$ bash ../download-gtest.sh

Configuration via CMake

ビルドに用いるMakefileを生成するため、CMakeを使用します。 Mountain Lion とそれ以降の場合でオプションを変える必要があるので注意してください。

for Sierra:

CXXFLAGS="-std=c++11" CPPFLAGS="-I/opt/local/include" LDFLAGS="-L /opt/local/lib " cmake -D WITH_OPENMP=OFF -D ENABLE_OSX_APP_LOCATIONS=ON -D ICONV_INCLUDE_DIR=/opt/local/include -D ICONV_LIBRARIES=/opt/local/lib/libiconv.dylib   -DCMAKE_INSTALL_PREFIX=/opt/local ../

for moutain lion :

CXXFLAGS="-std=c++98 -stdlib=libstdc++" CPPFLAGS="-I/opt/local/include" LDFLAGS="-L /opt/local/lib " cmake -D WITH_OPENMP=OFF -D ENABLE_OSX_APP_LOCATIONS=ON -D ICONV_INCLUDE_DIR=/opt/local/include -D ICONV_LIBRARIES=/opt/local/lib/libiconv.dylib   -DCMAKE_INSTALL_PREFIX=/opt/local ..

バイナリの作成

$ make -j2

コンパイル作業を行うマシンのコア数に応じて-jの後ろの数字を変更してください。

インストール

一時的にコンパイルしたバイナリを/opt/local/にインストールします。

$ sudo make install

パッケージ作成スクリプトの仕様上、バイナリの存在するフォルダと、依存パッケージのインストール先のフォルダが同じフォルダの配下に存在する必要があります(一つ上のフォルダが共通であるということ)。

この場合、バイナリが/opt/local/bin、ライブラリが/opt/local/libとなり、どちらも/opt/local配下ということになります。

パッケージの作成

パッケージ作成スクリプトの存在するフォルダへ移動。

$ cd ../packaging/macos

パッケージ作成スクリプトが必要とするパッケージをインストール。

$ sudo port install gtk-engines2 gtk2-murrine +quartz -x11
$ sudo port install gtk3 gnome-themes-standard +quartz

ビルド時には必要ないのにこのタイミングでインストールを要求されるのは不自然に思います。 gonome-themes-standardに関しては所定の位置にファイルがあればいいように思います。

アイコンのファイル名を変更するためのツールをインストール。

$ sudo port install icon-naming-utils

パッケージ作成スクリプトを実行します。

$ ./osx-app.sh  -s -py /usr/lib/python2.7/ -l "/opt/local"  -b /opt/local/bin/inkscape  -p ../../Info.plist

作業フォルダにInstall.appが作成されるのでまずはダブルクリックで起動を確認。

Sierraでビルドした場合は、追加でfix_SierraBuild.patchパッチを当てる必要があります。

問題がなければ下記のコマンドを実行し、Inkscape.dmgを作成。

$ ./osx-dmg.sh -p Inkscape.app

Inkscape.dmgをダブルクリックすると、おなじみのウィンドウが表示されるので、アイコンを右から左にドラッグすると、パッケージがインストールされるはず。

もし表示されるアイコンと背景がずれる場合は何かがおかしいです。

原因は不明ですが、外付けモニタを接続していない状態でコマンドを実行したところ、正常なdmgになっていました。

後始末

一時的にインストールしたバイナリを削除しておく。

$ cd -
$ sudo make uninstall

おしまい。

@atuyosi
Copy link
Author

atuyosi commented Feb 12, 2017

エクステンションの動作のためにpy27-lxmlが追加で必要。エクステンションによってはUniconvertor、sk1libsが必要なので、macOS向けのバイナリを確保する。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment