Revision: 533
          http://rpy.svn.sourceforge.net/rpy/?rev=533&view=rev
Author:   lgautier
Date:     2008-05-25 08:34:13 -0700 (Sun, 25 May 2008)

Log Message:
-----------
Modified the way to handle multiple versions of R (now closer to rpy 1.x)

Modified Paths:
--------------
    branches/rpy_nextgen/rpy/rinterface/rinterface.c
    branches/rpy_nextgen/setup.py

Removed Paths:
-------------
    branches/rpy_nextgen/rpy/rinterface/__init__.py.in

Deleted: branches/rpy_nextgen/rpy/rinterface/__init__.py.in
===================================================================
--- branches/rpy_nextgen/rpy/rinterface/__init__.py.in  2008-05-24 07:31:06 UTC 
(rev 532)
+++ branches/rpy_nextgen/rpy/rinterface/__init__.py.in  2008-05-25 15:34:13 UTC 
(rev 533)
@@ -1,28 +0,0 @@
-import os
-os.environ["R_HOME"]="%R_HOME%"
-
-# Win32-specific code copied from RPy-1.x
-# FIXME: isnt't it possible to have conditional code
-# at build time ?
-import sys
-if sys.platform == 'win32':
-    import win32api
-    R_HOME = os.environ["R_HOME"]
-    os.environ['PATH'] += ';' + os.path.join(R_HOME, 'bin')
-    os.environ['PATH'] += ';' + os.path.join(R_HOME, 'modules')
-    os.environ['PATH'] += ';' + os.path.join(R_HOME, 'lib')
-
-    # Load the R dll using the explicit path
-    # First try the bin dir:
-    Rlib = os.path.join(R_HOME, 'bin', 'R.dll')
-    # Then the lib dir:
-    if not os.path.exists(Rlib):
-        Rlib = os.path.join(R_HOME, 'lib', 'R.dll')
-    # Otherwise fail out!
-    if not os.path.exists(Rlib):
-        raise RuntimeError("Unable to locate R.dll within %s" % R_HOME)
-
-    win32api.LoadLibrary( Rlib )
-    del(R_HOME)
-    
-from rinterface import *

Modified: branches/rpy_nextgen/rpy/rinterface/rinterface.c
===================================================================
--- branches/rpy_nextgen/rpy/rinterface/rinterface.c    2008-05-24 07:31:06 UTC 
(rev 532)
+++ branches/rpy_nextgen/rpy/rinterface/rinterface.c    2008-05-25 15:34:13 UTC 
(rev 533)
@@ -1845,7 +1845,7 @@
   if ((code) != 0) {return ; }
 
 PyMODINIT_FUNC
