ranguba / rroonga

The Ruby bindings of Groonga.
http://ranguba.org/#about-rroonga
66 stars 25 forks source link

error displayes when gem i rroonga (6.0.9) #135

Closed dogatana closed 7 years ago

dogatana commented 7 years ago

AS I posted in ruby-list mailing-list, following error is displayed when I try to install rroonga 6.0.9 through gem.

ERROR: While executing gem ... (Encoding::InvalidByteSequenceError) "\x90" followed by "\x00" on Windows-31J

I attach the log file as per your request. I hope this will help.

gem i rroonga --verbose > log.txt 2>&1 log.txt

myokoym commented 7 years ago

Thank you for the report! I'll look into it.

myokoym commented 7 years ago

すみません、反応が遅くなりました。 いただいたログを確認したのですが、原因がわかりませんでした。 (エラーが出た直前のファイルではマルチバイト文字は使われていないように見えました)

Rroongaの新バージョン(6.1.0)がリリースされたので、問題が再現するか試してもらえますでしょうか? 新バージョンでも再現するようでしたら、お手数ですがさらに詳しいログの取得をお願いしたいです。 (こちらの環境(Windows 7 Ultimate)ではやはり再現しないので)

gemコマンドのhelpを見ると、--debugオプションを付ければもっと詳しいログが出力されるようだったので、それ見れば何かわかるかもしれません。

可能でしたら、以下のコマンドで取得したログを添付していただきたいです。 (ファイルサイズが大きくなってしまいそうで添付できるか心配ですが…)

gem i rroonga --debug > log.txt 2>&1

よろしくお願いします。

dogatana commented 7 years ago

状況は変わらずです。またlogも有用な情報はないです。

gem のドキュメント作成に rdoc が起動されますが、yard を想定していませんか?

色々調べたのですが、ドキュメントのインストールにrdoc が起動され、so ファイルを処理しようとしてエラーが発生しています。

次は rdoc に手を入れて、処理ファイルを表示させたものです。

> gem i rroonga
Successfully installed rroonga-6.1.0-x86-mingw32
Parsing documentation for rroonga-6.1.0-x86-mingw32
# lib
# lib/2.1
# lib/2.1/groonga.so
ERROR:  While executing gem ... (Encoding::InvalidByteSequenceError)
    "\x90" followed by "\x00" on Windows-31J

インストール済みの rroonga のgem フォルダで rdoc を実行した場合も同様の状況です。

> rdoc
# .
# ./AUTHORS
<中略>
# ./ext/groonga/rb-grn.h
# ./ext/groonga/rb-groonga.c
# ./extconf.rb
# ./Gemfile
# ./lib
# ./lib/2.1
# ./lib/2.1/groonga.so
uh-oh! RDoc had a problem:
"\x90" followed by "\x00" on Windows-31J

run with --debug for full backtrace

rdoc であれば、このようなファイルは対象から除外する設定が必要だと思います。 (具体的jにどうするのか私ではわからないのですが、ご存知でしょうか)

一方フォルダには次の内容の .yardopts が含まれていて yard の設定ファイルのようです。

> type .yardopts             
--output-dir doc/reference/en
--markup markdown            
--markup-provider kramdown   
lib/**/*.rb                  
ext/**/*.c                   
-                            
doc/text/*                   

以上から私の環境で発生しているエラーは yard ではなく rdoc が実行されるためにエラーになったものと推測しました。

myokoym commented 7 years ago

状況は変わらずです。またlogも有用な情報はないです。

ご確認ありがとうございます。

gem のドキュメント作成に rdoc が起動されますが、yard を想定していませんか?

ソースコード内のドキュメントはYARD向けに記述しています。 ( http://ranguba.org にアップロードするドキュメントを生成するのにYARDを使っているためです)

ですが、RDocでのドキュメント生成を抑止しているわけではないので、 gem install時にはRDocでドキュメントが生成されます。

色々調べたのですが、ドキュメントのインストールにrdoc が起動され、so ファイルを処理しようとしてエラーが発生しています。

RDocのHistoryを見てみたところ、4.0.1のところにバイナリファイルを処理しないようにしたと読める記載がありました。

RDoc no longer attempts to parse binary files. Bug #189 by postmodern, Bug #190 by Christoffer Lervåg, Bug #195 by Aaron Patterson https://github.com/rdoc/rdoc/blob/master/History.rdoc#401--2013-03-27

私の環境でも4.0.1以降のバージョン(4.2.1でした)を使っているので、エラーにならないのだと思います。

そこで、お使いのRDocのバージョンを確認していただけないでしょうか? もし4.0.0以前のRDocをお使いであれば、4.0.1以降で改善される可能性があります。

dogatana commented 7 years ago

遅くなりましたが、報告です。

確認結果を書いたつもりでしたが、comment ボタンを押す前にブラウザを閉じてしまったようです。

RDoc は 4.2.1 および 5.0 でしたが、同じ状況です。 ただし、本件は私の環境の問題であることがわかりました。 pry の日本語文字列表示のトラブルで試行錯誤している際に RUBYOPT=-U と設定したのですが、 この設定の場合、RDoc 内の幾つかの箇所(バイナリファイルかどうかの判定など)で、Encodingの 例外が発生し、異常終了するようです。

RUBYOPT を未設定とすることで、RDoc が正常に実行完了します。

当方の環境の問題でお騒がせしました。すみません。

myokoym commented 7 years ago

ご報告ありがとうございます!RUBYOPTが原因とのことで了解しました。

もしRUBYOPT=-Uを設定した状態でドキュメントをインストールしたいということであれば、 RDocのほうに報告すると修正されるかもしれません。 (Rroonga以外にもバイナリファイルを含んでいるgemはあるので、対応するならRDoc側かなと思っています)