mieki256's diary



2019/11/14(木) [n年前の日記]

#1 [gimp] Windows10上でGIMP 2.10をビルドできるか実験

Windows10 x64 1903上で、texturize プラグインをビルドして .exe をゲットしたいなと。textrize 2.1 のソースを解凍して ./configure をしてみたものの、「gimp 2.2 以上が必要だよ」みたいなメッセージが出てきて先に進まない。

これはつまり、GIMP本体をビルドできる環境が整ってないと、プラグインもビルドできないということだろうか…?

であれば、Windows10 + msys2 上で GIMP がビルドできそうなのか、一つ試してみようかなと。

ググったところ、ビルドの手順は以下で紹介されているように見えたので、参考にしながら作業。

_Hacking:Building/Windows - GIMP Developer Wiki

一部の作業はできなかったけど、大半の作業は通った。

※ 2019/11/15追記。msys2 を使ってGIMPのプラグインをビルドするだけなら、GIMP をビルドする必要は無かった。パッケージをインストールすれば、プラグインをビルドできる状態になる。

必要なパッケージを入手。 :

今回は 32bit 版の exe を作りたいので、MSYS2 MSYS (32bit) を起動。必要なパッケージを、pacman を使ってインストールしていく。

インストール済みのパッケージの更新。
pacman -Syu

32bit版は、*-i686-*。64bit版は、*-x86_64-*。なので、mingw-w64-i686-xxxx をインストールしていった。

pacman -S base-devel mingw-w64-i686-toolchain git mingw-w64-i686-asciidoc mingw-w64-i686-drmingw mingw-w64-i686-gexiv2 mingw-w64-i686-ghostscript mingw-w64-i686-glib-networking mingw-w64-i686-graphviz mingw-w64-i686-gtk2 mingw-w64-i686-iso-codes mingw-w64-i686-json-c mingw-w64-i686-json-glib mingw-w64-i686-lcms2 mingw-w64-i686-lensfun

pacman -S mingw-w64-i686-libheif mingw-w64-i686-libraw mingw-w64-i686-libspiro mingw-w64-i686-libwebp mingw-w64-i686-libwmf mingw-w64-i686-meson mingw-w64-i686-openexr mingw-w64-i686-poppler mingw-w64-i686-python2-pygtk mingw-w64-i686-SDL2 mingw-w64-i686-suitesparse mingw-w64-i686-vala mingw-w64-i686-xpm-nox

pacman -S mingw-w64-i686-gtk3 mingw-w64-i686-python3-gobject mingw-w64-i686-appstream-glib mingw-w64-i686-libarchive mingw-w64-i686-luajit mingw-w64-i686-jsoncpp mingw-w64-i686-jq mingw-w64-i686-jsonrpc-glib mingw-w64-i686-nlohmann_json mingw-w64-i686-gobject-introspection

ちなみに。
  • pacman -Ss hoge で、パッケージの検索。
  • pacman -S hoge で、パッケージのインストール。

gitが動かない。 :

Web上から git を使ってアレコレ入手するのだけれど、何故か msys2 上で git が動かない。妙なエラーが出てくる。

ググってみたら、こういう場合は rebase.exe だの rebaseall だので、何かをしないといかんらしい。何をしているのだろう…。

_CygwinでCan't fork()とかのエラーが出た時の対処法
_Windows10にアップグレードしたらmingw/msysが使えなくなった場合の対応 ・ As you like.

C:\msys32\usr\bin\ でコマンドプロンプトを起動して、ash.exe を実行。
cd /bin
./rebaseall
exitで抜ける。

何をしてくれたのかは分からんけど、git が使えるようになった。

環境変数を設定。 :

~/.bash_profile に、前述のページに記載されてた内容を追記。
export PREFIX=`realpath ~/prefix`
export PATH="$PREFIX/bin:$PATH"
export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="$PREFIX/share/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="$PREFIX/lib:$LD_LIBRARY_PATH"
export XDG_DATA_DIRS="$XDG_DATA_DIRS:$PREFIX/share:/usr/local/share/:/usr/share/"

