On Apr 30, 2013, at 0:46, Helmut Jarausch <jarau...@igpm.rwth-aachen.de> wrote:
> On 04/29/2013 04:52:00 PM, Andi Vajda wrote: >> On Apr 29, 2013, at 5:36, Helmut Jarausch <jarau...@igpm.rwth-aachen.de> >> wrote: >> > On 04/27/2013 08:25:04 PM, Andi Vajda wrote: >> >> Hi Helmut, >> >> On Sat, 27 Apr 2013, Helmut Jarausch wrote: >> >>> Hi, >> >>> after a long time I'm in need to reinstall pylucene on my Gentoo system. >> >>> Here, Lucene-3.5.0, oracle-jdk-bin-1.7.0.21 and Python-2.7.4 is >> >>> installed. >> >>> I fetched the pylucene_3_5 branch of >> >>> svn.apache.org/repos/asf/lucene/pylucene/ >> >>> Patching setuptools and installing jcc did work. >> >>> But trying to build pylucene itself fails with: >> >>> Traceback (most recent call last): >> >>> File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main >> >>> "__main__", fname, loader, pkg_name) >> >>> File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code >> >>> exec code in run_globals >> >>> File >> >>> "/usr/lib64/python2.7/site-packages/JCC-2.16-py2.7-linux-x86_64.egg/jcc/__main__.py", >> >>> line 107, in <module> >> >>> cpp.jcc(sys.argv) >> >>> File >> >>> "/usr/lib64/python2.7/site-packages/JCC-2.16-py2.7-linux-x86_64.egg/jcc/cpp.py", >> >>> line 655, in jcc >> >>> raise ValueError, (cls, 'python class name already in use, use >> >>> --rename', name, pythonNames[name]) >> >>> ValueError: (<Class: class org.apache.lucene.analysis.nl.DutchStemmer>, >> >>> 'python class name already in use, use --rename', u'DutchStemmer', >> >>> <Class: class org.tartarus.snowball.ext.DutchStemmer>) >> >>> In addition there were some warnings: >> >>> Warning: renaming static method 'toString' on class java.lang.Byte to >> >>> 'toString_' since it is shadowed by non-static method of same name. >> >>> Warning: renaming static method 'getCurrentSegmentFileName' on class >> >>> org.apache.lucene.index.SegmentInfos to 'getCurrentSegmentFileName_' >> >>> since it is shadowed by non-static method of same name. >> >>> Warning: renaming static method 'toString' on class java.lang.Boolean to >> >>> 'toString_' since it is shadowed by non-static method of same name. >> >>> Warning: renaming static method 'foldToASCII' on class >> >>> org.apache.lucene.analysis.ASCIIFoldingFilter to 'foldToASCII_' since it >> >>> is shadowed by non-static method of same name. >> >>> Warning: renaming static method 'copy' on class >> >>> org.apache.lucene.store.Directory to 'copy_' since it is shadowed by >> >>> non-static method of same name. >> >>> Warning: renaming static method 'toString' on class java.lang.Long to >> >>> 'toString_' since it is shadowed by non-static method of same name. >> >>> What am I missing? >> >> The answer is in the error message: >> >> ValueError: (<Class: class org.apache.lucene.analysis.nl.DutchStemmer>, >> >> 'python class name already in use, use --rename', u'DutchStemmer', >> >> <Class: >> >> class org.tartarus.snowball.ext.DutchStemmer>) >> >> There are two classes named DutchStemmer and one must be wrapped with a >> >> renamed Python wrapper so as to not clash with the other. There several >> >> other cases of this in the PyLucene Makefile and you should use them as >> >> examples: >> >> --rename >> >> org.apache.lucene.search.highlight.SpanScorer=HighlighterSpanScorer >> >> Pick another name for the second DutchStemmer Python wrapper class (as in >> >> the example above and add this as a --rename line to the other ones in >> >> the Makefile. >> >> This situation is fixed in the upcoming PyLucene 4.3 release where JCC >> >> emits a complete package hierarchy and classes stay in their namespaces, >> >> no longer clashing. >> >> As to the other warnings, they are just warnings. They matter if you want >> >> to call these methods. >> >> Andi.. >> > >> > Thanks Andi, >> > >> > I've added a few --rename lines and now it fails with >> > File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main >> > "__main__", fname, loader, pkg_name) >> > File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code >> > exec code in run_globals >> > File >> > "/usr/lib64/python2.7/site-packages/JCC-2.16-py2.7-linux-x86_64.egg/jcc/__main__.py", >> > line 107, in <module> >> > cpp.jcc(sys.argv) >> > File >> > "/usr/lib64/python2.7/site-packages/JCC-2.16-py2.7-linux-x86_64.egg/jcc/cpp.py", >> > line 455, in jcc >> > for arg in args[i].split(',')])) >> > ValueError: dictionary update sequence element #0 has length 1; 2 is >> > required >> > make: *** [compile] Error 1 >> Please include the lines you added here so that I can I help you debug this. > > Please see the diff at the end of this email. > > >> Did you end all lines with \ ? >> > Can I use most recent version (SVN?) if I have dev-java/lucene-3.5.0 >> > installed here? >> Most recent version of what ? >> JCC ? or both ? >> Either way, yes, although trunk is based on the upcoming lucene 4.3 relea >> se and has a different API from lucene 3.x so you need to migrate your >> application code using PyLucene to the new API. >> Andi.. > > Sorry, but I don't understand this. If trunk PyLucene expects a new Lucene > API how can it work with Lucene-3.5.0 which still has > the old API ? It can't. PyLucene trunk expects lucene 4.x. Andi.. > > Many thanks, > Andi, > Helmut. > > Here the diff of the original Makefile to my modified version: > > --- Makefile.orig 2013-04-27 10:23:03.743234395 +0200 > +++ Makefile 2013-04-29 14:26:04.862309465 +0200 > @@ -102,11 +102,11 @@ > #NUM_FILES=4 > > # Linux (Ubuntu 8.10 64-bit, Python 2.5.2, OpenJDK 1.6, setuptools 0.6c9) > -#PREFIX_PYTHON=/usr > -#ANT=ant > -#PYTHON=$(PREFIX_PYTHON)/bin/python > -#JCC=$(PYTHON) -m jcc --shared > -#NUM_FILES=4 > +PREFIX_PYTHON=/usr > +ANT=ant > +PYTHON=$(PREFIX_PYTHON)/bin/python > +JCC=$(PYTHON) -m jcc --shared > +NUM_FILES=1 > > # FreeBSD > #PREFIX_PYTHON=/usr > @@ -296,6 +296,11 @@ > --mapping java.util.Properties > 'getProperty:(Ljava/lang/String;)Ljava/lang/String;' \ > --sequence java.util.AbstractList 'size:()I' > 'get:(I)Ljava/lang/Object;' \ > --rename > org.apache.lucene.search.highlight.SpanScorer=HighlighterSpanScorer \ > + --rename > org.apache.lucene.analysis.nl.DutchStemmer=DutchStemmerOther \ > + --rename > org.apache.lucene.analysis.nl.GermanStemmer=GermanStemmerOther \ > + --rename > org.apache.lucene.analysis.nl.FrenchStemmer=FrenchStemmerOther \ > + --rename org.apache.lucene.queryParser.CharStream=CharStream2 \ > + --rename class org.apache.lucene.search.Scorer=Scorer \ > --version $(LUCENE_VER) \ > --module python/collections.py \ > --module python/ICUNormalizer2Filter.py \ > 68