Issue #7287 has been reported by ngoto (Naohisa Goto). ---------------------------------------- Bug #7287: please rename atomic.h which conflicts with /usr/include/atomic.h in Solaris10 https://bugs.ruby-lang.org/issues/7287 Author: ngoto (Naohisa Goto) Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: ruby 2.0.0dev (2012-11-05) [sparc64-solaris2.10] Solaris10にて、ccやfccなどgcc以外を使用してコンパイルする際は、Rubyソース内の atomic.h にて、以下のようにシステムの atomic.h (/usr/include/atomic.h)を#includeしています。 #elif defined(__sun) #include <atomic.h> #include "atomic.h" とは違って #include <atomic.h> のように<>で囲んでいるので、システムのヘッダファイルが優先されるはず、と思っていたら、実はそうではなく、configureがコンパイル時のオプションとして "-I." を追加しているため、Rubyソース側の atomic.h しか読み込むことができず、どう頑張ってもシステムの /usr/include/atomic.h は読み込まれないことが判明しました。 このため、以下のように"implicit function declaration"の警告が出ます。(行番号はr36984の場合) "gc.c", line 1421: warning: implicit function declaration: atomic_swap_uint "gc.c", line 1902: warning: implicit function declaration: atomic_or_uint "gc.c", line 1952: warning: implicit function declaration: atomic_swap_ulong 幸い、Solaris10およびIllumos(旧OpenSolaris)の現時点の /usr/include/atomic.h は、実質的に 内部で #include <sys/atomic.h> しているだけでしたので、#include <sys/atomic.h> をRubyの atomic.h に追加することで問題を回避できました。ただし、Solaris10のmanページ(man atomic_ops)では atomic.h を使うように指示がされており、sys/atomic.h はカーネル内ドライバ専用らしいので、OSの将来のバージョン・リビジョンでは最悪コンパイルできなくなる可能性は残っています。根本的解決策としては、Ruby側のatomic.hのファイル名を違う名前に変更するしかないと思います。 ファイル名変更するときは、他のOSやライブラリとも被らないことが望ましいので若干調べたところ、 AIX 6.1 では、#include <sys/atomic_op.h> だそうです。 http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.j... BoehmGC が要求する libatomic_ops には atomic_ops.h が含まれているようです。 https://github.com/ivmai/libatomic_ops/
on 2012-11-06 08:21
on 2012-11-06 08:33
Issue #7287 has been updated by ngoto (Naohisa Goto). Status changed from Closed to Open Priority changed from Normal to Low 回避策はコミットしましたが、根本的解決ではないので再openします。 ---------------------------------------- Bug #7287: please rename atomic.h which conflicts with /usr/include/atomic.h in Solaris10 https://bugs.ruby-lang.org/issues/7287#change-32475 Author: ngoto (Naohisa Goto) Status: Open Priority: Low Assignee: Category: Target version: ruby -v: ruby 2.0.0dev (2012-11-05) [sparc64-solaris2.10] Solaris10にて、ccやfccなどgcc以外を使用してコンパイルする際は、Rubyソース内の atomic.h にて、以下のようにシステムの atomic.h (/usr/include/atomic.h)を#includeしています。 #elif defined(__sun) #include <atomic.h> #include "atomic.h" とは違って #include <atomic.h> のように<>で囲んでいるので、システムのヘッダファイルが優先されるはず、と思っていたら、実はそうではなく、configureがコンパイル時のオプションとして "-I." を追加しているため、Rubyソース側の atomic.h しか読み込むことができず、どう頑張ってもシステムの /usr/include/atomic.h は読み込まれないことが判明しました。 このため、以下のように"implicit function declaration"の警告が出ます。(行番号はr36984の場合) "gc.c", line 1421: warning: implicit function declaration: atomic_swap_uint "gc.c", line 1902: warning: implicit function declaration: atomic_or_uint "gc.c", line 1952: warning: implicit function declaration: atomic_swap_ulong 幸い、Solaris10およびIllumos(旧OpenSolaris)の現時点の /usr/include/atomic.h は、実質的に 内部で #include <sys/atomic.h> しているだけでしたので、#include <sys/atomic.h> をRubyの atomic.h に追加することで問題を回避できました。ただし、Solaris10のmanページ(man atomic_ops)では atomic.h を使うように指示がされており、sys/atomic.h はカーネル内ドライバ専用らしいので、OSの将来のバージョン・リビジョンでは最悪コンパイルできなくなる可能性は残っています。根本的解決策としては、Ruby側のatomic.hのファイル名を違う名前に変更するしかないと思います。 ファイル名変更するときは、他のOSやライブラリとも被らないことが望ましいので若干調べたところ、 AIX 6.1 では、#include <sys/atomic_op.h> だそうです。 http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.j... BoehmGC が要求する libatomic_ops には atomic_ops.h が含まれているようです。 https://github.com/ivmai/libatomic_ops/
on 2012-11-06 09:29
$B$-$7$b$H$G$9(B
> #include "atomic.h" $B$H$O0c$C$F(B #include <atomic.h>
$B$N$h$&$K(B<>$B$G0O$s$G$$$k$N$G!"%7%9%F%`$N%X%C%@%U%!%$%k$,M%@h$5$l$k$O$:!"$H;W$C$F$$$?$i!"<B$O$=$&$G$O$J$/!"(Bconfigure$B$,%3%s%Q%$%k;~$N%*%W%7%g%s$H$7$F(B
"-I." $B$rDI2C$7$F$$$k$?$a!"(BRuby$B%=!<%9B&$N(B atomic.h
$B$7$+FI$_9~$`$3$H$,$G$-$:!"$I$&4hD%$C$F$b%7%9%F%`$N(B /usr/include/atomic.h
$B$OFI$_9~$^$l$J$$$3$H$,H=L@$7$^$7$?!#(B
ruby$B$G$O!"$O$^$C$?$3$H$O$J$$$N$G$9$,!"5U$N%Q%?!<%s$G!"(B
base64.h (heimdal) $B$H$+!"(Bgc.h (Boehm GC) $B$H$+$G!"%"%W%jB&$N(B
$B%X%C%@%U%!%$%k$r%$%s%/%k!<%I$7$F$[$7$$$N$K!"(B/usr/local/include
$B$K(B
$B$"$k!"%7%9%F%`!J%i%$%V%i%j$N%Q%C%1!<%8!K$NB&$N%X%C%@%U%!%$%k$,(B
$B%$%s%/%k!<%I$5$l$F$7$^$$!"%H%i%V$k!"$H$$$&%Q%?!<%s$KITDj4|$K(B
$B8+Iq$o$l$F$$$^$9!#(B
# -I/usr/local/include $B$OB>$N%i%$%V%i%j$N$?$a$KMW$k$N$G!"(B
# "" $B$G0O$s$G$b$"$^$j0UL#$,$J$/(B
$B!VF1L>$N%X%C%@%U%!%$%k!WLdBj$N%Y%9%H%W%i%/%F%#%9!"$C$FL5$$$b$N$G(B
$B$7$g$&$+$M$'!)(B
on 2012-11-06 12:47
At Tue, 6 Nov 2012 17:28:27 +0900, KISHIMOTO, Makoto wrote: > > # -I/usr/local/include $B$OB>$N%i%$%V%i%j$N$?$a$KMW$k$N$G!"(B > # "" $B$G0O$s$G$b$"$^$j0UL#$,$J$/(B > > $B!VF1L>$N%X%C%@%U%!%$%k!WLdBj$N%Y%9%H%W%i%/%F%#%9!"$C$FL5$$$b$N$G(B > $B$7$g$&$+$M$'!)(B $B!!$h$/CN$i$l$?%X%C%@%U%!%$%k$HF1$8L>A0$N$b$N$O:n$i$:!"I,MW$J$i3,AX2=$9(B $B$Y$7!"$H$$$&$H$3$m$G$9$+$M$(!#(B $B!!(Bgcc $B$K$O(B #include "..." $B$K$@$1:nMQ$9$k(B -iquote dir $B$H$$$&%*%W%7%g%s$,(B $B$"$j!"$3$l$,@5$K$:$P$j$J$N$G$9$,!"(B $BDI?o$7$F$$$k$N$O(B clang $B$/$i$$$+$b$7(B $B$l$^$;$s!#(B
[ruby-trunk - Bug #7287][Assigned] please rename atomic.h which conflicts with /usr/include/atomic.h
on 2012-11-06 13:42
Issue #7287 has been updated by mame (Yusuke Endoh). Status changed from Open to Assigned Assignee set to kosaki (Motohiro KOSAKI) atomic.h を入れた kosaki さんに振ってしまいます。rb_atomic.h とかにするんですかね。 他は大丈夫ですかねえ。 $ ls *.h addr2line.h encdb.h iseq.h regint.h timev.h vm_core.h atomic.h eval_intern.h method.h regparse.h transcode_data.h vm_exec.h constant.h gc.h node.h revision.h transdb.h vm_insnhelper.h debug.h id.h parse.h thread_pthread.h verconf.h vm_opts.h dln.h internal.h regenc.h thread_win32.h version.h Boehm GC とか #include できなさそうですね。しないけど。 -- Yusuke Endoh <mame@tsg.ne.jp> ---------------------------------------- Bug #7287: please rename atomic.h which conflicts with /usr/include/atomic.h in Solaris10 https://bugs.ruby-lang.org/issues/7287#change-32499 Author: ngoto (Naohisa Goto) Status: Assigned Priority: Low Assignee: kosaki (Motohiro KOSAKI) Category: Target version: ruby -v: ruby 2.0.0dev (2012-11-05) [sparc64-solaris2.10] Solaris10にて、ccやfccなどgcc以外を使用してコンパイルする際は、Rubyソース内の atomic.h にて、以下のようにシステムの atomic.h (/usr/include/atomic.h)を#includeしています。 #elif defined(__sun) #include <atomic.h> #include "atomic.h" とは違って #include <atomic.h> のように<>で囲んでいるので、システムのヘッダファイルが優先されるはず、と思っていたら、実はそうではなく、configureがコンパイル時のオプションとして "-I." を追加しているため、Rubyソース側の atomic.h しか読み込むことができず、どう頑張ってもシステムの /usr/include/atomic.h は読み込まれないことが判明しました。 このため、以下のように"implicit function declaration"の警告が出ます。(行番号はr36984の場合) "gc.c", line 1421: warning: implicit function declaration: atomic_swap_uint "gc.c", line 1902: warning: implicit function declaration: atomic_or_uint "gc.c", line 1952: warning: implicit function declaration: atomic_swap_ulong 幸い、Solaris10およびIllumos(旧OpenSolaris)の現時点の /usr/include/atomic.h は、実質的に 内部で #include <sys/atomic.h> しているだけでしたので、#include <sys/atomic.h> をRubyの atomic.h に追加することで問題を回避できました。ただし、Solaris10のmanページ(man atomic_ops)では atomic.h を使うように指示がされており、sys/atomic.h はカーネル内ドライバ専用らしいので、OSの将来のバージョン・リビジョンでは最悪コンパイルできなくなる可能性は残っています。根本的解決策としては、Ruby側のatomic.hのファイル名を違う名前に変更するしかないと思います。 ファイル名変更するときは、他のOSやライブラリとも被らないことが望ましいので若干調べたところ、 AIX 6.1 では、#include <sys/atomic_op.h> だそうです。 http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.j... BoehmGC が要求する libatomic_ops には atomic_ops.h が含まれているようです。 https://github.com/ivmai/libatomic_ops/
on 2012-11-06 18:15
> $B$"$j!"$3$l$,@5$K$:$P$j$J$N$G$9$,!"(B $BDI?o$7$F$$$k$N$O(B clang $B$/$i$$$+$b$7(B > $B$l$^$;$s!#(B $B$=$b$=$b(B atomic.h $B$O8x3+$7$?$/$J$$$+$i(Binclude/ruby$B$G$O$J$$>l=j$K$*$$$F$"$k$N$K(B $B$J$<(B /usr/local/include $B$KF~$C$F$7$^$C$?$N$G$7$g$&(B Makefile$B$,%P%0$C$F$k!)$X$s$J%G%#%9%H%j$D$+$C$F$k!)(B
[ruby-trunk - Bug #7287] please rename atomic.h which conflicts with /usr/include/atomic.h in Solari
on 2012-11-06 18:22
Issue #7287 has been updated by kosaki (Motohiro KOSAKI). Assignee changed from kosaki (Motohiro KOSAKI) to ngoto (Naohisa Goto) ああ、やっと問題が理解できました。(すいません、別メールでへんなコメントをつけてしまいました) 回避策のrevertと名前変更は一緒にやったほうがいいと思うのでngotoさんがコミットしてもらったほうがいいかと思います。 名前は rb_atomic.h で異論ありません。(ほかのでもOK、そこにこだわりはない) ---------------------------------------- Bug #7287: please rename atomic.h which conflicts with /usr/include/atomic.h in Solaris10 https://bugs.ruby-lang.org/issues/7287#change-32508 Author: ngoto (Naohisa Goto) Status: Assigned Priority: Low Assignee: ngoto (Naohisa Goto) Category: Target version: ruby -v: ruby 2.0.0dev (2012-11-05) [sparc64-solaris2.10] Solaris10にて、ccやfccなどgcc以外を使用してコンパイルする際は、Rubyソース内の atomic.h にて、以下のようにシステムの atomic.h (/usr/include/atomic.h)を#includeしています。 #elif defined(__sun) #include <atomic.h> #include "atomic.h" とは違って #include <atomic.h> のように<>で囲んでいるので、システムのヘッダファイルが優先されるはず、と思っていたら、実はそうではなく、configureがコンパイル時のオプションとして "-I." を追加しているため、Rubyソース側の atomic.h しか読み込むことができず、どう頑張ってもシステムの /usr/include/atomic.h は読み込まれないことが判明しました。 このため、以下のように"implicit function declaration"の警告が出ます。(行番号はr36984の場合) "gc.c", line 1421: warning: implicit function declaration: atomic_swap_uint "gc.c", line 1902: warning: implicit function declaration: atomic_or_uint "gc.c", line 1952: warning: implicit function declaration: atomic_swap_ulong 幸い、Solaris10およびIllumos(旧OpenSolaris)の現時点の /usr/include/atomic.h は、実質的に 内部で #include <sys/atomic.h> しているだけでしたので、#include <sys/atomic.h> をRubyの atomic.h に追加することで問題を回避できました。ただし、Solaris10のmanページ(man atomic_ops)では atomic.h を使うように指示がされており、sys/atomic.h はカーネル内ドライバ専用らしいので、OSの将来のバージョン・リビジョンでは最悪コンパイルできなくなる可能性は残っています。根本的解決策としては、Ruby側のatomic.hのファイル名を違う名前に変更するしかないと思います。 ファイル名変更するときは、他のOSやライブラリとも被らないことが望ましいので若干調べたところ、 AIX 6.1 では、#include <sys/atomic_op.h> だそうです。 http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.j... BoehmGC が要求する libatomic_ops には atomic_ops.h が含まれているようです。 https://github.com/ivmai/libatomic_ops/
on 2012-11-07 02:09
At Wed, 7 Nov 2012 02:15:08 +0900, KOSAKI Motohiro wrote: > > $B$"$j!"$3$l$,@5$K$:$P$j$J$N$G$9$,!"(B $BDI?o$7$F$$$k$N$O(B clang $B$/$i$$$+$b$7(B > > $B$l$^$;$s!#(B > > $B$=$b$=$b(B atomic.h $B$O8x3+$7$?$/$J$$$+$i(Binclude/ruby$B$G$O$J$$>l=j$K$*$$$F$"$k$N$K(B > $B$J$<(B /usr/local/include $B$KF~$C$F$7$^$C$?$N$G$7$g$&(B > Makefile$B$,%P%0$C$F$k!)$X$s$J%G%#%9%H%j$D$+$C$F$k!)(B #include "atomic.h" $B$GFI$^$l$k$=$N(B $(srcdir)/atomic.h $B$,(B Solaris $B$G$O(B /usr/include/atomic.h $B$rI,MW$H$9$k$N$GCf$G(B #include <atomic.h> $B$H$7$F$$(B $B$?$N$@$1$I!"(B <> $B$G3g$C$F$b(B -I$(srcdir) $B$,;XDj$5$l$F$$$k$H%7%9%F%`%G%#%l(B $B%/%H%j$G$J$/$=$A$i$rM%@h$7$F$7$^$&$N$G!"<B<AE*$K(B "" $B$b(B <> $B$b0c$$$,$J$/!"(B $B%7%9%F%`$K$"$kF1L>%X%C%@$O1#$5$l$F%$%s%/%k!<%I$G$-$J$$$H$$$&OC$@$H;W$$(B $B$^$9!#(B $B$H=q$$$?$H$3$m$G<!$N%a!<%k$K5$$,IU$-$^$7$?$,5-O?$N$?$a$KEj$2$F$*$-$^$9!#(B
on 2012-11-07 05:14
$B$-$7$b$H$G$9(B > > > $B!!(Bgcc $B$K$O(B #include "..." $B$K$@$1:nMQ$9$k(B -iquote dir $B$H$$$&%*%W%7%g%s$,(B > > > $B$"$j!"$3$l$,@5$K$:$P$j$J$N$G$9$,!"(B $BDI?o$7$F$$$k$N$O(B clang $B$/$i$$$+$b$7(B > > > $B$l$^$;$s!#(B $B$=$&$$$C$?@)8f$N$?$a$K;H$($k(B -I- $B$,(B deprecated $B$K$J$C$F$7$^$C$F!"(B $BBeBX$,$J$$$N$+$J$!!"$H;W$C$F$$$?$N$G$9$,!"$A$c$s$H$"$C$?$N$G$9$M!#(B
[ruby-trunk - Bug #7287] please rename atomic.h which conflicts with /usr/include/atomic.h in Solari
on 2012-11-09 17:14
Issue #7287 has been updated by ngoto (Naohisa Goto). > 回避策のrevertと名前変更は一緒にやったほうがいいと思うのでngotoさんがコミットしてもらったほうがいいかと思います。名前は rb_atomic.h で異論ありません。(ほかのでもOK、そこにこだわりはない) r37603 にていったん r37491 をリバートした後、r37604 にてコミットしました。 ファイル名は、旧atomic.h内でマクロ RUBY_ATOMIC_H を使っているのを見て、何となく、rb_atomic.h ではなく ruby_atomic.h にしました。 ---------------------------------------- Bug #7287: please rename atomic.h which conflicts with /usr/include/atomic.h in Solaris10 https://bugs.ruby-lang.org/issues/7287#change-32720 Author: ngoto (Naohisa Goto) Status: Closed Priority: Low Assignee: ngoto (Naohisa Goto) Category: Target version: ruby -v: ruby 2.0.0dev (2012-11-05) [sparc64-solaris2.10] Solaris10にて、ccやfccなどgcc以外を使用してコンパイルする際は、Rubyソース内の atomic.h にて、以下のようにシステムの atomic.h (/usr/include/atomic.h)を#includeしています。 #elif defined(__sun) #include <atomic.h> #include "atomic.h" とは違って #include <atomic.h> のように<>で囲んでいるので、システムのヘッダファイルが優先されるはず、と思っていたら、実はそうではなく、configureがコンパイル時のオプションとして "-I." を追加しているため、Rubyソース側の atomic.h しか読み込むことができず、どう頑張ってもシステムの /usr/include/atomic.h は読み込まれないことが判明しました。 このため、以下のように"implicit function declaration"の警告が出ます。(行番号はr36984の場合) "gc.c", line 1421: warning: implicit function declaration: atomic_swap_uint "gc.c", line 1902: warning: implicit function declaration: atomic_or_uint "gc.c", line 1952: warning: implicit function declaration: atomic_swap_ulong 幸い、Solaris10およびIllumos(旧OpenSolaris)の現時点の /usr/include/atomic.h は、実質的に 内部で #include <sys/atomic.h> しているだけでしたので、#include <sys/atomic.h> をRubyの atomic.h に追加することで問題を回避できました。ただし、Solaris10のmanページ(man atomic_ops)では atomic.h を使うように指示がされており、sys/atomic.h はカーネル内ドライバ専用らしいので、OSの将来のバージョン・リビジョンでは最悪コンパイルできなくなる可能性は残っています。根本的解決策としては、Ruby側のatomic.hのファイル名を違う名前に変更するしかないと思います。 ファイル名変更するときは、他のOSやライブラリとも被らないことが望ましいので若干調べたところ、 AIX 6.1 では、#include <sys/atomic_op.h> だそうです。 http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.j... BoehmGC が要求する libatomic_ops には atomic_ops.h が含まれているようです。 https://github.com/ivmai/libatomic_ops/
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.