Revision: 492
http://rpy.svn.sourceforge.net/rpy/?rev=492&view=rev
Author: lgautier
Date: 2008-04-17 12:12:30 -0700 (Thu, 17 Apr 2008)
Log Message:
-----------
ported/adapted RPy1's multiple-R versions feature
Modified Paths:
--------------
branches/rpy_nextgen/setup.py
Modified: branches/rpy_nextgen/setup.py
===================================================================
--- branches/rpy_nextgen/setup.py 2008-04-16 19:16:28 UTC (rev 491)
+++ branches/rpy_nextgen/setup.py 2008-04-17 19:12:30 UTC (rev 492)
@@ -1,9 +1,15 @@
-import os, os.path, sys, shutil
+import os, os.path, sys, shutil, re, itertools
from distutils.core import setup, Extension
from subprocess import Popen, PIPE
+try:
+ import ctypes
+except Exception, e:
+ print(e)
+ print("A working 'ctypes' module is required.")
+ sys.exit(1)
RHOMES = os.getenv('RHOMES')
@@ -19,15 +25,46 @@
RHOMES = RHOMES.split(os.pathsep)
+def get_rversion(RHOME):
+ r_exec = os.path.join(RHOME, 'bin', 'R')
+ rp = os.popen(r_exec+' --version')
+ rversion = rp.readline()
+ m = re.match('^R version ([^ ]+) .+$', rversion)
+ rversion = m.groups()[0]
+ rversion = [int(x) for x in rversion.split('.')]
+ return rversion
+
+def cmp_version(x, y):
+ if (x[0] < y[0]):
+ return -1
+ if (x[0] > y[0]):
+ return 1
+ if (x[0] == y[0]):
+ if len(x) == 1 or len(y) == 1:
+ return 0
+ return cmp_version(x[1:], y[1:])
+
+rnewest = [0, 0, 0]
+rversions = []
for RHOME in RHOMES:
RHOME = RHOME.strip()
print('R\'s home is:%s' %RHOME)
+ rversion = get_rversion(RHOME)
+ if (cmp_version(rversion, rnewest) == +1):
+ rnewest = rversion
+ rversions.append(rversion)
+def doSetup(RHOME, r_packversion):
r_libs = [os.path.join(RHOME, 'lib'), os.path.join(RHOME, 'modules')]
+ pack_name = 'rpy2'
+ pack_version = '0.0.1'
+ if r_packversion is not None:
+ pack_name = pack_name + '_' + r_packversion
+ pack_version = pack_version + '_' + r_packversion
rinterface = Extension(
- "rpy2.rinterface.rinterface",
+ pack_name + ".rinterface.rinterface",
["rpy/rinterface/rinterface.c", ],
include_dirs=[ os.path.join(RHOME, 'include'),],
libraries=['R', 'Rlapack', 'Rblas'],
@@ -36,16 +73,30 @@
#extra_link_args=[],
)
- setup(name="rpython",
- version="0.0.1",
- description="Python interface to the R language",
- url="http://rpy.sourceforge.net",
- license="(L)GPL",
+ 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 = {'rpy2': 'rpy'},
- packages = ['rpy2', 'rpy2.robjects', 'rpy2.robjects.tests',
- 'rpy2.rinterface', 'rpy2.rinterface.tests']
+ package_dir = {pack_name: 'rpy'},
+ packages = [pack_name,
+ pack_name+'.robjects',
+ pack_name+'.robjects.tests',
+ pack_name+'.rinterface',
+ pack_name+'.rinterface.tests']
)
+
+for rversion, RHOME in itertools.izip(rversions, RHOMES):
+
+ 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)
+
+
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 the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
rpy-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rpy-list