Description
I'm trying to do a MoinMoin 1.3beta5 install on a Debian 2.x (stable) machine. Thew newest Python version provided is 2.2.1. 1.3beta5 currently produces OverflowErrors with regards to the timestamp/version code:
Doesn't work in 2.2.2 either. Maybe 2.3+ only.
Example
Traceback (most recent call last): File "moin.py", line 15, in ? request = RequestCGI() File "MoinMoin/request.py", line 1028, in __init__ RequestBase.__init__(self, properties) File "MoinMoin/request.py", line 101, in __init__ self.dicts = self.initdicts() File "MoinMoin/request.py", line 534, in initdicts dicts.scandicts() File "MoinMoin/wikidicts.py", line 326, in scandicts if Page.Page(self.request, pagename).mtime_usecs() >= wikiutil.timestamp2version(self.pageupdate_timestamp): File "MoinMoin/Page.py", line 330, in mtime_usecs return wikiutil.timestamp2version(os.path.getmtime(self._text_filename(rev=self.rev))) File "MoinMoin/wikiutil.py", line 227, in timestamp2version return int(ts*1000000) OverflowError: long int too large to convert to int
Traceback (most recent call last): File "MoinMoin/request.py", line 764, in run Page(self, pagename).send_page(self, count_hit=1) File "MoinMoin/Page.py", line 784, in send_page allow_doubleclick=1, trail=trail, File "MoinMoin/wikiutil.py", line 1051, in send_title d = { File "MoinMoin/Page.py", line 274, in lastEditInfo log = self._last_edited(request) File "MoinMoin/Page.py", line 222, in _last_edited log = logfile.previous() File "MoinMoin/logfile/logfile.py", line 250, in previous result = self.__previous() File "MoinMoin/logfile/logfile.py", line 240, in __previous return self.parser(self.__buffer.lines[self.__rel_index]) File "MoinMoin/logfile/editlog.py", line 124, in parser result.ed_time_usecs = int(result.ed_time_usecs or '0') ValueError: int() literal too large: 1100201049000000
Details
This Wiki.
Workaround
- Upgrade to Python 2.3.x or 2.4.x
or: patch it to long(), see below
Upgrading really isn't a workaround. Production servers often can't be.
Discussion
lydon on IRC said to change the offending ints to longs, and ThomasWaldmann concurred. This solved the above two crashes and allowed Moin to start up. I also needed to install python-bsddb3 due to the spell checking dictionary file.
wikiutil:227
editlog.py:101, 124
macro/RecentChanges.py:86
- those are only a few of the places that need fixing. See patch-318 to get a completely patched version.
RecentChanges also appears to be broken due to strip() having changed after 2.2.1. On line 657 in formatter/text_html.py, change:
result[key] = val.strip('"')
to something like:
#result[key] = val.strip('"') val = val.strip() if val.startswith('"'): val = val[1:] if val.endswith('"'): val = val[:-1] result[key] = val.strip()
I think the docs require Python 2.2.2. I don't see why we should solve the problem of broken distributions by using old python code. Python 2.4 is about to be released, 2.3 is out there for more then a year. Sounds fair to me. -- NirSoffer 2004-11-18 10:59:20
- The split thing is fixed in 2.2.2, so just use that version.
didn't fix that -- ThomasWaldmann 2004-11-21 23:10:38
patch-318 'doesn't' totally fix the long issue - it misses out convert_editlog in scripts/migration/12_to_13_mig3.py for instance, which has
data[2] = str(int(float(timestamp))) # we only want int
fixed in arch
Plan
- Priority: high
Assigned to: ThomasWaldmann
- Status: 'long' issue fixed, 'strip' issue not fixed