-initrinterface(void)
+RPY_RINTERFACE_INIT(void)
 {
 
   /* Finalize the type object including setting type of the new type

Modified: branches/rpy_nextgen/setup.py
===================================================================
--- branches/rpy_nextgen/setup.py       2008-05-24 07:31:06 UTC (rev 532)
+++ branches/rpy_nextgen/setup.py       2008-05-25 15:34:13 UTC (rev 533)
@@ -11,6 +11,9 @@
     sys.exit(1)
 
 
+pack_name = 'rpy2'
+pack_version = '1.0-dev'
+
 RHOMES = os.getenv('RHOMES')
 
 if RHOMES is None:
@@ -39,9 +42,12 @@
         rversion = rp.readline()
     m = re.match('^R version ([^ ]+) .+$', rversion)
     rversion = m.groups()[0]
-    rversion = [int(x) for x in rversion.split('.')]
+    rversion = rversion.split('.')
+    rversion[0] = int(rversion[0])
+    rversion[1] = int(rversion[1])
     return rversion
 
+# FIXME: not neeeded anymore ?
 def cmp_version(x, y):
     if (x[0] < y[0]):
         return -1
@@ -69,70 +75,66 @@
 for RHOME in RHOMES:
     RHOME = RHOME.strip()
     rversion = get_rversion(RHOME)
-    if (cmp_version(rversion, rnewest) == +1):
-        rnewest = rversion
     rversions.append(rversion)
 
-def doSetup(RHOME, r_packversion):
+def getRinterface_ext(RHOME, r_packversion):
     r_libs = [os.path.join(RHOME, 'lib'), os.path.join(RHOME, 'modules')]
+    
+    #f_in = open(os.path.join('rpy', 'rinterface', '__init__.py.in'), 'r')
+    #f_out = open(os.path.join('rpy', 'rinterface', '__init__.py'), 'w')
+    #f_out.write('# This file is automatically generated when installing 
rpy2\n')
+    #f_out.write('# For permanent changes, ' +\
+    #                'edit __init__py.in in the source directory.\n\n')
 
-    pack_name = 'rpy2'
-    pack_version = '0.0.1-dev'
-    if r_packversion is not None:
-        pack_name = pack_name + '_' + r_packversion
-        pack_version = pack_version + '_' + r_packversion
+    #for row in f_in:
+    #    row = row.replace('%R_HOME%', RHOME)
+    #    f_out.write(row)
 
-    f_in = open(os.path.join('rpy', 'rinterface', '__init__.py.in'), 'r')
-    f_out = open(os.path.join('rpy', 'rinterface', '__init__.py'), 'w')
-    f_out.write('# This file is automatically generated when installing 
rpy2\n')
-    f_out.write('# For permanent changes, ' +\
-                    'edit __init__py.in in the source directory.\n\n')
+    #f_in.close()
+    #f_out.close()
 
-    for row in f_in:
-        row = row.replace('%R_HOME%', RHOME)
-        f_out.write(row)
-
-    f_in.close()
-    f_out.close()
-
-    rinterface = Extension(
-            pack_name + ".rinterface.rinterface",
+    rinterface_ext = Extension(
+            pack_name + ".rinterface.rinterface_" + r_packversion,
             [os.path.join('rpy', 'rinterface', 'array.c'), 
              os.path.join('rpy', 'rinterface', 'rinterface.c')],
-            include_dirs=[ os.path.join(RHOME, 'include'), 
-                           os.path.join('rpy', 'rinterface')],
-            libraries=['R', 'Rlapack', 'Rblas'],
-            library_dirs=r_libs,
-            runtime_library_dirs=r_libs,
-            extra_link_args=get_rconfig(RHOME, '--ldflags') +\
-                            get_rconfig(RHOME, 'LAPACK_LIBS') +\
-                            get_rconfig(RHOME, 'BLAS_LIBS'),
+            include_dirs = [ os.path.join(RHOME, 'include'), 
+                            os.path.join('rpy', 'rinterface')],
+            libraries = ['R', 'Rlapack', 'Rblas'],
+            library_dirs = r_libs,
+            define_macros = [('RPY_RINTERFACE_INIT', 'initrinterface_' + 
r_packversion), ],
+            runtime_library_dirs = r_libs,
+            extra_link_args = get_rconfig(RHOME, '--ldflags') +\
+                              get_rconfig(RHOME, 'LAPACK_LIBS') +\
+                              get_rconfig(RHOME, 'BLAS_LIBS'),
             )
 
-    setup(name = "rpython",
-          version = pack_version,
-          description = "Python interface to the R language",
-          url = "http://rpy.sourceforge.net";,
-          license = "(L)GPL",
-          ext_modules = [rinterface, ],
-          package_dir = {pack_name: 'rpy'},
-          packages = [pack_name, 
-                      pack_name+'.robjects', 
-                      pack_name+'.robjects.tests',
-                      pack_name+'.rinterface', 
-                      pack_name+'.rinterface.tests']
-          )
+    return rinterface_ext
 
 
+rinterface_exts = []
+rinterface_rversions = []
 
-
 for rversion, RHOME in itertools.izip(rversions, RHOMES):        
     RHOME = RHOME.strip()
-    if (cmp_version(rversion, rnewest) == 0):
-        r_packversion = None
-        doSetup(RHOME, r_packversion)
-    
-    r_packversion = '%i%02i%i' %(rversion[0], rversion[1], rversion[2])
-    doSetup(RHOME, r_packversion)
+    #if (cmp_version(rversion, rnewest) == 0):
+    #r_packversion = None
+    r_packversion = '%i%02i%s' %(rversion[0], rversion[1], rversion[2])
+    ri_ext = getRinterface_ext(RHOME, r_packversion)
+    rinterface_exts.append(ri_ext)
+    rinterface_rversions.append(r_packversion)
 
+setup(name = "rpython",
+      version = pack_version,
+      description = "Python interface to the R language",
+      url = "http://rpy.sourceforge.net";,
+      license = "(L)GPL",
+      ext_modules = rinterface_exts,
+      package_dir = {pack_name: 'rpy'},
+      packages = [pack_name,
+                  pack_name+'.robjects',
+                  pack_name+'.robjects.tests'] + \
+                 [pack_name + '.rinterface', pack_name + '.rinterface.tests']
+                 #[pack_name + '.rinterface_' + x for x in 
rinterface_rversions] + \
+                 #[pack_name + '.rinterface_' + x + '.tests' for x in 
rinterface_rversions]
+      )
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
rpy-list mailing list
rpy-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rpy-list

Reply via email to