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