diff options
author | Michael Sterrett <mr_bones_@gentoo.org> | 2005-11-08 21:17:41 +0000 |
---|---|---|
committer | Michael Sterrett <mr_bones_@gentoo.org> | 2005-11-08 21:17:41 +0000 |
commit | b33ad199f2d648d65f49601a6934c53e6696c7e0 (patch) | |
tree | a494dae3994d39712e89e583d353ce2dbdff4c3b | |
parent | Version bump: 0.96.5 aka 1.0.0-rc5. Removed old ebuilds. (diff) | |
download | historical-b33ad199f2d648d65f49601a6934c53e6696c7e0.tar.gz historical-b33ad199f2d648d65f49601a6934c53e6696c7e0.tar.bz2 historical-b33ad199f2d648d65f49601a6934c53e6696c7e0.zip |
clean old ebuild
Package-Manager: portage-2.0.51.22-r3
-rw-r--r-- | dev-python/rpy/ChangeLog | 6 | ||||
-rw-r--r-- | dev-python/rpy/Manifest | 23 | ||||
-rw-r--r-- | dev-python/rpy/files/digest-rpy-0.3.5-r1 | 2 | ||||
-rw-r--r-- | dev-python/rpy/files/rpy-0.3.5-cvs_backport.patch | 1419 | ||||
-rw-r--r-- | dev-python/rpy/rpy-0.3.5-r1.ebuild | 41 |
5 files changed, 10 insertions, 1481 deletions
diff --git a/dev-python/rpy/ChangeLog b/dev-python/rpy/ChangeLog index 17ea6202fdec..b52a438bb93a 100644 --- a/dev-python/rpy/ChangeLog +++ b/dev-python/rpy/ChangeLog @@ -1,6 +1,10 @@ # ChangeLog for dev-python/rpy # Copyright 2000-2005 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/dev-python/rpy/ChangeLog,v 1.10 2005/11/03 20:25:42 liquidx Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-python/rpy/ChangeLog,v 1.11 2005/11/08 21:17:41 mr_bones_ Exp $ + + 08 Nov 2005; Michael Sterrett <mr_bones_@gentoo.org> + -files/rpy-0.3.5-cvs_backport.patch, -rpy-0.3.5-r1.ebuild: + clean old ebuild *rpy-0.4.6 (03 Nov 2005) diff --git a/dev-python/rpy/Manifest b/dev-python/rpy/Manifest index 6a22b194e2b9..6aa6b5c01fa3 100644 --- a/dev-python/rpy/Manifest +++ b/dev-python/rpy/Manifest @@ -1,20 +1,7 @@ ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -MD5 c81dd842949c1217893b892f1f93d6a1 ChangeLog 1647 -MD5 2790be0dc37abd8a240661c8e9b4d4fe files/90rpy 21 -MD5 581447dc98908d7d7babd7d3671a18a1 files/digest-rpy-0.3.5-r1 121 -MD5 cba240ff421fed6562ae8d4bfa8d1ea4 files/digest-rpy-0.4.1 61 -MD5 49ceece8f3e5c2c176ab0ef8fe3bf02a files/digest-rpy-0.4.6 60 -MD5 176085f9bd98993ed545abef3a2e3ed6 files/rpy-0.3.5-cvs_backport.patch 42962 MD5 71c4638c9c88af75b58e5f5cb54fe008 metadata.xml 159 -MD5 d9e70c7d46182aa2708bdbe343ff971e rpy-0.3.5-r1.ebuild 1071 -MD5 8f05933a41fd0b74ff73496e73b4e349 rpy-0.4.1.ebuild 673 MD5 06aabfe7a9b5130115431ccdbd6bef60 rpy-0.4.6.ebuild 673 ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.2 (GNU/Linux) - -iD8DBQFDanLV9ZFPrqoILX8RAtpSAKDC72Tzad6r4YQ84A/CwMRxDYHutACeJQiD -OTVLFhPRk70E3pHY7eR3trM= -=5Rxw ------END PGP SIGNATURE----- +MD5 1437ab731ca2a32c1c7163c654ad321d ChangeLog 1785 +MD5 8f05933a41fd0b74ff73496e73b4e349 rpy-0.4.1.ebuild 673 +MD5 cba240ff421fed6562ae8d4bfa8d1ea4 files/digest-rpy-0.4.1 61 +MD5 49ceece8f3e5c2c176ab0ef8fe3bf02a files/digest-rpy-0.4.6 60 +MD5 2790be0dc37abd8a240661c8e9b4d4fe files/90rpy 21 diff --git a/dev-python/rpy/files/digest-rpy-0.3.5-r1 b/dev-python/rpy/files/digest-rpy-0.3.5-r1 deleted file mode 100644 index 156577443ef5..000000000000 --- a/dev-python/rpy/files/digest-rpy-0.3.5-r1 +++ /dev/null @@ -1,2 +0,0 @@ -MD5 afc9ee721007ab1f04d4948f5e4c3787 rpy-0.3.5.tar.gz 72829 -MD5 3900bca37cabb4b76b8d736d51cc9251 R-2.0.0.tar.gz 10676072 diff --git a/dev-python/rpy/files/rpy-0.3.5-cvs_backport.patch b/dev-python/rpy/files/rpy-0.3.5-cvs_backport.patch deleted file mode 100644 index 97af0d7ff8a9..000000000000 --- a/dev-python/rpy/files/rpy-0.3.5-cvs_backport.patch +++ /dev/null @@ -1,1419 +0,0 @@ -Only in rpy: CVS -Only in rpy-0.3.5: ChangeLog -Only in rpy-0.3.5: ChangeLog.rej -Only in rpy-0.3.5: ChangeLog~ -Only in rpy-0.3.5: PKG-INFO -diff -ur rpy-0.3.5/README rpy/README ---- rpy-0.3.5/README 2004-01-16 06:29:31.000000000 +0000 -+++ rpy/README 2004-09-13 22:22:51.000000000 +0100 -@@ -45,10 +45,10 @@ - not, the following steps should be enough: - - <go to the R source directory> -- make distclean -- ./configure --enable-R-shlib -- make -- make install -+ make distclean -+ ./configure --enable-R-shlib -+ make -+ make install - - (Solaris users, please, see the note (a) below.) - -@@ -57,17 +57,17 @@ - /usr/local/lib/R): - - o make a link to RHOME/bin/libR.so in /usr/local/lib or /usr/lib, then -- run 'ldconfig', -+ run 'ldconfig', - - o or, put the following line in your .bashrc (or equivalent): - -- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:RHOME/bin -+ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:RHOME/bin - - o or, edit the file /etc/ld.so.conf and add the following line: - - RHOME/bin - -- and then, run 'ldconfig'. -+ and then, run 'ldconfig'. - - (c) Now, just type: - -@@ -79,7 +79,7 @@ - directory, just read the README file in that directory. For a quickier test, - launch the Python interpreter and import the module 'rpy': - -- Python 2.2 (#2, Dec 23 2001, 16:30:35) -+ Python 2.2 (#2, Dec 23 2001, 16:30:35) - [GCC 2.95.4 20010703 (Debian prerelease)] on linux2 - Type "help", "copyright", "credits" or "license" for more information. - >>> import rpy -@@ -187,25 +187,25 @@ - My path [with a newline added after each ';' for clarity, - remove these for the actual variable value!] is: - -- C:\Progra~1\Micros~3\Common\MSDev98\Bin; -- C:\Progra~1\Micros~3\VC98\BIN; -- C:\Progra~1\Micros~3\Common\TOOLS; -- C:\Progra~1\Micros~3\Common\TOOLS\WINNT; -- C:\Progra~1\Micros~2\Office; -- C:\WINNT\system32; -- C:\WINNT; -- C:\WINNT\System32\Wbem; -- C:\Progra~1\R\rw1081\bin; -- C:\Progra~1\R\tools; -- C:\Progra~1\R\tools\bin; -- C:\python23; -- -- IMPORTANT: Use the alternative 8 character name for any long -- names or names that contain spaces. -- -- Note that this list includes several Visual C directories, -- the bin directory of the installed version of R, the tools -- directory, the MinGW bin directory, and the python directory. -+ C:\Progra~1\Micros~3\Common\MSDev98\Bin; -+ C:\Progra~1\Micros~3\VC98\BIN; -+ C:\Progra~1\Micros~3\Common\TOOLS; -+ C:\Progra~1\Micros~3\Common\TOOLS\WINNT; -+ C:\Progra~1\Micros~2\Office; -+ C:\WINNT\system32; -+ C:\WINNT; -+ C:\WINNT\System32\Wbem; -+ C:\Progra~1\R\rw1081\bin; -+ C:\Progra~1\R\tools; -+ C:\Progra~1\R\tools\bin; -+ C:\python23; -+ -+ IMPORTANT: Use the alternative 8 character name for any long -+ names or names that contain spaces. -+ -+ Note that this list includes several Visual C directories, -+ the bin directory of the installed version of R, the tools -+ directory, the MinGW bin directory, and the python directory. - - Step 5: Modify the first few lines of the rpywin "setup.py" file to - give the paths where you installed the R binary and source code. -@@ -214,26 +214,55 @@ - - in the rpywin directory do - -- set RSRC=C:\Program Files\R\src\R-1.8.1 -- set RHOME=C:\Program Files\R\rw1018 -+ set RSRC=C:\Progra~1\R\src\R-1.9.1 -+ set RHOME=C:\Progra~1\R\rw1091 - -- lib /def:%RSRC%\src\gnuwin32\R.exp /machine:ix86 -+ lib /def:%RHOME%\src\gnuwin32\R.exp /machine:ix86 - /out:%RHOME%/bin/Rdll.lib - -- [The lib command should be all on one line.] -+ [The lib command should be all on one line.] -+ -+ ALTERNATIVE (added by Matjaz Kukar) -+ You may also using pexports, see distutils documentation or -+ http://starship.python.net/crew/kernr/mingw32/Notes.html): -+ -+ pexports %RHOME%/bin/R.dll > %RHOME%/bin/Rdll.def -+ lib/def:%RHOME%/bin/Rdll.def /out:%RHOME%/bin/Rdll.lib /machine:ix86 -+ -+ Somehow, by this approach more external variables from R.dll -+ may be linked with, if declared as -+ -+ __declspec(dllimport) FILE *R_Outputfile; -+ __declspec(dllimport) int UserBreak; -+ -+ Puzzling fact: UserBreak can be linked with in both cases, -+ whereas R_Outputfile only in the second (pexports) case. -+ - - Step 7: Build rpy: - -- in the rpywin directory do: -+ in the rpywin directory do: - -- python setup.py build -+ python setup.py build - - Step 8: Install rpy: - -- python setup.py install -+ python setup.py install - - All done! - -+NOTE about compiling with Visual C++ 7 for Python 2.3: you may need to patch -+msvccompiler.py from the distutils module. VC7 handling seems to be broken, -+in my case I needed to change line 212 to -+ -+if False: # len (self.__paths) == 0: -+ -+in order to prevent raising the followin error: -+ -+"Python was built with version 6 of Visual Studio, -+and extensions need to be built with the same -+version of the compiler, but it isn't installed." -+ - 3. USING RPy - - For details see the documentation in the 'doc' directory. As a quick example, -Only in rpy/debian: CVS -Only in rpy/doc: CVS -Only in rpy-0.3.5/doc: Makefile.old -diff -ur rpy-0.3.5/doc/manual.texi rpy/doc/manual.texi ---- rpy-0.3.5/doc/manual.texi 2004-02-17 18:57:17.000000000 +0000 -+++ rpy/doc/manual.texi 2004-08-23 22:18:42.000000000 +0100 -@@ -319,7 +319,7 @@ - @node R objects look up, Robj type, Interface description, Interface description - @section R objects look up - --There are two ways of retrieve a @R{} object via the @Python{} -+There are two ways of retrieving a @R{} object via the @Python{} - @code{r} object: - - @itemize @bullet -@@ -535,7 +535,7 @@ - which is used when the default mode is set to @samp{NO_DEFAULT}, - (@pxref{Python to R}). When no argument is passed to this method, it - displays the current local conversion mode of the object. (The two --names are synonym for compatibility with version 0.1.) -+names are synonyms for compatibility with version 0.1.) - - @item lcall([argument list]) - This method calls the R object (if callable) using the parameters -Only in rpy-0.3.5/doc: manual.texi.old -Only in rpy/examples: CVS -Only in rpy/examples/useful: CVS -diff -ur rpy-0.3.5/rpy.py rpy/rpy.py ---- rpy-0.3.5/rpy.py 2004-02-04 21:26:46.000000000 +0000 -+++ rpy/rpy.py 2004-02-27 04:45:44.000000000 +0000 -@@ -16,7 +16,7 @@ - # - # High level module for managing the lookup of R objects. - # --# $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ -+# $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ - # - # - from __future__ import nested_scopes -diff -ur rpy-0.3.5/rpy_io.py rpy/rpy_io.py ---- rpy-0.3.5/rpy_io.py 2004-02-04 21:27:15.000000000 +0000 -+++ rpy/rpy_io.py 2004-02-27 17:05:40.000000000 +0000 -@@ -16,7 +16,7 @@ - # - # Basic io. - # --# $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ -+# $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ - # - # - -diff -ur rpy-0.3.5/rpy_version.py rpy/rpy_version.py ---- rpy-0.3.5/rpy_version.py 2004-02-18 03:03:55.000000000 +0000 -+++ rpy/rpy_version.py 2004-10-23 02:55:52.000000000 +0100 -@@ -1 +1 @@ --rpy_version = "0.3.5" -+rpy_version = "0.3.5-CVS" -diff -ur rpy-0.3.5/setup.py rpy/setup.py ---- rpy-0.3.5/setup.py 2004-02-17 18:19:15.000000000 +0000 -+++ rpy/setup.py 2004-09-13 22:27:18.000000000 +0100 -@@ -8,17 +8,22 @@ - def get_R_HOME(): - if sys.platform == 'win32': - import win32api, win32con -- -- hkey = win32api.RegOpenKeyEx( win32con.HKEY_LOCAL_MACHINE, -- "Software\\R-core\\R", -- 0, win32con.KEY_QUERY_VALUE ) -- # get the base directory -- rhome = win32api.RegQueryValueEx( hkey, "InstallPath" )[0] -- win32api.RegCloseKey( hkey ) -+ rhome = os.getenv("R_HOME") -+ if not rhome: -+ try: -+ hkey = win32api.RegOpenKeyEx( win32con.HKEY_LOCAL_MACHINE, -+ "Software\\R-core\\R", -+ 0, win32con.KEY_QUERY_VALUE ) -+ # get the base directory -+ rhome = win32api.RegQueryValueEx( hkey, "InstallPath" )[0] -+ win32api.RegCloseKey( hkey ) -+ except: -+ raise DistutilsExecError("couldn't execute the R interpreter.\n" -+ "Check whether R is in the execution path.") - return rhome - else: - stat, rhome = commands.getstatusoutput('R RHOME') -- if stat: -+ if stat or len(rhome)<=0: - raise DistutilsExecError("couldn't execute the R interpreter.\n" - "Check whether R is in the execution path.") - return rhome -@@ -43,7 +48,7 @@ - get_config_vars()['OPT'] = '-DNDEBUG -g -O3 -Wall' - - # get the Python version --if sys.version[:3] == '2.2': -+if sys.version[:3] >= '2.2': - DEFINE = [] - UNDEF = ['PRE_2_2'] - else: -@@ -52,28 +57,54 @@ - - # configure the R paths - RHOME = get_R_HOME() --DEFINE.append(('R_HOME', '"%s"' %RHOME)) -+if sys.platform=="win32": -+ DEFINE.append(('R_HOME', '\\"%s\\"' % RHOME.replace("\\","/") )) -+else: -+ DEFINE.append(('R_HOME', '"%s"' % RHOME)) -+ -+### Caution: don't do -->DEFINE.append(('R_HOME', "'%s'" %RHOME))<--- -+### it doesn't work under Unix. - - r_libs = os.path.join(RHOME, 'bin') - source_files = ["src/rpymodule.c", "src/R_eval.c", - "src/io.c"] -+ - if sys.platform=='win32': - RSRC = get_R_SRC() -- include_dirs = [ os.path.join(RHOME.strip(), 'src/include'), -- os.path.join(RSRC.strip(), 'src/include'), 'src' ] -- libraries=["Rdll","Advapi32"] -- library_dirs = [r_libs, "C:\rpy\bin"] -+ include_dirs = [ os.path.join(RHOME.strip(), 'src\\include'), -+ os.path.join(RSRC.strip(), 'src\\include'), 'src' ] -+ libraries=["Rdll","Advapi32"] -+ library_dirs = [r_libs] -+ #runtime_libs = [r_libs] -+ extra_compile_args= ["-wd4068"] # Disable unknown pragma warning in pyconfig.h -+ source_files = source_files + ["src\\setenv.c"] -+elif sys.platform=='darwin': -+ RSRC = get_R_SRC() -+ include_dirs = [ os.path.join(RHOME.strip(), 'include'), -+ os.path.join(RSRC.strip(), 'src/include'), -+ 'src' ] -+ libraries=['R'] -+ library_dirs=[os.path.join(RHOME.strip(), 'Frameworks')] - extra_compile_args=[] -+ runtime_libs = [] -+elif sys.platform=='osf1V5': -+ RSRC = get_R_SRC() -+ include_dirs = [ os.path.join(RHOME.strip(), 'include'), -+ os.path.join(RSRC.strip(), 'src/include'), -+ 'src' ] -+ libraries=["R"] -+ library_dirs = [r_libs] -+ runtime_libs = [] -+ extra_compile_args=["-shared"] - source_files = source_files + ["src/setenv.c"] --elif sys.platform=='darwin': -- include_dirs = [ os.path.join(RHOME.strip(), 'include'), 'src' ] -- libraries=['R'] -- library_dirs=[os.path.join(RHOME.strip(), 'Frameworks')] -- extra_compile_args=[] - else: # unix-like systems, this is known to work for Linux and Solaris -- include_dirs = [ os.path.join(RHOME.strip(), 'include'), 'src' ] -+ RSRC = get_R_SRC() -+ include_dirs = [ os.path.join(RHOME.strip(), 'include'), -+ os.path.join(RSRC.strip(), 'src/include'), -+ 'src' ] - libraries=["R"] - library_dirs = [r_libs] -+ runtime_libs = [r_libs] - extra_compile_args=["-shared"] - source_files = source_files + ["src/setenv.c"] - -@@ -93,25 +124,49 @@ - converted to Python exceptions.""" - - --setup(name="rpy", -- version=rpy_version, -- description="Python interface to the R language", -- author="Walter Moreira", -- author_email="walterm@cmat.edu.uy", -- url="http://rpy.sourceforge.net", -- license="GPL", -- long_description=LONG_DESC, -- py_modules=['rpy', 'rpy_io', 'rpy_version'], -- ext_modules=[Extension("_rpy", -- source_files, -- include_dirs=include_dirs, -- libraries=libraries, -- library_dirs=library_dirs, -- define_macros=DEFINE, -- undef_macros=UNDEF, -- extra_compile_args=extra_compile_args, -- runtime_library_dirs = [r_libs], -- ), - -- ] -+if sys.platform=='win32': -+ setup(name="rpy", -+ version=rpy_version, -+ description="Python interface to the R language", -+ author="Walter Moreira", -+ author_email="walterm@cmat.edu.uy", -+ url="http://rpy.sourceforge.net", -+ license="GPL", -+ long_description=LONG_DESC, -+ py_modules=['rpy', 'rpy_io', 'rpy_version'], -+ ext_modules=[Extension("_rpy", -+ source_files, -+ include_dirs=include_dirs, -+ libraries=libraries, -+ library_dirs=library_dirs, -+ define_macros=DEFINE, -+ undef_macros=UNDEF, -+ extra_compile_args=extra_compile_args -+ ), -+ -+ ] -+ ) -+else: -+ setup(name="rpy", -+ version=rpy_version, -+ description="Python interface to the R language", -+ author="Walter Moreira", -+ author_email="walterm@cmat.edu.uy", -+ url="http://rpy.sourceforge.net", -+ license="GPL", -+ long_description=LONG_DESC, -+ py_modules=['rpy', 'rpy_io', 'rpy_version'], -+ ext_modules=[Extension("_rpy", -+ source_files, -+ include_dirs=include_dirs, -+ libraries=libraries, -+ library_dirs=library_dirs, -+ define_macros=DEFINE, -+ undef_macros=UNDEF, -+ extra_compile_args=extra_compile_args, -+ runtime_library_dirs = runtime_libs, -+ ), -+ -+ ] - ) -Only in rpy/src: CVS -diff -ur rpy-0.3.5/src/RPy.h rpy/src/RPy.h ---- rpy-0.3.5/src/RPy.h 2004-02-12 02:37:40.000000000 +0000 -+++ rpy/src/RPy.h 2004-10-23 02:55:53.000000000 +0100 -@@ -16,20 +16,36 @@ - * - * Public API for calling R. - * -- * $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ -+ * $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ - * - */ - - #ifndef _RPY_H - #define _RPY_H - -+#ifdef _WIN32 -+#undef ERROR /* nameclash with Rext/RS.h */ -+#include <windows.h> -+#undef ERROR -+#endif /*_WIN32*/ -+ - #include <R.h> - #include <Rdefines.h> - #include <Rinternals.h> -+#include <Rversion.h> - #include <Python.h> - #include <R_ext/Rdynload.h> - #include <R_ext/eventloop.h> - -+#ifdef _WIN32 -+#define Win32 /* needed to get definition for UIMode */ -+#include <Startup.h> -+#undef Win32 -+#include <Graphics.h> -+#else -+#include <Startup.h> -+#endif -+ - #include <signal.h> - - #include "robjobject.h" -@@ -69,11 +85,38 @@ - extern void init_io_routines(PyObject *); - - /* I/O functions */ -+#ifdef _WIN32 -+__declspec(dllimport) FILE *R_Outputfile; -+#else - extern FILE *R_Outputfile; -+#endif -+ -+#ifdef _WIN32 -+extern void RPy_WriteConsole(char *, int); -+extern int RPy_ReadConsole(char *, char *, int, int); -+#endif -+ - extern void (*ptr_R_WriteConsole)(char *, int); - extern int (*ptr_R_ReadConsole)(char *, unsigned char *, int, int); - extern int (*ptr_R_ShowFiles)(int, char **, char **, char *, int, char *); - -+#ifdef _WIN32 -+extern void R_WriteConsole(char *, int); -+extern int R_ReadConsole(char *, unsigned char *, int, int); -+extern void R_ProcessEvents(void); -+extern char *getDLLVersion(); -+extern void R_DefParams(Rstart); -+extern void R_SetParams(Rstart); -+extern void setup_term_ui(void); -+extern char *getRHOME(void); -+__declspec(dllimport) int UserBreak; -+#endif -+ -+ -+ -+ -+ -+ - - /* Setters for io functions */ - PyObject *set_output(PyObject *self, PyObject *args); -diff -ur rpy-0.3.5/src/R_eval.c rpy/src/R_eval.c ---- rpy-0.3.5/src/R_eval.c 2004-02-17 18:48:27.000000000 +0000 -+++ rpy/src/R_eval.c 2004-10-22 14:06:13.000000000 +0100 -@@ -1,136 +1,143 @@ --/* -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with this program; if not, write to the Free Software -- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -- * -- * -- * Evaluation of R expressions. -- * -- * $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ -- * -- */ -- --#include <RPy.h> -- --/* The Python original SIGINT handler */ --PyOS_sighandler_t python_sigint; -- --/* Indicates whether the R interpreter was interrupted by a SIGINT */ --int interrupted = 0; -- --/* Abort the current R computation due to a SIGINT */ --void interrupt_R(int signum) --{ -- interrupted = 1; -- error("Interrupted"); --} -- -- --/* Evaluate a SEXP. It must be constructed by hand. It raises a Python -- exception if an error ocurred in the evaluation */ --SEXP do_eval_expr(SEXP e) { -- SEXP res; -- int error = 0; -- PyOS_sighandler_t old_int; -- -- /* Enable our handler for SIGINT inside the R -- interpreter. Otherwise, we cannot stop R calculations, since -- SIGINT is only processed between Python bytecodes. Also, save the -- Python SIGINT handler because it is necessary to temporally -- restore it in user defined I/O Python functions. */ -- stop_events(); -- -- #ifdef _WIN32 -- old_int = PyOS_getsig(SIGBREAK); -- #else -- old_int = PyOS_getsig(SIGINT); -- #endif -- python_sigint = old_int; -- -- signal(SIGINT, interrupt_R); -- -- interrupted = 0; -- res = R_tryEval(e, R_GlobalEnv, &error); -- -- #ifdef _WIN32 -- PyOS_setsig(SIGBREAK, old_int); -- #else -- PyOS_setsig(SIGINT, old_int); -- #endif -- -- start_events(); -- -- if (error) { -- if (interrupted) { -- PyErr_SetNone(PyExc_KeyboardInterrupt); -- } -- else -- PyErr_SetString(RPyExc_Exception, get_last_error_msg()); -- return NULL; -- } -- -- -- return res; --} -- --/* Evaluate a function given by a name (without arguments) */ --SEXP do_eval_fun(char *name) { -- SEXP exp, fun, res; -- -- fun = get_from_name(name); -- if (!fun) -- return NULL; -- -- PROTECT(fun); -- PROTECT(exp = allocVector(LANGSXP, 1)); -- SETCAR(exp, fun); -- -- PROTECT(res = do_eval_expr(exp)); -- UNPROTECT(3); -- return res; --} -- --/* -- * Get an R object from his name. When not found, an exception is -- * raised. The checking of the length of the identifier is needed to -- * avoid that R raises an error. If this happens, Python dumps core. -- */ --SEXP get_from_name(char *ident) { -- SEXP obj; -- -- /* For R not to throw an error, we must check the identifier is -- neither null nor greater than MAXIDSIZE */ -- if (!*ident) { -- PyErr_SetString(RPyExc_Exception, "attempt to use zero-length variable name"); -- return NULL; -- } -- if (strlen(ident) > MAXIDSIZE) { -- PyErr_SetString(RPyExc_Exception, "symbol print-name too long"); -- return NULL; -- } -- -- obj = Rf_findVar(Rf_install(ident), R_GlobalEnv); -- if (obj == R_UnboundValue) { -- PyErr_Format(RPyExc_Exception, "Object \"%s\" not found", ident); -- return NULL; -- } -- return obj; --} -- --/* Obtain the text of the last R error message */ --char *get_last_error_msg() { -- SEXP msg; -- -- msg = do_eval_fun("geterrmessage"); -- return CHARACTER_VALUE(msg); --} -+/*
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ *
-+ * Evaluation of R expressions.
-+ *
-+ * $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $
-+ *
-+ */
-+
-+#include <RPy.h>
-+
-+/* The Python original SIGINT handler */
-+PyOS_sighandler_t python_sigint;
-+
-+/* Indicates whether the R interpreter was interrupted by a SIGINT */
-+int interrupted = 0;
-+
-+/* Abort the current R computation due to a SIGINT */
-+void interrupt_R(int signum)
-+{
-+ interrupted = 1;
-+ error("Interrupted");
-+}
-+
-+
-+/* Evaluate a SEXP. It must be constructed by hand. It raises a Python
-+ exception if an error ocurred in the evaluation */
-+SEXP do_eval_expr(SEXP e) {
-+ SEXP res;
-+ int error = 0;
-+ PyOS_sighandler_t old_int;
-+
-+ /* Enable our handler for SIGINT inside the R
-+ interpreter. Otherwise, we cannot stop R calculations, since
-+ SIGINT is only processed between Python bytecodes. Also, save the
-+ Python SIGINT handler because it is necessary to temporally
-+ restore it in user defined I/O Python functions. */
-+ stop_events();
-+
-+ #ifdef _WIN32
-+ old_int = PyOS_getsig(SIGBREAK);
-+ #else
-+ old_int = PyOS_getsig(SIGINT);
-+ #endif
-+ python_sigint = old_int;
-+
-+ signal(SIGINT, interrupt_R);
-+
-+ interrupted = 0;
-+ res = R_tryEval(e, R_GlobalEnv, &error);
-+
-+ #ifdef _WIN32
-+ PyOS_setsig(SIGBREAK, old_int);
-+ #else
-+ PyOS_setsig(SIGINT, old_int);
-+ #endif
-+
-+ start_events();
-+
-+ if (error) {
-+ if (interrupted) {
-+ PyErr_SetNone(PyExc_KeyboardInterrupt);
-+ }
-+ else
-+ PyErr_SetString(RPyExc_Exception, get_last_error_msg());
-+ return NULL;
-+ }
-+
-+
-+ return res;
-+}
-+
-+/* Evaluate a function given by a name (without arguments) */
-+SEXP do_eval_fun(char *name) {
-+ SEXP exp, fun, res;
-+
-+ fun = get_from_name(name);
-+ if (!fun)
-+ return NULL;
-+
-+ PROTECT(fun);
-+ PROTECT(exp = allocVector(LANGSXP, 1));
-+ SETCAR(exp, fun);
-+
-+ PROTECT(res = do_eval_expr(exp));
-+ UNPROTECT(3);
-+ return res;
-+}
-+
-+/*
-+ * Get an R object from his name. When not found, an exception is
-+ * raised. The checking of the length of the identifier is needed to
-+ * avoid that R raises an error. If this happens, Python dumps core.
-+ */
-+SEXP get_from_name(char *ident) {
-+ SEXP obj;
-+
-+ /* For R not to throw an error, we must check the identifier is
-+ neither null nor greater than MAXIDSIZE */
-+ if (!*ident) {
-+ PyErr_SetString(RPyExc_Exception, "attempt to use zero-length variable name");
-+ return NULL;
-+ }
-+ if (strlen(ident) > MAXIDSIZE) {
-+ PyErr_SetString(RPyExc_Exception, "symbol print-name too long");
-+ return NULL;
-+ }
-+
-+#if R_VERSION < 0x20000 // pre-R-2.0.0
-+ obj = Rf_findVar(Rf_install(ident), R_GlobalEnv);
-+#else
-+ obj = Rf_findVar(Rf_install(ident), R_GlobalEnv);
-+ if (obj != R_UnboundValue)
-+ obj = Rf_findFun(Rf_install(ident), R_GlobalEnv);
-+#endif
-+
-+ if (obj == R_UnboundValue) {
-+ PyErr_Format(RPyExc_Exception, "Object \"%s\" not found", ident);
-+ return NULL;
-+ }
-+ return obj;
-+}
-+
-+/* Obtain the text of the last R error message */
-+char *get_last_error_msg() {
-+ SEXP msg;
-+
-+ msg = do_eval_fun("geterrmessage");
-+ return CHARACTER_VALUE(msg);
-+}
-diff -ur rpy-0.3.5/src/io.c rpy/src/io.c ---- rpy-0.3.5/src/io.c 2004-01-08 16:18:56.000000000 +0000 -+++ rpy/src/io.c 2004-02-27 04:47:27.000000000 +0000 -@@ -16,7 +16,7 @@ - * - * Input/Output routines - * -- * $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ -+ * $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ - * - */ - -@@ -78,13 +78,13 @@ - #ifdef _WIN32 - int - RPy_ReadConsole(char *prompt, -- char *buf, -- int len, int addtohistory) -+ char *buf, -+ int len, int addtohistory) - #else - int - RPy_ReadConsole(char *prompt, -- unsigned char *buf, -- int len, int addtohistory) -+ unsigned char *buf, -+ int len, int addtohistory) - #endif - { - PyObject *input_data; -@@ -116,7 +116,7 @@ - - int - RPy_ShowFiles(int nfile, char **file, char **headers, -- char *wtitle, int del, char *pager) -+ char *wtitle, int del, char *pager) - { - PyObject *pyfiles, *pyheaders, *result, *f, *h; - PyOS_sighandler_t old_int; -@@ -146,7 +146,7 @@ - } - - result = PyObject_CallFunction(rpy_showfiles, "OOsi", pyfiles, pyheaders, -- wtitle, del); -+ wtitle, del); - Py_DECREF(pyfiles); - Py_DECREF(pyheaders); - -diff -ur rpy-0.3.5/src/robjobject.h rpy/src/robjobject.h ---- rpy-0.3.5/src/robjobject.h 2004-01-08 16:18:56.000000000 +0000 -+++ rpy/src/robjobject.h 2004-02-27 04:47:27.000000000 +0000 -@@ -16,7 +16,7 @@ - * - * The Robj type - * -- * $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ -+ * $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ - * - */ - -diff -ur rpy-0.3.5/src/rpymodule.c rpy/src/rpymodule.c ---- rpy-0.3.5/src/rpymodule.c 2004-02-17 18:48:27.000000000 +0000 -+++ rpy/src/rpymodule.c 2004-10-23 02:55:53.000000000 +0100 -@@ -16,7 +16,7 @@ - * - * Implementation of the module '_rpy' and the 'Robj' type. - * -- * $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ -+ * $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ - * - */ - -@@ -25,14 +25,9 @@ - - #define NONAMELESSUNION - #include <stdio.h> -+#include <stdlib.h> - #include <string.h> - --#ifdef _WIN32 --#include <windows.h> --#include <Startup.h> --#endif -- -- - /* Global objects */ - static SEXP get_item; - static SEXP set_item; -@@ -157,10 +152,10 @@ - SEXP robj, rit; - int i, len, state; - int fsm[5][5] = {{0, 0, 0, 0, 0}, -- {0, 1, 2, 3, 0}, -- {0, 2, 2, 3, 0}, -- {0, 3, 3, 3, 0}, -- {0, 0, 0, 0, 4}}; -+ {0, 1, 2, 3, 0}, -+ {0, 2, 2, 3, 0}, -+ {0, 3, 3, 3, 0}, -+ {0, 0, 0, 0, 4}}; - - len = PySequence_Length(obj); - if (len == 0) -@@ -273,7 +268,7 @@ - - pytl = Py_BuildValue("[i]", tl); - obj = (PyArrayObject *)PyArray_ContiguousFromObject((PyObject *)obj, -- PyArray_NOTYPE, 0, 0); -+ PyArray_NOTYPE, 0, 0); - nobj = PyArray_Reshape(obj, pytl); - Py_XDECREF(pytl); - Py_XDECREF(obj); -@@ -354,17 +349,17 @@ - #endif - - } else if ((PySequence_Check(obj)) && -- (PySequence_Size(obj) >= 0)) { -- PROTECT(robj = seq_to_R(obj)); /* No labels */ -+ (PySequence_Size(obj) >= 0)) { -+ PROTECT(robj = seq_to_R(obj)); /* No labels */ - - } else if ((PyMapping_Check(obj)) && -- (PyMapping_Size(obj) >= 0)) { -+ (PyMapping_Size(obj) >= 0)) { - PROTECT(robj = dict_to_R(obj)); - - } else { - PyErr_Format(RPyExc_Exception, "cannot convert from type '%s'", -- obj->ob_type->tp_name); -- PROTECT(robj = NULL); /* Protected to avoid stack inbalance */ -+ obj->ob_type->tp_name); -+ PROTECT(robj = NULL); /* Protected to avoid stack inbalance */ - } - - if (do_decref) { -@@ -402,7 +397,7 @@ - * fastest index */ - static PyObject * - ltranspose(PyObject *list, int *dims, int *strides, -- int pos, int shift, int len) -+ int pos, int shift, int len) - { - PyObject *nl, *it; - int i; -@@ -413,10 +408,10 @@ - if (pos == len-1) { - for (i=0; i<dims[pos]; i++) { - if (!(it = PyList_GetItem(list, i*strides[pos]+shift))) -- return NULL; -+ return NULL; - Py_INCREF(it); - if (PyList_SetItem(nl, i, it) < 0) -- return NULL; -+ return NULL; - } - return nl; - } -@@ -511,12 +506,12 @@ - #endif - - if (!robj) -- return -1; /* error */ -+ return -1; /* error */ - - if (robj == R_NilValue) { - Py_INCREF(Py_None); - *obj = Py_None; -- return 1; /* succeed */ -+ return 1; /* succeed */ - } - - len = GET_LENGTH(robj); -@@ -528,42 +523,42 @@ - case INTSXP: - integers = INTEGER(robj); - if(isFactor(robj)) { -- thislevel = CHAR(STRING_ELT(GET_LEVELS(robj), integers[i]-1)); -- if (!(it = PyString_FromString(thislevel))) -- return -1; -+ thislevel = CHAR(STRING_ELT(GET_LEVELS(robj), integers[i]-1)); -+ if (!(it = PyString_FromString(thislevel))) -+ return -1; - } - else { -- if (!(it = PyInt_FromLong(integers[i]))) -- return -1; -+ if (!(it = PyInt_FromLong(integers[i]))) -+ return -1; - } - break; - case REALSXP: - reals = REAL(robj); - if (!(it = PyFloat_FromDouble(reals[i]))) -- return -1; -+ return -1; - break; - case CPLXSXP: - complexes = COMPLEX(robj); - if (!(it = PyComplex_FromDoubles(complexes[i].r, -- complexes[i].i))) -- return -1; -+ complexes[i].i))) -+ return -1; - break; - case STRSXP: - strings = CHAR(STRING_ELT(robj, i)); - if (!(it = PyString_FromString(strings))) -- return -1; -+ return -1; - break; - case LISTSXP: - if (!(it = to_Pyobj_with_mode(elt(robj, i), 1))) -- return -1; -+ return -1; - break; - case VECSXP: - if (!(it = to_Pyobj_with_mode(VECTOR_ELT(robj, i), 1))) -- return -1; -+ return -1; - break; - default: - Py_DECREF(tmp); -- return 0; /* failed */ -+ return 0; /* failed */ - } - - if (PyList_SetItem(tmp, i, it) < 0) -@@ -574,8 +569,8 @@ - if (dim != R_NilValue) { - #ifdef WITH_NUMERIC - array = to_PyNumericArray(tmp, dim); -- if (array) { /* If the conversion to Numeric succeed.. */ -- *obj = array; /* we are done */ -+ if (array) { /* If the conversion to Numeric succeed.. */ -+ *obj = array; /* we are done */ - Py_DECREF(tmp); - return 1; - } -@@ -631,9 +626,9 @@ - if (!fun) { - PyErr_Clear(); - for (i=0; i<GET_LENGTH(rclass); i++) -- if ((fun = PyDict_GetItemString(class_table, -- CHAR(STRING_ELT(rclass, i))))) -- break; -+ if ((fun = PyDict_GetItemString(class_table, -+ CHAR(STRING_ELT(rclass, i))))) -+ break; - } - else - Py_INCREF(fun); -@@ -689,16 +684,16 @@ - - i = from_proc_table(robj, &fun); - if (i < 0) -- return -1; /* an error occurred */ -+ return -1; /* an error occurred */ - - if (!fun) -- return 0; /* conversion failed */ -+ return 0; /* conversion failed */ - - tmp = (PyObject *)Robj_new(robj, TOP_MODE); - *obj = PyObject_CallFunction(fun, "O", tmp); - Py_DECREF(fun); - Py_DECREF(tmp); -- return 1; /* conversion succeed */ -+ return 1; /* conversion succeed */ - } - - /* Convert a Robj to a Python object via the class table (mode 2) */ -@@ -711,13 +706,13 @@ - fun = from_class_table(robj); - - if (!fun) -- return 0; /* conversion failed */ -+ return 0; /* conversion failed */ - - tmp = (PyObject *)Robj_new(robj, TOP_MODE); - *obj = PyObject_CallFunction(fun, "O", tmp); - Py_DECREF(fun); - Py_DECREF(tmp); -- return 1; /* conversion succeed */ -+ return 1; /* conversion succeed */ - } - - PyObject * -@@ -890,38 +885,38 @@ - if(!it) goto fail_arg; - if( PySequence_Size(it) != 2 ) - { -- Py_DECREF(it); -- goto fail_arg; -+ Py_DECREF(it); -+ goto fail_arg; - } - nobj = PySequence_GetItem(it, 0); - - /* Name can be a string, None, or NULL, error otherwise. */ - if (PyString_Check(nobj)) - { -- name = dotter(PyString_AsString(nobj)); -- Py_DECREF(nobj); -+ name = dotter(PyString_AsString(nobj)); -+ Py_DECREF(nobj); - } - else if (nobj == Py_None) - { -- name = NULL; -- Py_DECREF(nobj); -+ name = NULL; -+ Py_DECREF(nobj); - } - else if(nobj == NULL) - { -- name = NULL; -+ name = NULL; - } - else - { -- Py_DECREF(nobj); -- goto fail_arg; -+ Py_DECREF(nobj); -+ goto fail_arg; - } - - /* Value can be anything. */ - value = PySequence_GetItem(it, 1); - if (!value) - { -- PyMem_Free(name); -- goto fail; -+ PyMem_Free(name); -+ goto fail; - } - - rvalue = to_Robj(value); -@@ -935,8 +930,8 @@ - /* Add name (if present) */ - if (name && strlen(name)>0) - { -- SET_TAG(*e, Rf_install(name)); -- PyMem_Free(name); -+ SET_TAG(*e, Rf_install(name)); -+ PyMem_Free(name); - } - - /* Move index to new end of call */ -@@ -946,7 +941,7 @@ - - fail_arg: - PyErr_SetString(PyExc_ValueError, -- "Argument must be a sequence of (\"name\", value) pairs.\n"); -+ "Argument must be a sequence of (\"name\", value) pairs.\n"); - fail: - return 0; - } -@@ -976,7 +971,7 @@ - if(largs != 1 || !PySequence_Check(args) ) - { - PyErr_SetString(PyExc_ValueError, -- "Argument must be a sequence of (\"name\", value) pairs.\n"); -+ "Argument must be a sequence of (\"name\", value) pairs.\n"); - return NULL; - } - -@@ -1033,7 +1028,7 @@ - static char *kwlist[] = {"val", 0}; - - if (!PyArg_ParseTupleAndKeywords(args, kwds, "|i:autoconvert", kwlist, -- &conversion)) -+ &conversion)) - return NULL; - - if (conversion > 3) { -@@ -1060,7 +1055,7 @@ - int conv=default_mode; - - if (!PyArg_ParseTupleAndKeywords(args, kwds, "|i:as_py", kwlist, -- &conv)) -+ &conv)) - return NULL; - - if (conv <= -2 || conv > TOP_MODE) { -@@ -1080,7 +1075,7 @@ - {"local_mode", (PyCFunction)Robj_autoconvert, METH_VARARGS|METH_KEYWORDS}, - {"as_py", (PyCFunction)Robj_as_py, METH_VARARGS|METH_KEYWORDS}, - {"lcall", (PyCFunction)Robj_lcall, METH_VARARGS}, -- {NULL, NULL} /* sentinel */ -+ {NULL, NULL} /* sentinel */ - }; - - /* Sequence protocol implementation */ -@@ -1168,14 +1163,14 @@ - - /* We should implement sq_slice, sq_contains ... */ - static PySequenceMethods Robj_as_sequence = { -- (inquiry)Robj_len, /* sq_length */ -- 0, /* sq_concat */ -- 0, /* sq_repeat */ -- (intargfunc)Robj_item, /* sq_item */ -- 0, /* sq_slice */ -- (intobjargproc)Robj_ass_item, /* sq_ass_item */ -- 0, /* sq_ass_slice */ -- 0, /* sq_contains */ -+ (inquiry)Robj_len, /* sq_length */ -+ 0, /* sq_concat */ -+ 0, /* sq_repeat */ -+ (intargfunc)Robj_item, /* sq_item */ -+ 0, /* sq_slice */ -+ (intobjargproc)Robj_ass_item, /* sq_ass_item */ -+ 0, /* sq_ass_slice */ -+ 0, /* sq_contains */ - }; - - -@@ -1193,30 +1188,30 @@ - statichere PyTypeObject Robj_Type = { - /* The ob_type field must be initialized in the module init function - * to be portable to Windows without using C++. */ --#if defined(PRE_2_2) -+#if defined(PRE_2_2) || defined(_WIN32) // Matjaz - PyObject_HEAD_INIT(NULL) - #else - PyObject_HEAD_INIT(&PyType_Type) - #endif -- 0, /*ob_size*/ -- "Robj", /*tp_name*/ -- sizeof(RobjObject), /*tp_basicsize*/ -- 0, /*tp_itemsize*/ -+ 0, /*ob_size*/ -+ "Robj", /*tp_name*/ -+ sizeof(RobjObject), /*tp_basicsize*/ -+ 0, /*tp_itemsize*/ - /* methods */ - (destructor)Robj_dealloc, /*tp_dealloc*/ -- 0, /*tp_print*/ -+ 0, /*tp_print*/ - #ifdef PRE_2_2 - (getattrfunc)Robj_getattr, - #else - 0, - #endif - 0, -- 0, /*tp_compare*/ -- 0, /*tp_repr*/ -- 0, /*tp_as_number*/ -- &Robj_as_sequence, /*tp_as_sequence*/ -- 0, /*tp_as_mapping*/ -- 0, /*tp_hash*/ -+ 0, /*tp_compare*/ -+ 0, /*tp_repr*/ -+ 0, /*tp_as_number*/ -+ &Robj_as_sequence, /*tp_as_sequence*/ -+ 0, /*tp_as_mapping*/ -+ 0, /*tp_hash*/ - (ternaryfunc)Robj_call, /*tp_call*/ - 0, /*tp_str*/ - #if defined(PRE_2_2) || defined(_WIN32) -@@ -1273,7 +1268,7 @@ - - static char *kwlist[] = {"name", "autoconvert", 0}; - if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|i:get", kwlist, -- &obj_str, &conversion)) -+ &obj_str, &conversion)) - return NULL; - - robj = get_from_name(obj_str); -@@ -1323,7 +1318,7 @@ - - static char *kwlist[] = {"usec", 0}; - if (!PyArg_ParseTupleAndKeywords(args, kwds, "|i:r_events", -- kwlist, &usec)) -+ kwlist, &usec)) - return NULL; - - if (R_interact) { -@@ -1369,20 +1364,27 @@ - } - - -+void -+r_cleanup(void) -+{ -+ R_CleanUp(SA_NOSAVE, 1, 0); -+} -+ - - /* List of functions defined in the module */ - static PyMethodDef rpy_methods[] = { -- {"get", (PyCFunction)get, METH_VARARGS | METH_KEYWORDS}, -- {"set_mode", (PyCFunction)set_mode, METH_VARARGS}, -- {"get_mode", (PyCFunction)get_mode, METH_VARARGS}, -- {"set_output", (PyCFunction)set_output, METH_VARARGS}, -- {"set_input", (PyCFunction)set_input, METH_VARARGS}, -+ {"get", (PyCFunction)get, METH_VARARGS | METH_KEYWORDS}, -+ {"set_mode", (PyCFunction)set_mode, METH_VARARGS}, -+ {"get_mode", (PyCFunction)get_mode, METH_VARARGS}, -+ {"set_output", (PyCFunction)set_output, METH_VARARGS}, -+ {"set_input", (PyCFunction)set_input, METH_VARARGS}, - {"set_showfiles", (PyCFunction)set_showfiles, METH_VARARGS}, -- {"get_output", (PyCFunction)get_output, METH_VARARGS}, -- {"get_input", (PyCFunction)get_input, METH_VARARGS}, -+ {"get_output", (PyCFunction)get_output, METH_VARARGS}, -+ {"get_input", (PyCFunction)get_input, METH_VARARGS}, - {"get_showfiles", (PyCFunction)get_showfiles, METH_VARARGS}, -- {"r_events", (PyCFunction)r_events, METH_VARARGS | METH_KEYWORDS}, -- {NULL, NULL} /* sentinel */ -+ {"r_events", (PyCFunction)r_events, METH_VARARGS | METH_KEYWORDS}, -+ {"r_cleanup", (PyCFunction)r_cleanup, METH_NOARGS}, -+ {NULL, NULL} /* sentinel */ - }; - - #ifdef _WIN32 -@@ -1448,15 +1450,15 @@ - } - - if (rc == ERROR_SUCCESS) { -- /* set R_HOME */ -+ /* set R_HOME */ - char *buf = (char *) malloc( (strlen( RHome ) + 8) * sizeof( char )); - strcpy( buf, "R_HOME="); - strcat( buf, RHome ); - putenv( buf ); - } - else { -- /* not found, fall back to getRHOME() */ -- strcpy(RHome, getRHOME()); -+ /* not found, fall back to getRHOME() */ -+ strcpy(RHome, getRHOME()); - } - } - } -@@ -1479,22 +1481,29 @@ - - Rp->home = RUser; - Rp->CharacterMode = LinkDLL; -- Rp->ReadConsole = (blah1) R_ReadConsole; -- Rp->WriteConsole = (blah2) R_WriteConsole; -+ -+ Rp->ReadConsole = (blah1) RPy_ReadConsole; // Matjaz -+ Rp->WriteConsole = (blah2) RPy_WriteConsole; // Matjaz -+ - Rp->CallBack = (blah3) RPyDoNothing; - Rp->message = char_message; - Rp->yesnocancel = char_yesnocancel; - Rp->busy = RPyBusy; -- Rp->R_Quiet = 1; -+ Rp->R_Quiet = TRUE; - - /* run as "interactive", so server won't be killed after an error */ - Rp->R_Slave = Rp->R_Verbose = 0; -- Rp->R_Interactive = 1; -- Rp->RestoreAction = 0; /* no restore */ -- Rp->SaveAction = 2; /* no save */ -+ Rp->R_Interactive = TRUE; -+ Rp->RestoreAction = SA_RESTORE; /* no restore */ -+ Rp->SaveAction = SA_NOSAVE; /* no save */ -+ -+#if R_VERSION < 0x20000 // pre-R-2.0.0 -+ - Rp->CommandLineArgs = NULL; - Rp->NumCommandLineArgs = 0; -- -+#else -+ R_set_command_line_arguments(0, NULL); -+#endif - R_SetParams(Rp); /* so R_ShowMessage is set */ - R_SizeFromEnv(Rp); - -@@ -1511,6 +1520,7 @@ - DL_EXPORT(void) - init_rpy(void) - { -+ static char RHome[] = R_HOME; - PyObject *m, *d; - char *defaultargv[] = {"rpy", "-q", "--vanilla"}; - PyOS_sighandler_t old_int; -@@ -1558,9 +1568,21 @@ - init_embedded_win32(); - #else - // envvar c-def -- setenv("R_HOME", R_HOME, 1); -+ if ( strlen(RHome)>0 ) -+ { -+ setenv("R_HOME", RHome, 1); -+ } -+ else -+ { -+ // TODO: put code here to Run R RHOME to get R_HOME value -+ fprintf(stderr, "Error setting R_HOME at build time.\n"); -+ exit(-1); -+ } -+ -+ -+ - Rf_initEmbeddedR( sizeof(defaultargv) / sizeof(defaultargv[0]), -- defaultargv); -+ defaultargv); - #endif - - /* Restore Python handlers */ -@@ -1610,3 +1632,29 @@ - // PyObject_Print(r_lock, stderr, Py_PRINT_RAW); - r_lock = NULL; - } -+ -+ -+#ifndef _WIN32 -+char *getRHOME(void) -+{ -+ char *cmd = "R RHOME"; -+ char *buf; -+ FILE *ptr; -+ int index; -+ -+ buf = malloc(BUFSIZ); -+ -+ if ((ptr = popen(cmd, "r")) != NULL) -+ fgets(buf, BUFSIZ, ptr); -+ (void) pclose(ptr); -+ -+ index = strlen(buf); -+ index--; -+ -+ // strip off trailing newline or CR -+ while( buf[index]=='\n' || buf[index]=='\r' ) -+ buf[index--] = 0; -+ -+ return buf; -+} -+#endif -diff -ur rpy-0.3.5/src/setenv.c rpy/src/setenv.c ---- rpy-0.3.5/src/setenv.c 2004-01-15 22:55:16.000000000 +0000 -+++ rpy/src/setenv.c 2004-02-27 04:47:28.000000000 +0000 -@@ -16,7 +16,7 @@ - * - * For POSIX compliance. - * -- * $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ -+ * $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ - * - */ - -diff -ur rpy-0.3.5/src/setenv.h rpy/src/setenv.h ---- rpy-0.3.5/src/setenv.h 2004-01-08 16:18:56.000000000 +0000 -+++ rpy/src/setenv.h 2004-02-27 04:47:28.000000000 +0000 -@@ -16,7 +16,7 @@ - * - * For POSIX compliance - * -- * $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ -+ * $Id: rpy-0.3.5-cvs_backport.patch,v 1.1 2005/04/26 13:27:34 liquidx Exp $ - * - */ - -Only in rpy/tests: CVS -Only in rpy-0.3.5/tests: rpy_test.py diff --git a/dev-python/rpy/rpy-0.3.5-r1.ebuild b/dev-python/rpy/rpy-0.3.5-r1.ebuild deleted file mode 100644 index a2b28558cb2e..000000000000 --- a/dev-python/rpy/rpy-0.3.5-r1.ebuild +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/dev-python/rpy/rpy-0.3.5-r1.ebuild,v 1.1 2005/04/26 13:27:34 liquidx Exp $ - -inherit distutils - -DESCRIPTION="RPy is a very simple, yet robust, Python interface to the R Programming Language." -HOMEPAGE="http://rpy.sourceforge.net" -SRC_URI="mirror://sourceforge/rpy/${P}.tar.gz http://cran.r-project.org/src/base/R-2/R-2.0.0.tar.gz" -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~x86" -IUSE="" -DEPEND="virtual/python - >=dev-lang/R-2 - dev-python/numeric" - -src_unpack() { - unpack ${A} - cd ${S} - epatch ${FILESDIR}/rpy-0.3.5-cvs_backport.patch - - # compat fix for R-2.0.0 - sed -e "s#^r_libs = .*#r_libs = '/usr/lib/R/lib'#" \ - -i ${S}/setup.py - - # fix for undefined symbol: MAIN__ - echo "int MAIN__( ) { return(0); }" >> ${S}/src/rpymodule.c -} - -src_compile() { - export R_SRC=${WORKDIR}/R-2.0.0 - export R_HOME=/usr/lib/R - distutils_src_compile -} - -src_install() { - export R_SRC=${WORKDIR}/R-2.0.0 - export R_HOME=/usr/lib/R - distutils_src_install -}
\ No newline at end of file |