yßhl

卜〒ℏ〒†こ

2014/2/8(土)12:00:00 AM

xkeystone xkeystone - yßhl を含むブックマーク

ある日、Plamo Linux に xkeystone なるコマンドがインストールされている*1事に気づいた私は、どのようなコマンドだろうかと実行して見たところ、

/usr/bin/env: nickle: そのようなファイルやディレクトリはありません

というエラーに出くわしたのである。これはもちろん nickle*2 がインストールされていないために起こった事で、nickle をインストールしてやれば解決する。

早速 nickle-2.77 をダウンロードしてビルドしようとしたのだが、

jade:/home/yasuhiro/src/nickle/nickle-2.77/doc/tutorial/intro/variables.sgml:301:6:E: 文書型はここでの要素 "SECT3" を禁止しています
jade:/home/yasuhiro/src/nickle/nickle-2.77/doc/tutorial/intro/variables.sgml:322:6:E: 文書型はここでの要素 "SECT3" を禁止しています
jade:/home/yasuhiro/src/nickle/nickle-2.77/doc/tutorial/intro/variables.sgml:357:6:E: 文書型はここでの要素 "SECT3" を禁止しています
jade:/home/yasuhiro/src/nickle/nickle-2.77/doc/tutorial/intro/variables.sgml:379:7:E: "SECT3" の終了タグが省略されていますがOMITTAG NO が指定されていました
jade:/home/yasuhiro/src/nickle/nickle-2.77/doc/tutorial/intro/variables.sgml:274:0: 開始タグはここでした
jade:/home/yasuhiro/src/nickle/nickle-2.77/doc/tutorial/advanced/concurrency.sgml:225:7:E: "PARA" の終了タグが省略されていますがOMITTAG NO が指定されていました
jade:/home/yasuhiro/src/nickle/nickle-2.77/doc/tutorial/advanced/concurrency.sgml:221:0: 開始タグはここでした
make[3]: *** [nickle-tutorial.pdf] エラー 8

と、エラーで止まってしまう。SGML で書かれたチュートリアル内に、閉じられていないタグがあるためだ。 doc/tutorial/intro/variables.sgmldoc/tutorial/advanced/concurrency.sgml に閉じタグを追加してやれば、ビルドが正常に進みインストールできた。

さて、もう一度 xkeystone を実行したところ、

Cannot autoload from file "nichrome.5c", giving up.
Cannot autoload from file "nichrome-box.5c", giving up.
Cannot autoload from file "nichrome-label.5c", giving up.
Cannot autoload from file "nichrome-button.5c", giving up.
/usr/bin/xkeystone:30: non-existant namespace Nichrome
/usr/bin/xkeystone:33: syntax error before "+"
(略)

というエラーが現れた。今度は nichrome.5c 他 4つのファイルが見つからなかったと言うわけだ。この nichrome.5c というのは、cairo の nickle バインディングである cairo-5c に含まれている。

ということで、cairo-5c-1.8 をダウンロードし、ビルド。configure が tarball 中に含まれていないが autogen.sh を実行してやればよい。続けて configure、make と進めていくと、

