On 08/19/2013 16:44, Alexander Pyhalov wrote:
I've just updated mercurial to 2.7 in /hipster. It works for me...

And fails for anyone other.

Yesterday I tried to identify the error. So far, didn't find it. It seems I'll have less free time in the next days, so, here I'd like to summarize my findings if someone would like to dive into it.

1) Any recent mercurial version (2.5,2.6,2.7) fails to pass its tests when built with python 2.6. Mercurial 2.7 built with Python 2.4 seems to be more adequate. It fails only 5 tests from its testsuite. Mercurial 2.7 built with Python 2.6 fails 8 tests of 12, then tests hang. The reason is that hg server process throws exception in one of the tests.

127.0.0.1 - - [29/Aug/2013 18:42:57] Exception happened during processing request '/a/atom-log':
Traceback (most recent call last):
File "/tmp/hgtests.9lt3oH/install/lib/python/mercurial/hgweb/server.py", line 77, in do_POST
    self.do_write()
File "/tmp/hgtests.9lt3oH/install/lib/python/mercurial/hgweb/server.py", line 70, in do_write
    self.do_hgweb()
File "/tmp/hgtests.9lt3oH/install/lib/python/mercurial/hgweb/server.py", line 137, in do_hgweb
    for chunk in self.server.application(env, self._start_response):
File "/tmp/hgtests.9lt3oH/install/lib/python/mercurial/util.py", line 358, in increasingchunks
    for chunk in source:
File "/tmp/hgtests.9lt3oH/install/lib/python/mercurial/templater.py", line 389, in _flatten
    for j in _flatten(i):
File "/tmp/hgtests.9lt3oH/install/lib/python/mercurial/templater.py", line 382, in _flatten
    for i in thing:
File "/tmp/hgtests.9lt3oH/install/lib/python/mercurial/templater.py", line 185, in runmap
    for i in d:
File "/tmp/hgtests.9lt3oH/install/lib/python/mercurial/hgweb/webcommands.py", line 207, in changelist
    revs = (revs.next(),)
AttributeError: 'list' object has no attribute 'next'

The code is:
    202     def changelist(latestonly, **map):
    203         revs = []
    204         if pos != -1:
    205             revs = web.repo.changelog.revs(pos, 0)
    206         if latestonly:
    207             revs = (revs.next(),)
    208         curcount = 0
    209         for i in revs:
    210             ctx = web.repo[i]

It seems that revs received on 205 line is empty.
I bet that this exception is just a symptom and the reason that hg either creates incorrect repositories or can't correctly commit to them...

2) I suspect it to be an issue with our Python - at least with 2.4 mercurial works. I've examined Python build logs. Found several rather unpleasant warnings about pointers casting, but it seems these warnings are not related to this particular problem. Looked for some core dumps or incorrect *.so files (we already had such experience - Python build system doesn't detect such errors), but didn't find them...

--
Best regards,
Alexander Pyhalov,
system administrator of Computer Center of Southern Federal University

_______________________________________________
oi-dev mailing list
[email protected]
http://openindiana.org/mailman/listinfo/oi-dev

Reply via email to