1999/08/10    Gimp, Gtk--, and Physics Analysis Package

[1] gimp-1.1.8

山田さんの所で、gimp が 1.1.8 になったことを知る。1.1.6 を導入したと思ったら、もう 1.1.8 へ。ついていくのも大変。SRPM のソースだけを入れ替えて作りなおした。日本語メニューは、po file を更新する元気が出ないので、日本語ロケール用の gimp.gmo を削除。使用した SPEC ファイルはここ、また、出来た RPM パッケージは

           gimp-1.1.8-1a.ppc.rpm
           gimp-devel-1.1.8-1a.ppc.rpm
           gimp-perl-1.1.8-1a.ppc.rpm

で、devel は使うだけなら不要。対応する SRPM は

            gimp-1.1.8-1a.src.rpm

である。
 

[2] gtk---1.0.2

また、gtk+ の C++ ラッパー、Gtk-- を 1.0.2 へ更新。ソース付属の SPEC をもとにパッケージを作成。使った SPEC ファイルはここ、また、bash-2.x でのビルドをするために使ったパッチはここにある。このパッチは bash-2.x では、for 文でのワイルドカードの展開で、該当するものがない場合、ワイルドカードがそのまま展開されずに残るという仕様変更を回避するためのもの。例えば

$ for i in *.nonexistent; do echo $i; done

とした場合、bash 1.x では、*.nonexistent がなければ、何も打ち出さないのに対し、bash-2.x では、そのまま *.nonexistent と打ち出される。ここで、bash-1.x の場合と同じように振る舞って欲しければ、例えば

$ for i in `ls *.nonexistent`; do echo $i; done

のようにする必要がある。1.0.0 であった libtool が古い問題は、このバージョンでは修正されている。

このパッチをあてて出来た RPM は

           gtk---1.0.2-1a.ppc.rpm
           gtk---devel-1.0.2-1a.ppc.rpm
           gtk---devel-static-1.0.2-1a.ppc.rpm

で、対応する SRPM は

            gtk---1.0.2-1a.src.rpm

である。
 

[3] 解析プログラム開発近況

RCINT で、ブロックローカルな参照変数のシンボルを別のブロックで使い回した場合に、前のブロックで参照した実体が変更されてしまうことがあった。これは、とてもやっかいで、問題を特定するのにかなり時間を要した。例えば

  while((w1p = (ANLPair *)w1candidates())) {
    ANLPair &w1 = *w1p;
    .....
  }
  .....
  TIter nextsol(&solutions);
  ANLPair *sol;
  while ((sol = (ANLPair *)nextsol())) {
    ANLPair &w1 = *(ANLPair *)(*sol)[0];
    ....
  }

のようにすると、二つ目のブロックで参照を定義した際に、初め w1 が指していた wicandidates の中の ANLPair の中身が破壊される場合があった。これは、RCINT の仕様(限界)である可能性もあるので、当面、このような同一シンボルの使い回しを避けるか、ポインターを使うことにする。この問題は RCINT によるインタープリターモードの実行だけの問題で、もちろん、g++ でコンパイルすれば、このような問題はない。やはり、コンパイル&バッチモードとインタープリターモードの結果を比較して一致を確かめないと危険である。

それと、これは純粋に私の作ったバグであるが、ANLPair クラスのロック機構に子供のロックがはずれたときに適切に親のロックをクリアーしない問題があった。これは、ANLPairCombiner クラスのコピーコンストラクターの問題。また、ANLPair にクオリティー属性をつけ加えた。これにより、ROOT のソート機能を使ってクオリティー順に並べ替えられるようになった。
 


Back to Keisuke Fujii's MkLinux/LinuxPPC Life