Author: pburba
Date: Mon Jul 12 19:25:16 2010
New Revision: 963443

URL: http://svn.apache.org/viewvc?rev=963443&view=rev
Log:
Follow-up to r875957, check for rb_errinfo() when using Ruby 1.9 on Windows.

Define HAVE_RB_ERRINFO if rb_errinfo() is available.

* build/generator/gen_win.py
  
  Import string.

  (get_win_defines): Define HAVE_RB_ERRINFO if rb_errinfo() is available.

  (_find_ruby): Get the version of Ruby we are linking to.

  

Modified:
    subversion/trunk/build/generator/gen_win.py

Modified: subversion/trunk/build/generator/gen_win.py
URL: 
http://svn.apache.org/viewvc/subversion/trunk/build/generator/gen_win.py?rev=963443&r1=963442&r2=963443&view=diff
==============================================================================
--- subversion/trunk/build/generator/gen_win.py (original)
+++ subversion/trunk/build/generator/gen_win.py Mon Jul 12 19:25:16 2010
@@ -34,6 +34,7 @@ import fnmatch
 import re
 import subprocess
 import glob
+import string
 import generator.swig.header_wrappers
 import generator.swig.checkout_swig_header
 import generator.swig.external_runtime
@@ -833,6 +834,11 @@ class WinGeneratorBase(GeneratorBase):
     if isinstance(target, gen_base.TargetSWIG):
       fakedefines.append("SWIG_GLOBAL")
 
+    # Expect rb_errinfo() to be avilable in Ruby 1.9+,
+    # rather than ruby_errinfo.
+    if (self.ruby_major_version > 1 or self.ruby_minor_version > 8):
+      fakedefines.extend(["HAVE_RB_ERRINFO"])
+
     if cfg == 'Debug':
       fakedefines.extend(["_DEBUG","SVN_DEBUG"])
     elif cfg == 'Release':
@@ -1207,19 +1213,31 @@ class WinGeneratorBase(GeneratorBase):
     "Find the right Ruby library name to link swig bindings with"
     self.ruby_includes = []
     self.ruby_libdir = None
+    self.ruby_version = None
+    self.ruby_major_version = None
+    self.ruby_minor_version = None
     proc = os.popen('ruby -rrbconfig -e ' + escape_shell_arg(
+                    "puts Config::CONFIG['ruby_version'];"
                     "puts Config::CONFIG['LIBRUBY'];"
                     "puts Config::CONFIG['archdir'];"
                     "puts Config::CONFIG['libdir'];"), 'r')
     try:
-      libruby = proc.readline()[:-1]
-      if libruby:
-        msg = 'Found installed ruby.'
-        self.ruby_lib = libruby
-        self.ruby_includes.append(proc.readline()[:-1])
-        self.ruby_libdir = proc.readline()[:-1]
+      rubyver = proc.readline()[:-1]
+      if rubyver:
+        self.ruby_version = rubyver
+        self.ruby_major_version = string.atoi(self.ruby_version[0])
+        self.ruby_minor_version = string.atoi(self.ruby_version[2])
+        libruby = proc.readline()[:-1]
+        if libruby:
+          msg = 'Found installed ruby %s' % rubyver
+          self.ruby_lib = libruby
+          self.ruby_includes.append(proc.readline()[:-1])
+          self.ruby_libdir = proc.readline()[:-1]
       else:
-        msg = 'Could not detect Ruby version.'
+        msg = 'Could not detect Ruby version, assuming 1.8.'
+        self.ruby_version = "1.8"
+        self.ruby_major_version = 1
+        self.ruby_minor_version = 8
         self.ruby_lib = 'msvcrt-ruby18.lib'
       print('%s\n  Ruby bindings will be linked with %s\n'
              % (msg, self.ruby_lib))


Reply via email to