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">&lt;<a href="mailto:phillip.d.class@gmail.com">phillip.d.class@gmail.com</a>&gt;</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 &quot;translate.py&quot;, line 309, in main<br>[translation:ERROR]     drv.proceed(goals)<br>[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/translator/driver.py&quot;, line 814, in proceed<br>


[translation:ERROR]     return self._execute(goals, task_skip = self._maybe_skip())<br>[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/translator/tool/taskengine.py&quot;, line 116, in _execute<br>[translation:ERROR]     res = self._do(goal, taskcallable, *args, **kwds)<br>


[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/translator/driver.py&quot;, line 287, in _do<br>[translation:ERROR]     res = func()<br>[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/translator/driver.py&quot;, line 399, in task_pyjitpl_lltype<br>


[translation:ERROR]     backend_name=self.config.translation.jit_backend, inline=True)<br>[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/jit/metainterp/warmspot.py&quot;, line 48, in apply_jit<br>[translation:ERROR]     warmrunnerdesc.finish()<br>


[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/jit/metainterp/warmspot.py&quot;, line 236, in finish<br>[translation:ERROR]     self.annhelper.finish()<br>[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/rpython/annlowlevel.py&quot;, line 240, in finish<br>


[translation:ERROR]     self.finish_annotate()<br>[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/rpython/annlowlevel.py&quot;, line 259, in finish_annotate<br>[translation:ERROR]     ann.complete_helpers(self.policy)<br>


[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/annotation/annrpython.py&quot;, line 180, in complete_helpers<br>[translation:ERROR]     self.complete()<br>[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/annotation/annrpython.py&quot;, line 254, in complete<br>


[translation:ERROR]     self.processblock(graph, block)<br>[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/annotation/annrpython.py&quot;, line 452, in processblock<br>[translation:ERROR]     self.flowin(graph, block)<br>


[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/annotation/annrpython.py&quot;, line 512, in flowin<br>[translation:ERROR]     self.consider_op(block.operations[i])<br>[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/annotation/annrpython.py&quot;, line 714, in consider_op<br>


[translation:ERROR]     raise_nicer_exception(op, str(graph))<br>[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/annotation/annrpython.py&quot;, line 711, in consider_op<br>[translation:ERROR]     resultcell = consider_meth(*argcells)<br>


[translation:ERROR]    File &quot;&lt;4444-codegen /home/pclass/Desktop/pypy/pypy/annotation/annrpython.py:749&gt;&quot;, line 3, in consider_op_simple_call<br>[translation:ERROR]     return arg.simple_call(*args)<br>[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/annotation/unaryop.py&quot;, line 175, in simple_call<br>


[translation:ERROR]     return obj.call(getbookkeeper().build_args(&quot;simple_call&quot;, args_s))<br>[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/annotation/unaryop.py&quot;, line 706, in call<br>[translation:ERROR]     return bookkeeper.pbc_call(pbc, args)<br>


[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/annotation/bookkeeper.py&quot;, line 668, in pbc_call<br>[translation:ERROR]     results.append(desc.pycall(schedule, args, s_previous_result, op))<br>[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/annotation/description.py&quot;, line 976, in pycall<br>


[translation:ERROR]     return self.funcdesc.pycall(schedule, args, s_previous_result, op)<br>[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/annotation/description.py&quot;, line 297, in pycall<br>[translation:ERROR]     result = schedule(graph, inputcells)<br>


[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/annotation/bookkeeper.py&quot;, line 664, in schedule<br>[translation:ERROR]     return self.annotator.recursivecall(graph, whence, inputcells)<br>[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/annotation/annrpython.py&quot;, line 395, in recursivecall<br>


[translation:ERROR]     position_key)<br>[translation:ERROR]    File &quot;/home/pclass/Desktop/pypy/pypy/annotation/annrpython.py&quot;, line 235, in addpendingblock<br>[translation:ERROR]     assert annmodel.unionof(s_oldarg, s_newarg) == s_oldarg<br>


[translation:ERROR]  AssertionError&#39;:<br>[translation:ERROR]     .. v2309 = simple_call(v2301, v2302, v2303, v2304, v2305, v2306, v2307, v2308)<br>[translation:ERROR]     .. &#39;(pypy.module.pypyjit.policy:49)PyPyJitIface._compile_hook&#39;<br>


[translation:ERROR] Processing block:<br>[translation:ERROR]  block@226 is a &lt;class &#39;pypy.objspace.flow.flowcontext.SpamBlock&#39;&gt;<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>


&gt; /home/pclass/Desktop/pypy/pypy/annotation/annrpython.py(235)addpendingblock()<br>-&gt; 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>