Project

General

Profile

Actions

Bug #16490

closed

mkmf.rbの非互換な変更

Added by taca (Takahiro Kambe) over 2 years ago. Updated 9 months ago.

Status:
Third Party's Issue
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-netbsd]
[ruby-dev:50909]

Description

tmailのrubygem 1.2.7.1をインストールする際に、

make "DESTDIR="
make: don't know how to make /usr/pkg/include/ruby-2.7.0/defines.h. Stop

といったエラーを起こします。Makefileの最後の依存関係の記述は

###
tmailscanner.o: tmailscanner.c $(hdrdir)/ruby.h $(arch_hdrdir)/ruby/config.h $(hdrdir)/defines.h Makefile

となっていますが、Ruby 2.6では$(hdrdir)/defines.hではなく$(hdrdir)/ruby/defines.hとなっていました。
なお、tmail側を見るとext/tmailscanner/tmail/dependの内容が、

tmailscanner.o: tmailscanner.c $(hdrdir)/ruby.h $(topdir)/config.h $(hdrdir)/defines.h Makefile

となっていて、defines.hだけ置き換えられていない様に見えます。

r 67033 のmkmf.rbのdepend_rules()に対する変更を戻すとRuby 2.6と同じ挙動になる様です。

Actions #1

Updated by hsbt (Hiroshi SHIBATA) over 2 years ago

  • Subject changed from mkimf.rbの非互換な変更 to mkmf.rbの非互換な変更

Updated by jeremyevans0 (Jeremy Evans) 9 months ago

Reverting the line removed from mkmf.rb in r67033 (3d1c86a26f0c96a9c1d0247b968aa96e6f3c30bb) allows for the tmail gem to install on the master branch. I've submitted a pull request for that: https://github.com/ruby/ruby/pull/4738

Updated by nobu (Nobuyoshi Nakada) 9 months ago

  • Status changed from Open to Third Party's Issue

dependファイルを直してコンパイルしてみてもエラーになりますので、tmail gem自体をもっと修正する必要があると思います。

tmailscanner.c:105:11: error: implicit declaration of function 'rb_get_kcode' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    tmp = rb_get_kcode();
          ^

Updated by taca (Takahiro Kambe) 9 months ago

本件は少なくともRuby 2.7.3辺りでは起きなくなっていますので、チケット自体はcloseしていただいても問題ないと考えています。

dependファイルを直してコンパイルしてみてもエラーになりますので、
これは、コンパイラのオプションに-Werror付けている環境の問題と考えられます。

実際、-Werrorの付かない環境ではウォーニングを出すものの、正常にコンパイルは完了しています。

もちろん、ウォーニングを出さない様に修正すべきでしょうけれど。
(そもそも、tmailは現在はメンテされてるのでしょうか...?)

Actions

Also available in: Atom PDF