From: KOSAKI Motohiro Date: 2010-03-03T09:25:33+09:00 Subject: [ruby-dev:40538] ext/openssl のbuildfixについて なるせ殿 kosakiです 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環境が壊れないことを再度確認後) パッチを送りますが、いかがいたしましょうか。 以下、若干脱線。 ちなみに元々のパッチは以下のようなコードがありました +#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系が死滅してから コードを綺麗にするのが楽でいいなぁとか怠惰な事を考えていました。