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 ?

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

Reply via email to