Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 63496 - jython readline support doesn't work
Summary: jython readline support doesn't work
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Development (show other bugs)
Hardware: x86 Linux
: High normal (vote)
Assignee: Java team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-09-09 18:56 UTC by Russ Tennant
Modified: 2004-09-10 03:04 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Russ Tennant 2004-09-09 18:56:57 UTC
I emerged jython with the jikes and readline use flags enabled.
If I specify readline support I get the following error.

russ@russ persistence $ jython -Dpython.console=org.python.util.ReadlineConsole
Jython 2.1 on java1.4.2_05 (JIT: null)
Exception in thread "main" java.lang.NoClassDefFoundError: org/gnu/readline/ReadlineLibrary
        at org.python.util.ReadlineConsole.<init>(ReadlineConsole.java:23)
        at org.python.util.ReadlineConsole.<init>(ReadlineConsole.java:13)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
        at java.lang.Class.newInstance0(Class.java:308)
        at java.lang.Class.newInstance(Class.java:261)
        at org.python.util.jython.main(jython.java:91)

To fix this I changed /usr/bin/jython from...

`java-config --java` -Dpython.home="/usr/share/jython" -classpath "`java-config --classpath=jython`:$CLASSPATH" "org.python.util.jython" "$@"

to...

`java-config --java` -Dpython.home="/usr/share/jython" -classpath "`java-config --classpath=jython,libreadline-java`:$CLASSPATH" "org.python.util.jython" "$@"

This added the readline jar file to the path. Executing jython again I get the following.

root@russ persistence # jython -Dpython.console=org.python.util.ReadlineConsole
Jython 2.1 on java1.4.2_05 (JIT: null)
Exception in thread "main" java.lang.UnsatisfiedLinkError: no JavaEditline in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1517)
        at java.lang.Runtime.loadLibrary0(Runtime.java:788)
        at java.lang.System.loadLibrary(System.java:834)
        at org.gnu.readline.Readline.load(Readline.java:133)
        at org.python.util.ReadlineConsole.<init>(ReadlineConsole.java:23)
        at org.python.util.ReadlineConsole.<init>(ReadlineConsole.java:13)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
        at java.lang.Class.newInstance0(Class.java:308)
        at java.lang.Class.newInstance(Class.java:261)
        at org.python.util.jython.main(jython.java:91)


I don't have a JavaEditLine library, but I do have a JavaReadline library. So, I do the following.

root@russ lib # ln -s libJavaReadline.so libJavaEditline.so
russ@russ persistence $ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib jython -Dpython.console=org.python.util.ReadlineConsole

Now when I run jython, the readline support is there and it works as expected. 

Reproducible: Always
Steps to Reproduce:
1.
2.
3.

Actual Results:  
 

Expected Results:  
I think that if the readline use flag is set, then the readline jar file 
should be added to the classpath when starting jython. I think jython should 
automatically start in readline mode when built using the readline flag so 
that users don't have to add 
"-Dpython.console=org.python.util.ReadlineConsole" to the command line. Not 
sure about the best way to handle the library path problem. It appears that 
the library name has changed recently.
Comment 1 Russ Tennant 2004-09-09 19:00:37 UTC
Forgot version information:

dev-java/jython: 2.1-r5
dev-java/libreadline-java: 0.8.0
Comment 2 Thomas Matthijs (RETIRED) gentoo-dev 2004-09-10 03:04:23 UTC
seems like you need
python.console=org.python.util.ReadlineConsole
python.console.readlinelib=GnuReadline
for libreadline

the Editline(default) seems to have been broken forever from what i can find(?)

i added a note to he ebuild on how to enable it