export ACLOCAL_FLAGS="-I/c/msys32/mingw32/share/aclocal"

export MAKEFLAGS=-j4

ACLOCAL_FLAGS だけ、32bit版用にちょっと変えてみた。

msys2 を一旦終了。

コレ、要するに、~/prefix というディレクトリの中に、ビルドした成果物をインストールしていくための設定らしい。

このあたり、何も設定しないで作業すると、msys2 だか mingw32 だかのシステムが入ってるディレクトリに、野良ビルドされた怪しいアレコレを平気で上書きインストールしちゃうので、別途ディレクトリを作って、そちらにインストールしていくことで事故を避ける、ということなのだろうと思う。たぶん。自信無いけど。

libmypaintをビルド。 :

GIMP 2.10 のビルド時には必要になるらしい、libmypaint をビルドする。

MSYS2 MinGW 32-bit (32bit) を起動。

今回は、~/build というディレクトリを作って、その中で作業していくことにした。
mkdir ~/build
cd ~/build

git でソース群を入手して、ビルド。
git clone https://github.com/mypaint/libmypaint.git
cd libmypaint
git checkout tags/v1.4.0
./autogen.sh
./configure --prefix=$PREFIX
make
make install
cd ..

件の解説ページでは v1.3.0 タグに切り替えてたけど、後で GIMP をビルドする際に「v1.4.0 じゃないとクラッシュするよ」と言われたので、今回は v1.4.0 タグに切り替えてる。

mypaint-brushesをビルド。 :

git clone https://github.com/mypaint/mypaint-brushes
cd mypaint-brushes
git checkout v1.3.0
./autogen.sh
./configure --prefix=$PREFIX
make
make install
cd ..

ほとんどデータらしくて、make してもコンパイルはされなかったように見えた。

bablとgeglをビルドしようとしてハマる。 :

libmypaint, mypaint-brushes はビルドとインストールができた。

babl も、ビルドとインストールができたけど…。しかし、gegl はビルドができない。

そもそも git clone したソレには autogen.sh が無いのに、件のページでは ./autogen.sh を実行することになってる。ファイル一覧からすると、ここは meson を使うのではないかな…。

しかし、meson を実行後に、ninja を実行すると、glib-2.0 がどうとかのエラーが出る。ググってみると、Windows版はココで詰まるらしい。

そもそも msys2 なら、babl と gegl がパッケージとして存在することに気づいた。であれば、わざわざ各人がビルドする必要はないんじゃないか? pacman でインストールしてみる。

pacman -S mingw-w64-i686-babl mingw-w64-i686-gegl mingw-w64-i686-ffmpeg

インストール時に、ffmpeg もインストールを推奨されたので、一応インストール。

GIMPをビルド。 :

この状態で gimp-2.10 をビルド。

git clone -b gimp-2-10 --single-branch https://gitlab.gnome.org/GNOME/gimp.git
cd gimp
./autogen.sh --prefix=$PREFIX --disable-gtk-doc --with-gimpdir=GIMP/git-master --with-javascript=force --with-lua=force
make
make install
cd ..

ビルドできちゃったように見える…。~/prefix/ 以下に、なんか GIMP関係っぽいファイルがたくさん入ってる…。

msys2上で、~/prefix/bin/ 以下の gimp.exe を実行したら、pythonw.exe が無効だのなんだの文句を言われながらも、一応起動してしまった。

ちなみに、GIMP のバージョンは 2.10.15 だった。

コマンドプロンプトから実行してみたら、「.dllがねえよ」と文句を言われて起動しなかった。おそらく、必要な .dll を、msys2 だか mingw32 だかのシステムからコピーしてきたら、動いてしまうのでは…。今回はそこまで試さないけど。

texturizeプラグインをビルド。 :

GIMPがビルドできる環境になったはずなので、これなら GIMP のプラグインもビルドできるのではないか。試してみる。

