Hi Phillip,<br><br>I am not involved in the efforts to produce the RPython
version of cx_Oracle, and have little knowledge of its maturity and compatibility.<br><br>That said, I worked on a ctypes-based version of cx_Oracle, specifically tested with PyPy.<br>It has a very good percentage of tests passing from the original cx_Oracle test suite, but it has not been tested in the real-world yet, and its performance is generally worse than C-based cx_Oracle.<br>
<br>If you are interested, check it out at <a href="https://github.com/lameiro/cx_oracle_on_ctypes">https://github.com/lameiro/cx_oracle_on_ctypes</a><br><br><div class="gmail_quote">2012/2/21 Phillip Class <span dir="ltr"><<a href="mailto:phillip.d.class@gmail.com">phillip.d.class@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Building PyPy with cx_Oracle fails. I am using Python 2.7 on Ubuntu 64-bit with Oracle 11.2. Build command is: python translate.py -Ojit targetpypystandalone.py --withmod-oracle. <br>
Below is the traceback:<br><br>[Timer] Timings:<br>
[Timer] annotate --- 1834.3 s<br>[Timer] rtype_lltype --- 1697.2 s<br>[Timer] pyjitpl_lltype --- 1216.3 s<br>[Timer] ===========================================<br>
[Timer] Total: --- 4747.9 s<br>
[translation:ERROR] Error:<br>[translation:ERROR] Traceback (most recent call last):<br>[translation:ERROR] File "translate.py", line 309, in main<br>[translation:ERROR] drv.proceed(goals)<br>[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/translator/driver.py", line 814, in proceed<br>
[translation:ERROR] return self._execute(goals, task_skip = self._maybe_skip())<br>[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/translator/tool/taskengine.py", line 116, in _execute<br>[translation:ERROR] res = self._do(goal, taskcallable, *args, **kwds)<br>
[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/translator/driver.py", line 287, in _do<br>[translation:ERROR] res = func()<br>[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/translator/driver.py", line 399, in task_pyjitpl_lltype<br>
[translation:ERROR] backend_name=self.config.translation.jit_backend, inline=True)<br>[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/jit/metainterp/warmspot.py", line 48, in apply_jit<br>[translation:ERROR] warmrunnerdesc.finish()<br>
[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/jit/metainterp/warmspot.py", line 236, in finish<br>[translation:ERROR] self.annhelper.finish()<br>[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/rpython/annlowlevel.py", line 240, in finish<br>
[translation:ERROR] self.finish_annotate()<br>[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/rpython/annlowlevel.py", line 259, in finish_annotate<br>[translation:ERROR] ann.complete_helpers(self.policy)<br>
[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/annotation/annrpython.py", line 180, in complete_helpers<br>[translation:ERROR] self.complete()<br>[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/annotation/annrpython.py", line 254, in complete<br>
[translation:ERROR] self.processblock(graph, block)<br>[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/annotation/annrpython.py", line 452, in processblock<br>[translation:ERROR] self.flowin(graph, block)<br>
[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/annotation/annrpython.py", line 512, in flowin<br>[translation:ERROR] self.consider_op(block.operations[i])<br>[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/annotation/annrpython.py", line 714, in consider_op<br>
[translation:ERROR] raise_nicer_exception(op, str(graph))<br>[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/annotation/annrpython.py", line 711, in consider_op<br>[translation:ERROR] resultcell = consider_meth(*argcells)<br>
[translation:ERROR] File "<4444-codegen /home/pclass/Desktop/pypy/pypy/annotation/annrpython.py:749>", line 3, in consider_op_simple_call<br>[translation:ERROR] return arg.simple_call(*args)<br>[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/annotation/unaryop.py", line 175, in simple_call<br>
[translation:ERROR] return obj.call(getbookkeeper().build_args("simple_call", args_s))<br>[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/annotation/unaryop.py", line 706, in call<br>[translation:ERROR] return bookkeeper.pbc_call(pbc, args)<br>
[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/annotation/bookkeeper.py", line 668, in pbc_call<br>[translation:ERROR] results.append(desc.pycall(schedule, args, s_previous_result, op))<br>[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/annotation/description.py", line 976, in pycall<br>
[translation:ERROR] return self.funcdesc.pycall(schedule, args, s_previous_result, op)<br>[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/annotation/description.py", line 297, in pycall<br>[translation:ERROR] result = schedule(graph, inputcells)<br>
[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/annotation/bookkeeper.py", line 664, in schedule<br>[translation:ERROR] return self.annotator.recursivecall(graph, whence, inputcells)<br>[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/annotation/annrpython.py", line 395, in recursivecall<br>
[translation:ERROR] position_key)<br>[translation:ERROR] File "/home/pclass/Desktop/pypy/pypy/annotation/annrpython.py", line 235, in addpendingblock<br>[translation:ERROR] assert annmodel.unionof(s_oldarg, s_newarg) == s_oldarg<br>
[translation:ERROR] AssertionError':<br>[translation:ERROR] .. v2309 = simple_call(v2301, v2302, v2303, v2304, v2305, v2306, v2307, v2308)<br>[translation:ERROR] .. '(pypy.module.pypyjit.policy:49)PyPyJitIface._compile_hook'<br>
[translation:ERROR] Processing block:<br>[translation:ERROR] block@226 is a <class 'pypy.objspace.flow.flowcontext.SpamBlock'><br>[translation:ERROR] in (pypy.module.pypyjit.policy:49)PyPyJitIface._compile_hook<br>
[translation:ERROR] containing the following operations:<br>[translation:ERROR] v2309 = simple_call(v2301, v2302, v2303, v2304, v2305, v2306, v2307, v2308)<br>[translation:ERROR] --end--<br>[translation] start debugger...<br>
> /home/pclass/Desktop/pypy/pypy/annotation/annrpython.py(235)addpendingblock()<br>-> assert annmodel.unionof(s_oldarg, s_newarg) == s_oldarg<br>(Pdb+) <br><br>
<br>_______________________________________________<br>
pypy-dev mailing list<br>
<a href="mailto:pypy-dev@python.org">pypy-dev@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/pypy-dev" target="_blank">http://mail.python.org/mailman/listinfo/pypy-dev</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Best regards,<br>Leandro Lameiro<br><br>Blog: <a href="http://lameiro.wordpress.com" target="_blank">http://lameiro.wordpress.com</a><br>Twitter: <a href="http://twitter.com/lameiro" target="_blank">http://twitter.com/lameiro</a><br>