Inkscape 0.92.2 がリリースされている……
いつの間にかリリースされてるし。
Download Inkscape 0.92.2 (0.92.2) | Inkscape
最近開発者メーリングリストをちゃんと見ていないので不意打ちに近い……。
変更点
機能面ではデータのインポート、エクスポート関連の改善ほかバグフィックスが中心みたいです。
Release notes/0.92.2 - Inkscape Wiki
開発者目線からするとソースコードのバージョン管理(とプロジェクト管理)が今までのLaunchpadとBazaarの組み合わせからGit/Gitlabに移行したので、開発に参加しやすくなっているはず。
完全に移行したわけじゃなくて、wikiとかwebサイト自体は従来のまま。
macOS向けとしては公式バイナリが(今回は)最初からリリースされてます。
MacPorts、Homebrew(cask-formula) の方はまだ古いまま、かな。プルリク遅ればいんだけど、MacPortsは環境を壊してしまったのでちょっと厳しい。
日本語化について(macOS)
公式バイナリを試した限りではmacOS環境における日本語表示を選ぶと起動時に落ちる問題は解決しているようです。
よって、今までのような小細工は不要です。
Tim Sheridan氏の貢献によるもの。
Inkscapeの日本語化の記事は整理しようと思います。
未解決のバグ
macOSにおける日本語入力の問題はそのままです。そのほか日本語がらみのバグは進展なし。
というか誰もちゃんと報告してない?。
日本語の入力の問題に関しては従来通りコピペで凌ぐか、XQuartzなしでビルドするか*1、です。
quartzバックエンド版*2のバイナリを作るかは保留です。
まとめ
以前のロードマップでは4月に出るはずだった気もしなくはないですが、着実に開発が続いているのは非常に良いことかと。
今回はすんなりmacOS向けの公式バイナリもリリースされたのでめでたしめでたし。
とりあえず公式バイナリ入れて見ただけです。
取り急ぎ ?
[2017/08/11 追記]
予約投稿済みのエントリを再編集しようとして放置した後に再度予約投稿ボタンを押したら削除して再投稿みたいになってしまったかな?
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相当のプレリリース版はその辺の日付だった。
macOS に Uniconvertor (ver 1.x) をインストールする
何の因果かわかりませんが、微妙な時期に絶妙にマイナーなユーティリティのインストールについてのエントリを書いております。
どうやらInkscapeのエクステンションの中にこいつを要求するものがあるらしい。そして以前のmacOS向けパッケージにはバンドルされていたそうで。
そしてmacOS向けのバイナリは配布されていなし、MacPortsにもない…。
[2017/02/16 追記]
InkscapeのソースコードにMacPorts用のPortfileが含まれているのでそれを使う方が楽でした。
なんとも微妙な気分です。
ソースファイルを展開したディレクトリの、下記のファイルを適当なディレクトリにコピーし、あとはMacPorts側の設定を変更してやればいけるはず。
packaging/macosx/ports/python/py-uniconvertor/Portfile
[追記ここまで]
手順は基本的に以下のサイトを参考にする。
How to install Uniconvertor (command-line app) on Mac OS 10.7.2 (Lion)? - Super User
というかほとんどそのままです。
準備
まず必要なファイルを入手してくる。
- uniconvertor-1.1.5.tar.gz
- uniconvw-1.1.5.tar.gz
- sk1libs-0.9.1.tar.gz
依存パッケージをインストール。freetype2 など色々と必要なようだがInkscapeビルドするための依存パッケージをインストールすればほとんど揃っているはずなので省略。
Inkscapeが要求するのはlcms2
だけどUniconvertorが要求するのはlcms
。
$ sudo port install lcms
MacPorts と Python
面倒なことに、OS標準のPython 2.7と、MacPortsのPython 2.7の両方が存在している。他のライブラリとの兼ね合いからすると、MacPorts側でないと不都合がある。
そのため、明示的にMacPorts側のPythonを呼び出す。
MacでPython環境を作る時に気をつける事 - Qiita
上記のページを参考に、それぞれインクルードパスとインストール先を確認する。
OS標準のPython の場合
$ which python /usr/bin/python
インクルードパス:
$ /usr/bin/python -c "import site; print(site.getsitepackages())" ['/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/site-python', '/Library/Python/2.7/site-packages']
モジュールのインストール先:
$ /usr/bin/python -c "import distutils.sysconfig as s; print(s.get_python_lib())" /Library/Python/2.7/site-packages
MacPorts (Python 2.7)の場合
$ which python2.7 /opt/local/bin/python2.7
インクルードパス:
$ /opt/local/bin/python2.7 -c "import site; print(site.getsitepackages())" ['/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages', '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/site-python']
モジュールのインストール先:
$ /opt/local/bin/python2.7 -c "import distutils.sysconfig as s; print(s.get_python_lib())" /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
ビルドとインストール
Pythonのライブラリによくあるsetup.py
によるインストール。
アンインストール用のタスクのようなものは存在しないみたいなので、削除する場合は手作業。
sk1libs
いつも通りソースを展開。
$ tar zxf sk1libs-0.9.1.tar.gz $ cd sk1libs-0.9.1
python2.7
の部分は環境に応じて変更する必要があります。少なくともMacPortsを利用して必要なライブラリをインストールしている場合はOS標準の方ではなく、MacPortsでインストールしたPython 2系を指定。
$ LDFLAGS="-L/opt/local/lib" CFLAGS="-I/opt/local/include -I/opt/local/include/freetype2" python2.7 setup.py build
問題がなければインストール。
$ sudo python2.7 setup.py install
MacPortsのPython2.7のインクルードパスにインストールするのが目的であるので、最後に以下のように出力されていればOK。
Writing /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sk1libs-0.9.1-py2.7.egg-info
Uniconvertor
同じ要領で。
$ tar zxf uniconvertor-1.1.5.tar.gz $ cd uniconvertor-1.1.5 $ LDFLAGS="-L/opt/local/lib" CFLAGS="-I/opt/local/include -I/opt/local/include/freetype2" python2.7 setup.py build
ビルドに成功したらインストール。
$ sudo python2.7 setup.py install
動作の検証
実行時にpython-imaging、python-reportlabを要求するので対応するパッケージか代替品をインストールする。
$ sudo port install py27-Pillow $ sudo port install py27-reportlab
インストール先のディレクトリがパスに追加されていないので絶対パスで指定して実行。
$ /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/uniconvertor 変換したいファイル 変換後のファイル名
フォーマットは拡張子で自動判別される。
対応しているフォーマットは本家のサイトへ。
UniConvertor vector graphics translator
なお、PythonのパスがハードコーディングされているのでmacOS標準の方のPythonが呼び出されたりはしない。/usr/local/bin
にシンボリックリンクを作成しておくといいと思う。
uniconvw
GUIのラッパースクリプトらしいです。InkscapeのExtentionからすると不要な気がしますが一応。動くかどうかは試していません。
上記と同じ要領でインストールすればいいはずだが、/usr/share/applications
にディレクトリを作成しようとしてこける。対処法としては
setup.py
の103行目以降の、ハードコーディングされている/usr/share
を/usr/local/share
、またはインストール先ディレクトリに合わせて変更する。
そのほか
注意点など
CorelDRAW(.cdr
)形式のファイルの変換をサポートしていると記載されていますが、新しいバージョンのファイル形式はサポートされていないようです。Googleでfiletype:cdr
としてヒットするファイルで試しても変換不能でした。スタックトレースとともに以下のメッセージで変換できませんでした。
raise SketchLoadError(_("Parsing error: ")+ str(value)) app.events.skexceptions.SketchLoadError: Parsing error: unrecognised file type
また、Inkscapeで作成したSVGファイルについても、モノによっては処理が終了しないケースがあるようです。具体的な条件は良く分かりません。 エラーを吐かずにコマンドプロンプトが帰ってこない状態になります*1。
LInux 向け情報
Ubuntu 16.04 のuniconvertor (python-uniconvertor)は動かないようです。
- Bug #1597322 “necessary sk1libs isn’t packaged” : Bugs : python-uniconvertor package : Ubuntu
- #820748 - uniconvertor: ImportError: No module named sk1libs.utils.fs - Debian Bug report logs
展開したソースに含まれるREADMEなどではプロジェクトのURLが"http://sk1project.org"という記載になっていますが、現在のURLは"http://sk1project.net"です。
なお、現在ダウンロードできるバージョン 1.1.5のLinux向けパッケージはUbuntu 10向けだったりとても古いです。
最新版について
どうやら2.0のリリース候補(RC)版が存在するようです。
sK1 2.0 (ex.PrintDesign) vector graphics editor
Only import/export filters are not implemented yet. This functionality will be subject of RC3 milestone.
と書いてあるので、変換フィルタとしては使えなさそう。RCというのはRelease Candidate(リリース候補版)だと思うんですが、重要な機能の入っていないRC版というのも不思議ですがまあ今後に期待、ということで*2。
開発中のバージョンのリポジトリはgithubにあります。READMEによるとプロジェクト名の"sK1 Project"は"K"が大文字だそうです。
- GitHub - sk1project/sk1-wx: sK1 2.0 multiplatform vector graphics editor
- GitHub - sk1project/uniconvertor: UniConvertor is a universal vector graphics translator
- sK1 Project: sK1 2.0 (ex.PrintDesign), sK1, UniConvertor, SWord
カラーパレット
このソフトを開発しているプロジェクトのサイトで各種グラフィック編集ソフト向けにカラーパレットのデータが配布されている。
sK1 Project - Free Palette Collection
カラーパレットの名称をクリックするとダウンロードページに移動する。
まとめ
とりあえず動いたようなので、次はInkscape本体のパッケージ化のリターンマッチです。
確実に言えるのはPythonインタプリタの場所をハードコーディングしている箇所は小細工が必要だろうということです。
何だか無駄に文字数が多い気がしますが、このエントリは以上です。
Inkscape 0.92 がリリースされたけど……
一月一日付でInkscapeの新バージョンがリリースされています。
Mac向けのバイナリ提供は今のところ無し。
背景?
開発者向けのメーリングリストからの断片的な情報*1によれば、 いつの間にか公式プロジェクトとしてはMac向けのバイナリパッケージは提供しないという決断をしたらしいです。
Macを保有するアクティブな開発者が不在なのか、経緯はイマイチ不明です。
Mac向けバイナリパッケージを提供しないほうが、アクティブなMac向けの開発者が参加するきっかけになるという目論見だったのでしょうか?
正式リリース告知後にMac向けのパッケージメンテナ(要するにソースからコンパイルしてアップロードする担当)の立候補者が開発者向けのメーリングリストに 登場したのが昨日。
そもそも公式プロジェクトとしてビルド用のツールとしてcmake
に移行しているのにMac向けの情報はAutotools
を使う手順のまま。
メインの開発者側としてもWikiを更新しようという動きはあるようなので、しばらく様子見中。
そのうち公式Wikiページのビルド手順も更新されるでしょうし、時間が経てば公式のパッケージが提供されるのだろうと思います。
主な新機能・変更点
- SVG2およびCSS3サポートの改善
- (SVG2の)Mesh Gradientsのサポート
- 新しいパスエフェクト
- ペンシルツールにおけるインタラクティブなスムージング
- すべての描画要素のための新しいオブジェクトダイアログ
- CSS標準との整合性(?)のためにデフォルトの解像度を90 dpiから 96 dpi に変更
“Mesh Gradients"というのはどうやらAdobeのIllustratorに存在するグラデーションメッシュに相当するようです。まるで写真のように本物らしく見えるグラフィックを作成できるとのこと。
デモ動画:Inkscape: Gradient Mesh - YouTube
解像度の変更ですが、以前のバージョンで作成したファイルを開くと確認のダイアログが表示されるようです。紙に印刷する場合など、用途によっては注意が必要かと思います。
リリースの告知文によると、今後の方針としてGUIツールキットをGTK3へ、バージョン管理システムをGitに、コードもC++11 にそれぞれ移行する方針のようです。
詳細なリリースノートは以下。CSS3の縦書きサポートの改善など日本語環境に関連しそうなものもあります。
Release notes/0.92 - Inkscape Wiki
なお、Mac環境固有のバグは修正されていないようです。
何はともあれ
MacPorts経由でインストールすることにします。 通常版ではなく、いわゆるネイティブ版としてビルド。
すでにMacPortsのパッケージ(というかビルド用のレシピ)が更新されているので、この方法でインストールするのが確実です。
XcodeそのほかMacPortsはセットアップ済みであるものとします。
※ 開発版をインストールしている場合はコンフリクトするのでアンインストール。
$ sudo port sync $ sudo port install inkscape +quartz
+quartz
をつけなければ普通のXQuartzに依存したばいなりになります。
注意点
Sierraでビルドした場合の問題はそのままみたいです。そのままの日本語ロケールだと異常終了するので下記のように起動。
$ LANG=ja_JP inkscape
関連するバグなど
- #52632 (Inkscape-app quits immediately after install) – MacPorts
- #52248 (inkscape, inkscape-devel +strict fails to build due to glibmm / glib2 deprecation misconfiguration) – MacPorts
まとめ
そのうち通常版のMac向けパッケージがリリースされると思われるので、しばらく待つほうがベターと思われます。
おしまい。
*1:昨年末からほぼROM状態ですが参加しています
MacPorts と開発版 Inkscape (0.92pre3)
普通に開発版のパッケージも提供されてるじゃないですか、MacPorts経由で。
なるほど、それでHomebrew向けの情報が無いのか……。
MacPortsだといくつかビルドしているサイトが見つかる。
しかもXQuartz非依存のパッケージを作るオプションも用意されてるという……。
なんか時代に逆行するようですが、Homebrew から MacPorts へ移行してみます。
Homebrew のアンインストール
公式サイトの指示に従う。
brew/FAQ.md at master · Homebrew/brew · GitHub
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
実行すると、以下のように問い合わせてくるので、"y"と入力。
Are you sure you want to uninstall Homebrew? [y/N]
正常に終了すると以下のようなメッセージが出る。 最後に「下記のファイルは削除しないので自分で消してくれ」という趣旨のメッセージが表示されています。
しかしながら、他のソフト(VirtualBoxやDockerなどインストーラーを使用したもの)が作成したファイルがあるので/usr/local
配下のフォルダはそのままにしておく必要があります。
==> Homebrew uninstalled! The following possible Homebrew files were not deleted: /usr/local/bin/ /usr/local/etc/ /usr/local/share/ /usr/local/var/ You may wish to remove them yourself.
MacPorts のインストール
必要なもの
Homebrew をインストールしていたのであれば不要なはずですが、念のため。
$ xcode-select --install
あとはダイアログの指示に従う。
インストーラの実行
公式サイトから使用中のmacOSのバージョンに合わせたインストーラーをダウンロード。 Sierraの場合はMacPorts-2.3.5-10.12-Sierra.pkg
。
ダウンロードしたpkgファイルをダブルクリックしてインストール開始。
アップデート
$ sudo port -v selfupdate
パッケージのデータベースの更新と、必須パッケージのアップデート。
Inkscape 開発版パッケージ
inkscape-devel
という名前で開発版をインストールすることができるようなので、これを使います。RedHat系Linuxの場合、*-devel
というパッケージ名ははヘッダファイルとスタティック形式のライブラリファイルになりますが、MacPortsでは(少なくともInkscapeの場合は)命名規則が異なるようです。
ただし、この記事を書いている時点では(macOS側の仕様変更なのかよくわかりませんが)、SierraでビルドするとLANG=Cでしか起動しないバイナリが生成されルようです。
起動する際に、以下のようにすれば回避可能。
$ LANG=ja_JP inkscape
LANG=C
でもOKですが、LANG=ja_JP.UTF-8
の場合はダメ。
XQuartz (+x11) 版
$ sudo port install inkscape-devel
XQuartzに依存したバイナリが/opt/local
配下にインストールされます。.app
形式ではないので/opt/local/bin/inkscape
。
上記の問題の関係で、以下のように起動。
$ LANG=ja_JP inkscape
自動的にXQuartzが実行され、そのあとInkscapeが起動します。
ネイティブ版
XQuartzなしで動作するバージョンとしてビルドします。
依存ライブラリも+quartz
でビルドする必要があります。万全を期すために一度依存ライブラリをアンインストールします。一時的に依存ライブラリをdeactive
することもできるようですが、確実な方法を。
$ sudo port uninstall gtk2 gtkmm cairo pango gtkspell2 pangomm cairomm harfbuzz poppler gobject-introspection atk gdk-pixbuf2 atkmm
下記のコマンドで依存ライブラリも再構築される。
$ sudo port install inkscape-devel +quartz +svg2
実行時は上記と同様に。
$ LANG=ja_JP inkscape
XQuartzに依存していないので、OS側の日本語入力を使用できるようです。ただし相変わらず未確定の文字列は表示されませんが。
.app
形式にもチャレンジしてみたい今日この頃。
関連URL
ビルドエラーとかそういうの。+strict
つけちゃダメよってことのようです。
とりあえずここまで。