From: "NARUSE, Yui" Date: 2010-03-03T20:19:09+09:00 Subject: [ruby-dev:40553] Re: ext/openssl のbuildfixについて 成瀬です。 (2010/03/03 9:25), KOSAKI Motohiro wrote: > ext/openssl の修正の適用ありがとうございます(観察日記で気づきました。 > 二重にありがとうございます) こちらこそパッチ作成ありがとうございます。 > http://github.com/ruby/ruby/commit/48e861ddfbdda7189401c4e1d901e0317b34fb30#diff-4 > > を見ていたのですが、 > > + * ext/openssl/ossl_ssl.c (ossl_ssl_method_tab), > + (ossl_ssl_cipher_to_ary): constified. > > というChangeLogに反してconstの変更はされていないように見えます。 > たぶん犯人は私で、元パッチからビルドフィックスに関係ないwarning抑制は > 全部取った気がします。 > > 必要だという認識なのであれば、(OpenSSL-0.9環境が壊れないことを再度確認後) > パッチを送りますが、いかがいたしましょうか。 必要ないだろうので、ChangeLog を後で直します。 > 以下、若干脱線。 > ちなみに元々のパッチは以下のようなコードがありました > > +#if OPENSSL_VERSION_NUMBER >= 0x10000000L > +#define OSSL_MORE_CONST const > +#else > +#define OSSL_MORE_CONST > +#endif > > @@ -102,5 +108,5 @@ ID ID_callback_state; > struct { > const char *name; > - SSL_METHOD *(*func)(void); > + OSSL_MORE_CONST SSL_METHOD *(*func)(void); > } ossl_ssl_method_tab[] = { > #define OSSL_SSL_METHOD_ENTRY(name) { #name, name##_method } > > > 個人的にはMORE_CONSTのように、warning回避するためにコードを汚くして > 保守性を下げるのは反対で(手段と目的が逆転しているように感じる)、 > 以下のどれかがいいと思います > > 案1 > ・OpenSSL-0.9系とOpenSSL-1.0系の両方でビルド可能にする > ・warningは取らない > > 案2 > ・OpenSSL-0.9系とOpenSSL-1.0系の両方でビルド可能にする > ・OpenSSL-0.9系で出るwarningは可能な限り取る > ・OpenSSL-1.0系でのみ出るwarningは放置 > > 案3 > ・OpenSSL-0.9系とOpenSSL-1.0系の両方でビルド可能にする > ・OpenSSL-1.0系で出るwarningは可能な限り取る > ・OpenSSL-0.9系でのみ出るwarningは放置 > > 個人的には案1で1,2年放置して、OpenSSL0.9系が死滅してから > コードを綺麗にするのが楽でいいなぁとか怠惰な事を考えていました。 案1 でしょうねぇ、ext/openssl は現状すでに結構 warning でますし。 -- NARUSE, Yui