[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:002980] Re: [ruby-dcl] tiny bug fix



堀之内様

大塚です。

extconf.rb を ruby 1.9 でも動くようする
パッチを以前送っていたのですが、取り込んでいただけるでしょうか?

> RubyDCLをそろそろ更新しようと思ってます。

> 他に何か対応希望ないでしょうか。
> プレビュー版を 
> http://ruby.gfd-dennou.org/products/ruby-dcl/ruby-dcl-1.6.0pre.tar.gz
> としました。

-- 
京都大学大学院理学研究科
気象学研究室 D3
大塚成徳 (Shigenori OTSUKA)
email: otsuka@xxxxxxxxxxxxxxxxxx
diff -Naur ruby-dcl-1.5.3.org/dcl_obj2cary.c ruby-dcl-1.5.3/dcl_obj2cary.c
--- ruby-dcl-1.5.3.org/dcl_obj2cary.c	2003-12-10 16:25:37.000000000 +0900
+++ ruby-dcl-1.5.3/dcl_obj2cary.c	2008-03-11 13:24:33.546875000 +0900
@@ -5,7 +5,6 @@
 
 #include <math.h>
 #include "ruby.h"
-#include "version.h"
 #include "libtinyf2c.h"
 #include "narray.h"
 
@@ -41,7 +40,11 @@
 
 /*  defines  */
 #define BE_INTEGER(x) ((integer)(NUM2INT(rb_Integer(x))))
-#define BE_REAL(x)    ((real)(RFLOAT(rb_Float(x))->value))
+#ifndef RFLOAT_VALUE
+/* for compatibility with ruby 1.6 */
+#define RFLOAT_VALUE(x) ((real)(RFLOAT(x)->value))
+#endif
+#define BE_REAL(x)    ((real)(RFLOAT_VALUE(rb_Float(x))))
 #define BE_LOGICAL(x) (((x == Qnil) || (x == Qfalse)) ? FALSE_ : TRUE_ )
 /* not implemented 
 #define BE_COMPLEX(x) ...
@@ -268,9 +271,11 @@
 {
     VALUE *ptr;
     long len, i, j;
-#if RUBY_VERSION_CODE > 170
+#ifdef StringValue
+    // Ruby version 1.8 or later
     long rlen;
 #else
+    // Ruby version 1.7 or before
     int rlen;
 #endif
     char *rtn, *wk, *rwk;
diff -Naur ruby-dcl-1.5.3.org/extconf.rb ruby-dcl-1.5.3/extconf.rb
--- ruby-dcl-1.5.3.org/extconf.rb	2006-12-01 09:24:43.000000000 +0900
+++ ruby-dcl-1.5.3/extconf.rb	2008-03-11 13:33:11.390625000 +0900
@@ -1,5 +1,15 @@
 require "mkmf"
-require "ftools"
+require "rbconfig"
+if Config::CONFIG["MINOR"].to_i > 7
+  $rb18 = true
+else
+  $rb18 = false
+end
+if $rb18
+  require "fileutils"
+else
+  require "ftools"
+end
 
 dir_config('narray',$sitearchdir,$sitearchdir)
 if ( ! ( have_header("narray.h") && have_header("narray_config.h") ) ) then
@@ -49,7 +59,11 @@
     initcfile = "init.c.default"
   else
     print "**Infomation** compile with gtk+ (ver.#{gtkversion})\n"
-    File.copy("grph1_zgpack.c.org","grph1_zgpack.c")
+    if $rb18
+      FileUtils.copy("grph1_zgpack.c.org","grph1_zgpack.c")
+    else
+      File.copy("grph1_zgpack.c.org","grph1_zgpack.c")
+    end
     initcfile = "init.c.gtk"
     if ldlibs =~ /-lgdk_imlib/ then
       print "**Infomation** compile with imlib_gdk\n"