[pypy-dev] pypy translation error

Shawn Walker binarycrusader at gmail.com
Wed Oct 12 06:44:58 CEST 2011


On 11 October 2011 17:52, Maciej Fijalkowski <fijall at gmail.com> wrote:
> On Wed, Oct 12, 2011 at 2:47 AM, Shawn Walker <binarycrusader at gmail.com> wrote:
>> On 11 October 2011 16:51, Maciej Fijalkowski <fijall at gmail.com> wrote:
>>> On Wed, Oct 12, 2011 at 1:39 AM, Shawn Walker <binarycrusader at gmail.com> wrote:
>> ...
>>>> Is there a way to do an incremental translate?  Currently, every time
>>>> I run translate, it does the whole thing again, which makes the whole
>>>> fix/build cycle very slow.
>>>>
>>>> -Shawn
>>>>
>>>
>>> No, there is no such thing :(
>>>
>>> I believe one of those operations inside get_ifname does not work,
>>> like ifreq is not there? (can you import it from _rsocket_rffi?). For
>>> now you can possibly disable the entire PacketAddress class
>>> declaration and it should compile
>>
>> ifreq is definitely defined, but from what I'm reading, this is a
>> common issue with things that make assumptions about socket structures
>> if AF_PACKET is defined.
>>
>> Regardless, I simply conditionally disabled the entire PacketAddress
>> class for now.
>>
>> However, that leads me to:
>>
>> [translation:ERROR] Error:
>> [translation:ERROR]  Traceback (most recent call last):
>> [translation:ERROR]    File "translate.py", line 308, in main
>> [translation:ERROR]     drv.proceed(goals)
>> [translation:ERROR]    File
>> "/export/home/swalker/devel/pypy/pypy/translator/driver.py", line 809,
>> in proceed
>> [translation:ERROR]     return self._execute(goals, task_skip =
>> self._maybe_skip())
>> [translation:ERROR]    File
>> "/export/home/swalker/devel/pypy/pypy/translator/tool/taskengine.py",
>> line 116, in _execute
>> [translation:ERROR]     res = self._do(goal, taskcallable, *args, **kwds)
>> [translation:ERROR]    File
>> "/export/home/swalker/devel/pypy/pypy/translator/driver.py", line 286,
>> in _do
>> [translation:ERROR]     res = func()
>> [translation:ERROR]    File
>> "/export/home/swalker/devel/pypy/pypy/translator/driver.py", line 323,
>> in task_annotate
>> [translation:ERROR]     s = annotator.build_types(self.entry_point,
>> self.inputtypes)
>> [translation:ERROR]    File
>> "/export/home/swalker/devel/pypy/pypy/annotation/annrpython.py", line
>> 103, in build_types
>> [translation:ERROR]     return self.build_graph_types(flowgraph,
>> inputcells, complete_now=complete_now)
>> [translation:ERROR]    File
>> "/export/home/swalker/devel/pypy/pypy/annotation/annrpython.py", line
>> 194, in build_graph_types
>> [translation:ERROR]     self.complete()
>> [translation:ERROR]    File
>> "/export/home/swalker/devel/pypy/pypy/annotation/annrpython.py", line
>> 272, in complete
>> [translation:ERROR]     raise AnnotatorError(text)
>> [translation:ERROR]  AnnotatorError:
>> [translation:ERROR] -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>> [translation:ERROR] Blocked block -- operation cannot succeed
>> [translation:ERROR]  v119 = getattr(v118, ('set_interrupt'))
>> [translation:ERROR] In <FunctionGraph of
>> (pypy.module.cpyext.pyerrors:311)PyErr_SetInterrupt at 0x10475cac>:
>> [translation:ERROR] Happened at file
>> /export/home/swalker/devel/pypy/pypy/module/cpyext/pyerrors.py line
>> 316
>> [translation:ERROR]
>> [translation:ERROR] ==>     space.check_signal_action.set_interrupt()
>> [translation:ERROR]
>> [translation:ERROR] Known variable annotations:
>> [translation:ERROR]  v118 = SomePBC(can_be_None=True, const=None,
>> subset_of=None)
>>
>> "Blocked block" ... errr?
>>
>> I'm guessing the signal handling isn't working as pypy expects somehow.
>>
>> Thoughts?
>
> Yes, apparently. You can run some tests, but also try to compile
> without the cpyext module. ./translate.py -Ojit
> targetpypystandalone.py --withoutmod-cpyext. I wonder though why
> check_signal_action is None. Try running tests in pypy/modules/signal?

All of the tests in pypy/modules/signal pass.

This time the translation succeeded by using the without-cpymodext option.

However, compilation failed because the 'makedev', 'major', and
'minor' symbols are undefined.  But I think I can figure that one out
myself.

-- 
Shawn Walker


More information about the pypy-dev mailing list