awk walking St.6 - xgawk -
(写真と本文は一切、関係ありません)
リファレンス:
XMLgawk Home Page
日本 GNU AWK ユーザー会 (JGAUC)
OSC2008 Tokyo/Spring produced by JGAUC
gawk の拡張を目的として、先行開発を行っているのが xgawk です。元々は XML 対応のための拡張を行っていたので xmlgawk という名称だったようです。おそらく、現在は eXtended の意味合いで xgawk に改名されたのだと思います。以下に詳細な説明があります。
gawk とは/What's gawk?
XML 対応の他にも、以下のような機能をサポートしています。
・MPFR(Multiple Precision
Floating-Point Reliable Library) による演算
・libpq による Postgresql へのアクセス
・GD ライブラリによるグラフィック処理
サンプルプログラムが上述リファレンスの JGAUC のページにあるので参考にしてください。
インストールについて、本家のホームページからソースをダウンロードしてきてコンパイルするのも容易ですが、RPM パッケージを作成してみましたので興味のある方はお試しください。(AXS3 用)
※ 本パッケージはサポート対象外ですのでご了承ください。
AX20 用のパッケージ作成にも挑戦して、一応作成はできたのですが、サンプルプログラムを実行してみると、うまく動作しませんでした。ビルド環境の他ライブラリのバージョン等に依存しているのかもしれません。
XML をパースすると、以下のエラーが出ました。(AXS3 用のバイナリは正常に動作します)
# xgawk -l xml -f sample.awk
xgawk: sample.awk:50: fatal: cannot create XML puller
2008/03/30:追記
hi_saito さんのアドバイスのおかげで、エラー原因が別の要因だと分かりました。せっかくなので ML40(AX20) 用もアップします(GD 機能は使えません)。どうぞ、お試しください。






日本 GNU AWK ユーザー会の斉藤です。
確かにライブラリのバージョンに依存しているところはあるのですが (MPFR まわり)、XML 関連では今のところ報告されていません。
まず、ビルド後の 'make check' が通るかどうかを試していただけないでしょうか?
あと、一部の OS (または環境) では configure で '--enable-static-extensions' を付けないとビルドできないこともあるようです。
投稿: hi_saito | 2008年3月29日 (土) 21:17
斎藤さん、コメントありがとうございます。
昨日は make check がエラーになったので spec ファイルの記述から外していたのですが、ちゃんと見ると GD のテストでエラーになっていたようです。
======== Starting XML extension tests ========
These tests only work if the XML extension was successfully built.
These tests will use the dynamically loaded XML extension.
Notice that your system must have an XML parser (Expat) installed.
xmatch
xdocbook
xdeep2
xattr
xfujutf8
xotlsjis
xfujeucj
xload without BUILD_STATIC_EXTENSIONS
xincl
xuintmax
your environment supports only 32 bit integers
======== Done with XML extension tests ========
======== Starting GD extension tests ========
These tests only work if the GD extension was successfully built.
Notice that your system must have the GD graphics library installed.
xgdrect
gcc -o xgdfont.ok.exe xgdfont.ok.c -lgd `gdlib-config --libs`
/usr/bin/ld: cannot find -lXpm
collect2: ld returned 1 exit status
make[1]: *** [xgdfont.ok.exe] Error 1
make[1]: Leaving directory `/var/tmp/axbld.22226/rpm/BUILD/xgawk-3.1.6-20080101/test'
make: *** [check-recursive] Error 1
error: Bad exit status from /var/tmp/rpm-tmp.37991 (%build)
そこで、以下のように spec ファイルを修正したところ、サンプルプログラムの実行に成功しましたo(^ ^)o
# diff -uNr xgawk-ax2.0.spec.orig xgawk-ax2.0.spec
--- xgawk-ax2.0.spec.orig 2008-03-30 10:10:10.000000000 +0900
+++ xgawk-ax2.0.spec 2008-03-30 10:13:49.000000000 +0900
@@ -25,11 +25,13 @@
%setup -q -n %{Builddir}
%build
-%configure
+%configure \
+ --enable-static-extensions \
+ --disable-gd
make
#make -C doc xmlgawk.ps
#(cd doc && gzip --best *.ps)
-#make check
+make check
%install
rm -rf %{buildroot}
@@ -66,8 +68,8 @@
%{_bindir}/*
%{_mandir}/man1/*
%{_infodir}/*.info*
-%{_libdir}/%{name}
-%{_libexecdir}/%{name}
+#%{_libdir}/%{name}
+#%{_libexecdir}/%{name}
%{_datadir}/%{name}
%changelog
しかしながら、今日、実行してみると、昨日、エラーになっていたバイナリでも正常に動作しました。サンプルのプログラムの中で、 "weather.xml" がダウンロードできていなかったようです、お手数をかけました(^ ^;;
投稿: tmorimoto | 2008年3月30日 (日) 10:27