/bin/sh ../libtool --tag=CC   --mode=link gcc -isystem /usr/include -m64 -Wall -Wpointer-arith -Wstrict-prototypes      -Wmissing-prototypes -Wmissing-declarations     -Wnested-externs -fno-strict-aliasing -pthread -I/usr/include/librsvg-2.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libdrm -I/usr/include/libpng16  -g -O2 -version-info 2:0:2 -Wl,--as-needed -o libcairo-5c.la -rpath /usr/lib64 init.lo cairo.lo draw.lo event.lo gstate.lo xlib.lo matrix.lo pattern.lo surface.lo text.lo rsvg.lo -lrsvg-2 -lm -lgio-2.0 -lgdk_pixbuf-2.0 -lgobject-2.0 -lglib-2.0 -lfreetype -lcairo -lXext -lX11 -lfontconfig  -lrt -lpthread 
/usr/bin/grep: /usr/lib64/libEGL.la: No such file or directory
/bin/sed: can't read /usr/lib64/libEGL.la: No such file or directory
libtool: link: `/usr/lib64/libEGL.la' is not a valid libtool archive
make[2]: *** [libcairo-5c.la] エラー 1

というエラーで終了。libEGL.la が無いというエラーだ。libEGL がインストールされているか調べたところ、libEGL.la は確かに無かったが、libEGL.so は存在している。

libtool に libEGL.la を探すのを止めさせ、libEGL.so を素直にリンクさせたいところだが、libtool がなぜ libEGL.la を探すかというと、librsvg-2.la に依存するライブラリとして libEGL.la が書かれていたからである。ではなぜ librsvg-2.la に存在しない libEGL.la が書かれているかというと、librsvg をバイナリーパッケージでアップデートしたからである。同時に MesaLib もアップデートしておけば、libEGL.la もインストールされたはずであるが、以前 MesaLib をアップデートした所 GUI が動かない状態になってしまったので、古いバージョンに戻していた。また、Plamo Linux のパッケージ管理システムは依存性の管理などは行わないので、MesaLib が古い状態でも librsvg をインストールできてしまう。

ということで、librsvg を自前ビルドして正しい librsgv-2.la が作成し、インストール。無事 cairo-5c はインストールできた。

改めて xkeystone を実行すると、

->     public typedef widget_t + struct { point_t[4] p; real line_width; real corner_diameter; rgba_color_t line_color; rgba_color_t corner_color; bool down; bool started; int active; void(&quad_t) callback; } quad_t;
/usr/bin/xkeystone:43: Duplicate structure member active
->     quad.active = nearest (&quad, event);
/usr/bin/xkeystone:106: Incompatible types, left 'bool', right 'int', for = operation
->     (quad.p[quad.active]).x = motion.x;
/usr/bin/xkeystone:120: Incompatible expression type 'bool', for index 0 type 'int'
->     (quad.p[quad.active]).y = motion.y;
/usr/bin/xkeystone:121: Incompatible expression type 'bool', for index 0 type 'int'
->     quad.active = -1;
/usr/bin/xkeystone:165: Incompatible types, left 'bool', right 'int', for = operation
Unhandled exception uninitialized_value ()
/usr/bin/xkeystone:502:     &quad_t quad = Quad::new (&nichrome, callback);
    main ()
/usr/bin/xkeystone:556:     main ();

というエラー。xkeystone 自体のデバッグをしなければ動かないらしい。

こうして夜は更けていく……。

追記: xkeystone は XRandR を 1.3.5 から 1.4.1 にアップデートすれば動く。

*1:xrandr と同じパッケージにはいっている

*2:C風の文法を持つスクリプト言語だ

トラックバック - http://eszett.g.hatena.ne.jp/yshl/20140208

2010/7/11(日)12:00:00 AM

Imagimagick と libpng Imagimagick と libpng - yßhl を含むブックマーク

  1. libpng12 と libpng14 の両方をインストールした。
  2. Imagemagick をビルドした。
    1. make check で tests/validate-formats-in-memory.sh と tests/validate-formats-on-disk.sh が終了しなかった。
  3. 構わずインストールすると、png ファイルを display で表示しようとしたときに、以下のようなエラーが出るようになった。
    display: memory allocation failed `ImageMagick-6.6.3-0/images/affine.png' @ error/png.c/ReadOnePNGImage/1781.
    display: corrupt image `ImageMagick-6.6.3-0/images/affine.png' @ error/png.c/ReadPNGImage/3101.
    
  4. 検索してあちこち見て回るうち、どうも libpng が 12 と 14 の両方あるのがよくないような気がしてきた。libpng12 を使うようにしてビルドしなおすことにする。
    1. ./configure --prefix=/usr PNG_CFLAGS=-I/usr/include/libpng12
    2. 掟破り(?) の Makefile 書き換え。vim Makefile で %s/-lpng/-lpng12/g
    3. makemake install
トラックバック - http://eszett.g.hatena.ne.jp/yshl/20100711

2010/6/26(土)12:00:00 AM

LinuxGCL 2.6.7 のビルドメモ Linux で GCL 2.6.7 のビルドメモ - yßhl を含むブックマーク

GCL 2.6.7 をビルドしようとしたら、

gcc -o raw_pre_gcl  \
        -L.  -Wl,-Map raw_pre_gcl_map   -lpre_gcl -lm  -lgmp /usr/lib/libbfd.a /usr/local/lib/libiberty.a -lreadline -lncurses -lc -lgclp 
/usr/lib/libbfd.a(compress.o): In function `bfd_uncompress_section_contents':
/home/yshl/src/binutil/binutils-2.19/bfd/compress.c:96: undefined reference to `inflateInit_'
/home/yshl/src/binutil/binutils-2.19/bfd/compress.c:103: undefined reference to `inflate'
/home/yshl/src/binutil/binutils-2.19/bfd/compress.c:106: undefined reference to `inflateReset'
/home/yshl/src/binutil/binutils-2.19/bfd/compress.c:108: undefined reference to `inflateEnd'
collect2: ld はステータス 1 で終了しました
make[1]: *** [raw_pre_gcl_map] エラー 1
make[1]: Leaving directory `/home/yshl/src/lang/gcl/tmp/gcl-2.6.7/unixport'
make: *** [unixport/saved_pre_gcl] エラー 2

というエラーになった。gcc のコマンドラインオプションに -lz を追加しようとしたが、どうもうまくいかない。libbfd を GCL のソースに含まれている方を使うように変更したらビルドできた。

./configure --enable-locbfd --disable-statsysbfd

他の対処法としては、CVS 版を使うとか? 参考 URL Re: [Gcl-devel] libbfd.a ”undefined reference to inflate”

トラックバック - http://eszett.g.hatena.ne.jp/yshl/20100626

2009/8/11(火)12:00:00 AM

点 (0,0),(1,-1),(1,1) で囲まれた三角形領域の直交多項式 点 (0,0),(1,-1),(1,1) で囲まれた三角形領域の直交多項式 - yßhl を含むブックマーク

\int_0^1 dx \int_{-x}^x dy F_{nm}(x,y)F_{kl}(x,y)=\delta_{nk}\delta_{ml}

F_{nm}(x,y)=\sqrt{(n+1)(2m+1)}x^m P_{n-m}^{(0,2m+1)}(2x-1)P_m(y/x)

P_n^{(\alpha,\beta)}(x)=\frac{(-1)^n}{2^n n!}(1-x)^{-\alpha}(1+x)^{-\beta}\frac{d^n}{dx^n}\left\[(1-x)^{n+\alpha}(1+x)^{n+\beta}\right\] (Jacobi 多項式)

P_n(x)=P_n^{(0,0)}(x) (Legendre 多項式)

トラックバック - http://eszett.g.hatena.ne.jp/yshl/20090811

2009/5/5(火)12:00:00 AM

APOP 用 biff を書いてみた APOP 用 biff を書いてみた - yßhl を含むブックマーク

なんとなく D 言語で

続きを読む

トラックバック - http://eszett.g.hatena.ne.jp/yshl/20090505