kubo39's blog

ただの雑記です。

gtkdのgtk4 branch(この時点で開発版)を試そうとしてだめだった記録

まずgtkの最新版を入れる。

$ pip install meson # わりと新しめのものにしないと動かないがち
$ git clone -o upstream https://gitlab.gnome.org/GNOME/gtk.git
$ cd gtk
$ meson --prefix /opt/gtk builddir
$ ninja -C builddir
$ sudo ninja -C builddir install

girのパスを変えたいのでそういうふうにGtkDのmakefileを書き換える。

diff --git a/GNUmakefile b/GNUmakefile
index ea077f1e..6603950a 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -6,6 +6,11 @@ PKG_CONFIG?=pkg-config
 OS=$(shell uname || uname -s)
 ARCH=$(shell uname -m || arch)
 
+ifeq ("$(OS)","Darwin")
+else
+   girdir?=/usr/share/gir-1.0
+endif
+
 ifeq (, $(shell which dpkg-architecture 2>/dev/null))
    libdir?=lib/
 else
@@ -119,10 +124,18 @@ OBJECTS_DEMO = $(shell echo $(SOURCES_DEMO) | sed -e 's/\.d/\.o/g')
 generate: generate-runtime
 
 generate-runtime: $(GIRTOD)
+ifeq ("$(OS)","Darwin")
    $(GIRTOD) -i src --use-runtime-linker
+else
+   $(GIRTOD) -i src --use-runtime-linker -g $(girdir)
+endif
 
 generate-compiletime: $(GIRTOD)
+ifeq ("$(OS)","Darwin")
    $(GIRTOD) -i src
+else
+   $(GIRTOD) -i src -g $(girdir)
+endif
 
 $(GIRTOD):
    $(if $(findstring "./wrap/girtod","$(GIRTOD)"),$(MAKE) -C wrap)

ファイルを生成。

$ prefix=/opt/gtk girdir=/opt/gtk/share/gir-1.0 make generate

pangoとかでこけるのでそこだけ一旦無視した。

ビルドしてみる。

$ prefix=/opt/gtk make gtkd

gio/NativeSocketAddress.dでg_native_socket_address_get_typeg_native_socket_address_newがないと怒られる。

そもそも/opt/gtk/share/gir-1.0にはGioのgirファイルが存在していないようだ。 gtkは依存としてglibを持っていて、mesonのファイルをみてもGio-2.0.girを生成対象としているのでビルド時になにか問題があったようだ。

そのあと少し頑張ってみたがGio-2.0.girファイルを生成することはできなかった。 これは自分の環境問題かgtk側の問題かわからない。。