元々の目的だった、texturizeプラグインをビルドしてみたい。

_lmanul/gimp-texturize: Texturize plugin for the GIMP

cd ~/build
git clone https://github.com/lmanul/gimp-texturize.git
cd gimp-texturize
./autogen.sh --prefix=$PREFIX
make

src/ 以下に、texturize.exe というファイルができた。マジか。

これを、GIMP 2.10.14 Portable 32bit samj版から使えるように設定。任意のフォルダを作成して、texturize.exe をコピーして、GIMP の、編集 → 設定 → フォルダ → プラグイン → texturize.exe のあるフォルダを追加登録。

使ってみたところ、生成画像サイズが小さい場合は、一応動いてくれた。ちなみに、実行すると何故かDOS窓が開く。でも一応動く。

しかし、生成画像サイズを大きくすると、最後の最後で、DOS窓に何かエラーメッセージを一瞬出してクラッシュする。Webで公開されてた texturize 2.1 と、ほとんど同じ動作のような気がする…。

どうしてDOS窓が開くのだろうと思っていたけれど、クラッシュする時にエラーメッセージを確認できるから、むしろ都合がいいのだな。

何にせよ、どうやら元々のソース側に、何かバグがあるような予感。大量にメモリを確保して処理する場面では、何か問題が起きてしまう作りになっているのだろう…。

ひょっとすると、Debian Linux で用意されてるパッケージなら、そのあたり修正されているのかもしれない。が、Debianのパッケージのソースって、どうやって入手すればいいのだろう…?

gimptoolなるものがあるらしい。 :

関連情報をググっているうちに知ったのだけど、どうやら GIMP には、gimptool なる、プラグラインをビルドするためのツールが用意されていたようで。単一ファイル の .c だけなら、渡すだけでビルドして実行バイナリを作ってくれるらしい。

ただ、あくまで、*NIX上ではそんなツールがあるよ、という話のようで。Windows上で使えるのかどうかは分からなかった。

GIMPのビルドは必要なのだろうか。 :

~/prefix/ 以下を眺めていて気付いたのだけど、中に入ってるファイル群は、Windows用のGIMPバイナリのほうでも持っているように見えるなと…。

bin
etc
include
lib
share

*.pc、*.a、*.la、*.h 等々が入ってるけど、コレ、GIMP 2.10.14 Portable 32bit samji版も、ほとんど入っているような気がする。

すると、ひょっとして、環境変数関係をそれらしく設定できれば、わざわざ GIMP をビルドしなくても、GIMPのプラグインをビルドできる状態になったりするのではあるまいか。

と思って試してみたけれど、環境変数 PREFIX や PKG_CONFIG_PATH その他を samj版のインストールフォルダに設定した程度では、gtk/*.h が not found とかのエラーが出てしまうようで。

でも、ちゃんと設定できたら、ビルドができそうな気がする…。やり方が分からんけど…。

ファイルサイズについて。 :

  • GIMPのソースその他が入ってる ~/build/gimp/ ディレクトリは、1.11GB。
  • GIMPの実行バイナリその他が入っている ~/prefix/ ディレクトリは、312MB。

HDDの容量は、このくらい消費される模様。

2019/11/15追記。 :

ググってたら、そもそも mingw-w64-i686-gimp というパッケージが存在することに気づいた。まさか…。

設定した環境変数をコメントアウトして、pacman -S mingw-w64-i686-gimp でパッケージをインストールして、texturizeプラグインをビルドしてみたら、フツーに .exe が生成されてしまった。

わざわざ GIMP のビルドをする必要は無かった…。Windows + msys2 なら、GIMPパッケージをインストールするだけで、プラグインをビルドできる環境は整ってしまうのだな…。

libmypaint も、mypaint-brushes も、ビルドする必要はなかった。そっちもパッケージがあった。ギャフン。

以上、1 日分です。

過去ログ表示

Prev - 2019/11 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project