試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

gedit上でのValaコード記述に便利なvtgのインストールメモ(2009/7/3現在)

GNOMEテキストエディタgedit上でVala言語のプログラムを記述するのに便利なvtg(Vala Toys for gEdit)(code.google.com/p/vtg/)というプラグインがある。

  1. 依存ライブラリについて
  2. vtgのダウンロードとビルド
    1. ビルドまでの道のり
    2. 一般ユーザ権限でのインストール
  3. Vala 0.7.4によるビルドエラー(Valaコンパイラの不具合)とその対処

依存ライブラリについて

このプラグインMonoDevelopなどと同様

画像のように「.」文字を入力したときに候補シンボル一覧を表示してその中から選ぶことができるようになっている関係で、GtkSourceCompletion(gtksourcecomple.sourceforge.net/)というライブラリを用いる。しかし、このライブラリはディストリのパッケージになっていないことがほとんどで、手動で入れるか自分でパッケージを作成するかのどちらかとなる。
今回Mandriva Linux向けのパッケージを作成し、別館の配布ページに公開した。
(2014/10/12)配布ページは削除済み。
この他、Valaのライブラリの開発パッケージも必要となる。

vtgのダウンロードとビルド

(2009/9/19)バージョン0.5.0がリリースされているため、以下の作業を行う必要はなくなっている。
以下、以前の内容となる。
2009/7/3現在、古いバージョンのValaとGtkSourceCompletionを対象にしたバージョン0.4.1が最新のリリース版となっているが、両方の最新バージョンに対応した更新はSubversion版で続いているため、ここではSubversionを用いてソースの取得を行うことにする。下のコマンドはプロジェクトページからのコピペ。

$ svn checkout http://vtg.googlecode.com/svn/trunk/ vtg-read-only

これでvtg-read-only以下のソースツリーの複製が得られる。

ビルドまでの道のり

$ cd vtg-read-only/
$ ./autogen.sh
./autogen.sh: line 9: gnome-autogen.sh: そのようなファイルやディレクトリはありません

中のautogen.shはうまく動かないため、手動で設定する。

$ autoreconf
configure.ac:8: required file `./compile' not found
configure.ac:8:   `automake --add-missing' can install `compile'
configure.ac:10: required file `./config.guess' not found
configure.ac:10:   `automake --add-missing' can install `config.guess'
configure.ac:10: required file `./config.sub' not found
configure.ac:10:   `automake --add-missing' can install `config.sub'
configure.ac:4: required file `./install-sh' not found
configure.ac:4:   `automake --add-missing' can install `install-sh'
configure.ac:4: required file `./missing' not found
configure.ac:4:   `automake --add-missing' can install `missing'
gen-project/Makefile.am: required file `./depcomp' not found
gen-project/Makefile.am:   `automake --add-missing' can install `depcomp'
configure.ac:10: required file `./ltmain.sh' not found
autoreconf: automake failed with exit status: 1
$ autoreconf --install
configure.ac:8: installing `./compile'
configure.ac:4: installing `./install-sh'
configure.ac:4: installing `./missing'
gen-project/Makefile.am: installing `./depcomp'
$ ./configure --prefix=[インストール先接頭辞]
(中略)
config.status: creating ui/Makefile
config.status: creating images/Makefile
config.status: error: cannot find input file: po/Makefile.in.in
$ intltoolize
$ ./configure --prefix=[インストール先接頭辞]
(中略)
 ---{ vtg 0.5.0 }---

    prefix:                        [インストール先接頭辞(「--prefix=」の値)]
    sysconfdir:                    ${prefix}/etc
    localstatedir:                 ${prefix}/var
    C Compiler:                    gcc
    CFLAGS:                        -g -O2
    Vala Vapidir:                  /usr/share/vala/vapi
    Enable gen-project:            yes
    Enable vsc library:            yes
    Enable vtg:                    yes
    Enable vsc-shell:              yes
(正常終了・後はmake, sudo make install-stripと続ける)

色々試した結果「autoreconf --install」とintltoolizeを実行すればよいことが分かった。
インストール先指定は実際には--prefix=/usrのようにgeditと同じインストール先に指定することになる。
もしValaが/usr以外にインストールされている場合はconfigureスクリプト--with-vapidir=[Valaのインストール先]/share/vala/vapiオプションも指定し、configureスクリプト実行後の「Vala Vapidir」を見て設定を確認する。

一般ユーザ権限でのインストール
一般ユーザ権限でホームディレクトリの中のgeditプラグインディレクトリへインストールを行うこともでき

$ ./configure --prefix=${HOME}/.gnome2/gedit/plugins
$ make
$ make install-strip libvtgdir=${HOME}/.gnome2/gedit/plugins

のようになる。

Vala 0.7.4によるビルドエラー(Valaコンパイラの不具合)とその対処

リビジョン314(2009/7/3)の時点では途中でビルドエラーが発生する。

 gcc -DHAVE_CONFIG_H -I. -I.. -pthread -DORBIT2=1 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gedit-2.20 -I/usr/include/gtksourceview-2.0 -I/usr/include/libxml2 -I/usr/include/gtksourcecompletion-2.0 -I/usr/include/vala-1.0 -I/usr/include/gconf/2 -I/usr/include/orbit-2.0 -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -DPACKAGE_DATADIR=\"/usr/share/vtg\" -include ../config.h -I ../vsc -I ../vbf -O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -MT vtgbracketcompletion.lo -MD -MP -MF .deps/vtgbracketcompletion.Tpo -c vtgbracketcompletion.c  -fPIC -DPIC -o .libs/vtgbracketcompletion.o
vtgbracketcompletion.c: In function ‘vtg_bracket_completion_get_type’:
vtgbracketcompletion.c:604: error: ‘vtg_bracket_completion_type_id’ undeclared (first use in this function)
vtgbracketcompletion.c:604: error: (Each undeclared identifier is reported only once
vtgbracketcompletion.c:604: error: for each function it appears in.)
vtgbracketcompletion.c: In function ‘vtg_bracket_completion_register_type’:
vtgbracketcompletion.c:610: error: ‘vtg_bracket_completion_type_id’ undeclared (first use in this function)
make[4]: *** [vtgbracketcompletion.lo] Error 1
make[4]: Leaving directory `/home/mandrake/rpm/BUILD/vtg-read-only/vtg'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/mandrake/rpm/BUILD/vtg-read-only/vtg'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/mandrake/rpm/BUILD/vtg-read-only/vtg'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/mandrake/rpm/BUILD/vtg-read-only'
make: *** [all] Error 2

この件については
http://web.archive.org/web/20110126045318/http://mail.gnome.org/archives/vala-list/2009-June/msg00220.html
に書かれている通りValaの不具合が原因とのことでパッチもあるため、これを適用したVala本体のMandriva Linux向けパッケージを作成し別館の配布ページに公開した。修正済みのValaを用いるとこのエラーは出なくなった。
vtg自体のパッケージも別館の配布ページに公開した。
(2009/9/27)バージョン0.5.0へ更新した。Valaは2010.0のバージョン0.7.6を使用する。
(2014/10/12)配布ページは削除済み。
バージョンは正式リリース版ではないので.specファイルで

%define name           vtg
%define version        0.5.0
%define rel            0.20090703
%define release        %mkrel %{rel}
%define subrel         1

として「0.5.0-0.20090703.1kkr2009.0」のようになるようにした(リリース番号が「0」で開始される形)。

使用したバージョン:

  • Vala 0.7.4
  • gedit 2.24.0
  • vtg リビジョン 314