[#30408] Ruby 1.8.6 preview2 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.6 preview2 をリリースしました。

20 messages 2007/02/24
[#30414] fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Hidetoshi NAGAI <nagai@...> 2007/02/25

永井@知能.九工大です.

[#30418] Re: fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Nobuyoshi Nakada <nobu@...> 2007/02/25

なかだです。

[ruby-dev:30401] Re: [ruby_1_8] can't grub Digest::SHAxxx on powerpc-darwin

From: Minero Aoki <aamine@...>
Date: 2007-02-23 02:03:33 UTC
List: ruby-dev #30401
青木です。

On 2007/02/12, at 2:20, Tadashi Saito wrote:

> こんばんは。斎藤と申します。

> 1.8.6のリリーススケジュールを耳にしまして、久しぶりに 
> ruby_1_8をMac OS X
> でビルドしてみました。以下のようにconfigureした後

> $ ruby_1_8 -rdigest -e 'Digest::SHA384'
> <HOME>/lib/ruby/1.8/digest.rb:15:in `const_missing':
> Digest class not found: Digest::SHA256 (NameError)

dln.c のコンパイル時に「NSIsSymbolNameDefined is  
deprecated」
と警告が出ていました。どうも dlopen が使われてないようです。
dlopen を使うように変えたところ、元の digest.rb が動くように
なりました。

~/c/ruby-1.8 % /usr/local/pkg/ruby-1.8/bin/ruby -v -rdigest -e 'p  
Digest::SHA384'
ruby 1.8.6 (2007-02-19 patchlevel 5000) [i686-darwin8.8.3]
Digest::SHA384

~/c/ruby-1.8 % grep autoload /usr/local/pkg/ruby-1.8/lib/ruby/1.8/ 
digest.rb
autoload "SHA256", "digest/sha2.so"
autoload "SHA384", "digest/sha2.so"
autoload "SHA512", "digest/sha2.so"

環境は以下の通りです。

~/c/ruby-1.8 % uname -srm
Darwin 8.8.3 i386

参考のためパッチをはりつけておきます。

--
青木峰郎


Index: dln.c
===================================================================
--- dln.c	(revision 11808)
+++ dln.c	(working copy)
@@ -81,19 +81,27 @@
# include "macruby_private.h"
#endif
+#if defined(__APPLE__) && defined(__MACH__)
+# if defined(HAVE_DLOPEN)
+#  define MACOSX_DLOPEN
+#else
+#  define MACOSX_DYLD
+# endif
+#endif
+
#ifdef __BEOS__
# include <image.h>
#endif
#ifndef NO_DLN_LOAD
-#if defined(HAVE_DLOPEN) && !defined(USE_DLN_A_OUT) && !defined 
(_AIX) && !defined(__APPLE__) && !defined(_UNICOSMP)
+#if defined(HAVE_DLOPEN) && !defined(USE_DLN_A_OUT) && !defined 
(_AIX) && !defined(MACOSX_DYLD) && !defined(_UNICOSMP)
/* dynamic load with dlopen() */
# define USE_DLN_DLOPEN
#endif
#ifndef FUNCNAME_PATTERN
-# if defined(__hp9000s300) ||  (defined(__NetBSD__) && !defined 
(__ELF__)) || defined(__BORLANDC__) || (defined(__FreeBSD__) && ! 
defined(__ELF__)) || (defined(__OpenBSD__) && !defined(__ELF__)) ||  
defined(NeXT) || defined(__WATCOMC__) || defined(__APPLE__)
+# if defined(__hp9000s300) ||  (defined(__NetBSD__) && !defined 
(__ELF__)) || defined(__BORLANDC__) || (defined(__FreeBSD__) && ! 
defined(__ELF__)) || (defined(__OpenBSD__) && !defined(__ELF__)) ||  
defined(NeXT) || defined(__WATCOMC__) || defined(MACOSX_DYLD)
#  define FUNCNAME_PATTERN "_Init_%s"
# else
#  define FUNCNAME_PATTERN "Init_%s"
@@ -1141,7 +1149,7 @@
#endif
#endif
#else
-#ifdef __APPLE__
+#ifdef MACOSX_DYLD
#include <mach-o/dyld.h>
#endif
#endif
@@ -1403,7 +1411,7 @@
      }
#endif /* _AIX */
-#if defined(NeXT) || defined(__APPLE__)
+#if defined(NeXT) || defined(MACOSX_DYLD)
#define DLN_DEFINED
/*----------------------------------------------------
     By SHIROYAMA Takayuki Psi@fortune.nest.or.jp



In This Thread