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
[email protected]
https://lists.sourceforge.net/lists/listinfo/rpy-list