On 2013-01-02 15:25, Johan Johansson wrote: > Success: > > @@ -188,6 +188,8 @@ > r_exec = os.path.join(r_home, 'bin', 'R') > # Twist if Win32 > if sys.platform == "win32": > + if sys.version.find("64 bit") > 0: > + r_exec = os.path.join(r_home, 'bin', 'x64', 'R') > if sys.version_info >= (3,): > import subprocess > p = subprocess.Popen('"'+r_exec+'" --version', > @@ -332,14 +334,19 @@ > > > def get_rconfig(r_home, about, allow_empty = False): > - r_exec = os.path.join(r_home, 'bin', 'R') > + if sys.platform == "win32" and sys.version.find("64 bit") > 0: > + r_exec = os.path.join(r_home, 'bin', 'x64', 'R') > + else: > + r_exec = os.path.join(r_home, 'bin', 'R') > cmd = '"'+r_exec+'" CMD config '+about > + print cmd > rp = os.popen(cmd) > rconfig = rp.readline() > #Twist if 'R RHOME' spits out a warning > if rconfig.startswith("WARNING"): > rconfig = rp.readline() > rconfig = rconfig.strip() > + print rconfig > rc = RConfig.from_string(rconfig, allow_empty = allow_empty) > rp.close() > return rc > @@ -348,6 +355,7 @@ > #r_libs = [os.path.join(RHOME, 'lib'), os.path.join(RHOME, 'modules')] > r_libs = [] > extra_link_args = [] > + extra_compile_args = [] > > #FIXME: crude way (will break in many cases) > #check how to get how to have a configure step > @@ -355,6 +363,12 @@ > > if sys.platform == 'win32': > define_macros.append(('Win32', 1)) > + if sys.version.find('64 bit') > 0: > + define_macros.append(('Win64', 1)) > + extra_link_args.append('-m64') > + extra_compile_args.append('-m64') > + # See http://bugs.python.org/issue4709 > + define_macros.append(('MS_WIN64', 1)) > else: > define_macros.append(('R_INTERFACE_PTRS', 1)) > define_macros.append(('HAVE_POSIX_SIGJMP', 1)) > @@ -368,7 +382,6 @@ > else: > pass > > - > include_dirs = [] > > rinterface_ext = Extension( > @@ -403,8 +416,9 @@ > library_dirs = r_libs, > define_macros = define_macros, > runtime_library_dirs = r_libs, > + extra_compile_args=extra_compile_args, > #extra_compile_args=['-O0', '-g'], > - #extra_link_args = extra_link_args > + extra_link_args = extra_link_args > ) > > rpy_device_ext = Extension( > @@ -419,6 +433,7 @@ > library_dirs = r_libs, > define_macros = define_macros, > runtime_library_dirs = r_libs, > + extra_compile_args=extra_compile_args, > #extra_compile_args=['-O0', '-g'], > extra_link_args = extra_link_args > ) > > It turned out to be (mostly) a matter of defining the right > preprocessor symbols. I've run through some of the examples in the > documentation with no obvious ill effects.
Great! `python -m rpy2.tests` will run all unittests Win64 users will certainly be happy. Can you submit a pull request ? (easier for me). Thanks. L. > > Johan > > On Wed, Jan 2, 2013 at 12:18 AM, Johan Johansson <johan2s...@gmail.com> wrote: >> On Wed, Jan 2, 2013 at 12:07 AM, Laurent Gautier <lgaut...@gmail.com> wrote: >>> On 2013-01-01 23:45, Johan Johansson wrote: >>>> #if SIZEOF_SIZE_T != SIZEOF_INT >>>> /* On a 64-bit system, rename the Py_InitModule4 so that 2.4 >>>> modules cannot get loaded into a 2.5 interpreter */ >>>> #define Py_InitModule4 Py_InitModule4_64 >>>> #endif >>> The comment suggests that this concerns pre-Python2.4 vs post-Python2.5 >>> compiled module. >>> May be not a big issue for now. >> What worries me is that SIZEOF_SIZE_T shouldn't equal SIZEOF_INT on a >> 64-bit system but apparently does. This makes me suspect I'm missing >> compiler flags/defines somewhere. >> >> Johan ------------------------------------------------------------------------------ Master Java SE, Java EE, Eclipse, Spring, Hibernate, JavaScript, jQuery and much more. Keep your Java skills current with LearnJavaNow - 200+ hours of step-by-step video tutorials by Java experts. SALE $49.99 this month only -- learn more at: http://p.sf.net/sfu/learnmore_122612 _______________________________________________ rpy-list mailing list rpy-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rpy-list