[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:003232] Re: ruby 1.9.2でのruby-netcdf対応



佐々木さん:

神代です.

ちょっと混乱してしまったのですが, ruby-netcdf の新規インストールから始
めると, このテストは動かないみたいです.

% make test
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- numru/netcdfraw (LoadError)
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from /home/tkoshiro/linux/src/ruby-netcdf/lib/netcdf.rb:2:in `<top (required)>'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from test.rb:5:in `<main>'
make: *** [test] エラー 1

1.8 でも同様でした.

インストール後に実行すると, 上でエラーになった 2回目の netcdfraw.so は
ロードパス上のほうを require するので, warning は出ますが, 実行できます.
# これってちゃんとテストできてるんですかね?
# 2回目にロードしたほうを使っているのなら, テストになっていないような.

私の場合, 特にエラーもなく終了しました.
佐々木さんの場合は, deb パッケージ作成時に実行されてるんですよね?
warning に出ている netcdfraw.so の位置が, 普通と違う感じがするのですが,
パッケージ作成途中のテンポラリな位置なんですかね. ちゃんとそこを読みに
いってるみたいですが.
エラーメッセージを出してると思われるソースの該当箇所を見ても, どうして
こうなるのか見当がつきません……

うまくいく 1.8 のほうは, すでに ruby-netcdf がインストールされている環
境なんでしょうかね.
パッケージ作成とは関係なく, 手動でやってみるとどうでしょうか.


私の環境は,

gcc 4.2.4
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]

gcc version 4.3.4 (Debian 4.3.4-6~bpo50+1)
ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]

です.

ついでに, 他の test/ 以下のプログラムも試してみたら, 動かないものもあ
りました. これはテストプログラムのほうの問題(メソッドの変更に対応して
いない, とか)みたいなので, この修正ものちほどコミットしておきます.
# いつも demo/ のほうだけ試していました. test/ は頭になかった……


At Mon, 13 Dec 2010 18:55:18 +0900,
Youhei SASAKI wrote:
> 
> 神代様, 皆様: 佐々木です.
> 
> # 古い話(?)で恐縮ですが...
> 
> At Mon, 13 Dec 2010 16:13:40 +0900,
> KOSHIRO Tsuyoshi <koshiro@xxxxxxxxxxxxxx> wrote:
> > 纐纈さんの変更プラスこれらの対策を, CVS にコミットしておきます.
> > なお, STR2CSTR 削除対策は, STR2CSTR を定義するのではなく, 本文中の
> > STR2CSTR を書き換えるやり方にしました.
> 
> 頓挫していた Debian パッケージ公式に upload するための作業をしています.
> ビルド時の動作確認のため test/test.rb を走らせていたのですが, Ruby1.9.2
> 用のパッチを導入してから test/test.rb を動作させる際に以下のエラーが出る
> 様になりました. 
> 
>   ../lib/numru/netcdfraw.so: warning: already initialized constant NC_NOWRITE
>   ../lib/numru/netcdfraw.so: warning: already initialized constant NC_WRITE
>   ../lib/numru/netcdfraw.so: warning: already initialized constant NC_SHARE
>   ../lib/numru/netcdfraw.so: warning: already initialized constant NC_CLOBBER
>   ../lib/numru/netcdfraw.so: warning: already initialized constant NC_NOCLOBBER
>   ../lib/netcdf.rb:68:in `nc_create': wrong argument type String (expected Module) (TypeError)
>           from ../lib/netcdf.rb:68:in `create'
>           from test.rb:12
>   creating test.nc...
> 
> # 前半の warning は「無視してくれ」とあるので, とりあえず良いとして.
> Ruby1.8 に関しては test/test.rb は動作しています. 
> 
> とり急ぎご報告までに.
> 
> > At Wed, 22 Sep 2010 08:57:07 +0900,
> > KOUKETSU Shinya wrote:
> > > 
> > > 纐纈です.
> > > 
> > > >> 他にも余計なことをしていますが、全く検証していません。
> > > >
> > > > よければ解説をお願いします.取り込もうと思うと確認の時間が
> > > > かかる(腰が重いので)と予想されますので.
> > > 
> > > すみません. ずるしました.
> > > 
> > > 多少, 記憶がおぼろげですが...
> > > 
> > > ruby-1.9.2にしてから(かどうか分かりませんが...),
> > > NetCDF_att_rename(VALUE Att,VALUE new_att_name)
> > > (L. 1270あたり)を呼び出すと,
> > > 「メモリが割り付けていないポインタを開放しようとした」
> > > 旨のエラーが出るようになりました.
> > > ここは, 良く分かっていないのですが, 関数定義内で作った
> > > ポインタを指すようにしているあたりかなと思い,
> > > Netcdf_att->name=c_new_att_name;
> > > の変わりにstrcpyを使用するように変更しました.
> > > 
> > > あとはどうでも良いことですが...
> > > 関数: nc_[get|put]_[var|var1|vars|attr]_[text|uchar]
> > > の最後の引数は, char* (unsigned char *)ですが, 各所で,
> > > unsigned char* (char*)が渡されていて, どうでもいいで
> > > すが, 一応, 明示的にキャストしたような気がします.
> > > (環境によりますが, warningが出ていたので, 単に気持ち
> > > 良さのために)
> 
> ---
> Youhei SASAKI <uwabami@xxxxxxxxxxxxxx>
>               <uwabami@xxxxxxxxxxxxxxxxxx>
> Department of Mathematics, Kyoto University
> GPG fingerprint:
>   4096/RSA: 66A4 EA70 4FE2 4055 8D6A C2E6 9394 F354 891D 7E07
>