[oi-dev] mercurial is updated to 2.7

Alexander Pyhalov alp at rsu.ru
Fri Aug 30 14:35:02 UTC 2013


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




More information about the oi-dev mailing list