[Debichem-devel] Will we manage to upgrade jmol

Ximin Luo infinity0 at debian.org
Thu Dec 8 16:08:00 UTC 2016


Andreas Tille:
> [..]
> 
> compile:
>     [mkdir] Created dir: /build/biojava3-live-3.1.0+dfsg/build/biojava3-structure-gui/classes
>     [javac] /build/biojava3-live-3.1.0+dfsg/biojava3-structure-gui/build.xml:73: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
>     [javac] Compiling 109 source files to /build/biojava3-live-3.1.0+dfsg/build/biojava3-structure-gui/classes
>     [javac] /build/biojava3-live-3.1.0+dfsg/biojava3-structure-gui/src/main/java/org/biojava/bio/structure/align/gui/jmol/MyJmolStatusListener.java:34: error: package org.jmol.constant does not exist
>     [javac] import org.jmol.constant.EnumCallback;
>     [javac]                         ^
>     [javac] /build/biojava3-live-3.1.0+dfsg/biojava3-structure-gui/src/main/java/org/biojava/bio/structure/align/gui/jmol/MyJmolStatusListener.java:114: error: cannot find symbol
>     [javac]     public void notifyCallback(EnumCallback arg0, Object[] arg1) {
>     [javac]                                ^
>     [javac]   symbol:   class EnumCallback
>     [javac]   location: class MyJmolStatusListener
>     [javac] /build/biojava3-live-3.1.0+dfsg/biojava3-structure-gui/src/main/java/org/biojava/bio/structure/align/gui/jmol/MyJmolStatusListener.java:120: error: cannot find symbol
>     [javac]     public boolean notifyEnabled(EnumCallback arg0) {
>     [javac]                                  ^
>     [javac]   symbol:   class EnumCallback
>     [javac]   location: class MyJmolStatusListener
>     [javac] /build/biojava3-live-3.1.0+dfsg/biojava3-structure-gui/src/main/java/org/biojava/bio/structure/align/gui/jmol/StructureAlignmentJmol.java:445: error: cannot find symbol
>     [javac]       String atomInfo = viewer.getAtomInfo(pos);
>     [javac]                               ^
>     [javac]   symbol:   method getAtomInfo(int)
>     [javac]   location: variable viewer of type JmolViewer
>     [javac] /build/biojava3-live-3.1.0+dfsg/biojava3-structure-gui/src/main/java/org/biojava/bio/structure/align/gui/jmol/StructureAlignmentJmol.java:478: error: cannot find symbol
>     [javac]       String atomInfo = viewer.getAtomInfo(pos);
>     [javac]                               ^
>     [javac]   symbol:   method getAtomInfo(int)
>     [javac]   location: variable viewer of type JmolViewer
>     [javac] /build/biojava3-live-3.1.0+dfsg/biojava3-structure-gui/src/main/java/org/biojava/bio/structure/align/gui/jmol/MyJmolStatusListener.java:36: error: MyJmolStatusListener is not abstract and does not override abstract method resizeInnerPanel(String) in JmolStatusListener
>     [javac] public class MyJmolStatusListener implements JmolStatusListener {
>     [javac]        ^
>     [javac] /build/biojava3-live-3.1.0+dfsg/biojava3-structure-gui/src/main/java/org/biojava/bio/structure/align/gui/jmol/MyJmolStatusListener.java:139: error: resizeInnerPanel(String) in MyJmolStatusListener cannot implement resizeInnerPanel(String) in JmolStatusListener
>     [javac]     public void resizeInnerPanel(String data) {
>     [javac]                 ^
>     [javac]   return type void is not compatible with int[]
>     [javac] /build/biojava3-live-3.1.0+dfsg/biojava3-structure-gui/src/main/java/org/biojava/bio/structure/align/gui/jmol/MyJmolStatusListener.java:79: error: name clash: notifyCallback(int,Object[]) in MyJmolStatusListener overrides a method whose erasure is the same as another method, yet neither overrides the other
>     [javac]     public void notifyCallback(int arg0, Object[] arg1) {
>     [javac]                 ^
>     [javac]   first method:  notifyCallback(CBK,Object[]) in JmolCallbackListener
>     [javac]   second method: notifyCallback(EnumCallback,Object[]) in MyJmolStatusListener
>     [javac] /build/biojava3-live-3.1.0+dfsg/biojava3-structure-gui/src/main/java/org/biojava/bio/structure/align/gui/jmol/MyJmolStatusListener.java:84: error: name clash: notifyEnabled(int) in MyJmolStatusListener overrides a method whose erasure is the same as another method, yet neither overrides the other
>     [javac]     public boolean notifyEnabled(int arg0) {
>     [javac]                    ^
>     [javac]   first method:  notifyEnabled(CBK) in JmolCallbackListener
>     [javac]   second method: notifyEnabled(EnumCallback) in MyJmolStatusListener
>     [javac] Note: /build/biojava3-live-3.1.0+dfsg/biojava3-structure-gui/src/main/java/org/biojava/bio/structure/align/gui/jmol/JmolPanel.java uses or overrides a deprecated API.
>     [javac] Note: Recompile with -Xlint:deprecation for details.
>     [javac] Note: Some input files use unchecked or unsafe operations.
>     [javac] Note: Recompile with -Xlint:unchecked for details.
>     [javac] 9 errors
> 
> BUILD FAILED
> /build/biojava3-live-3.1.0+dfsg/biojava3-structure-gui/build.xml:73: Compile failed; see the compiler error output for details.
> 

This basically means that Jmol changed its API between version 12 and 14. I don't think I messed up the packaging, the missing things like org.jmol.constant.EnumCallback are not even in the current source code.

Someone will have to go through the changes and make biojava3-live work with Jmol 14 again, this involves Java coding. What I normally do is grep the source code to see if there's anything "similar" in the current source. Or perhaps upstream has a patch, commit, or ticket lying around somewhere where this is already done or half-done.

To avoid problems like this in the future, it's recommended to only use things that are clearly labeled as public API. The current version of Jmol has a src/org/jmol/api/ directory, perhaps you can edit the currently-failing code to use this instead.

Or, if it is already an old/abandoned project (I notice that biojava4-live exists too) I suggest to consider just removing it from Debian.

> Total time: 2 seconds
> 
> 
> BTW, if it helps I could migrate biojava3-live from SVN to Git if this
> might be more convenient for interested people to directly change things
> in VCS.
> 

That would help me if I had time to work on it, but probably not directly on the code, for another few weeks. 

X

-- 
GPG: ed25519/56034877E1F87C35
GPG: rsa4096/1318EFAC5FBBDBCE
https://github.com/infinity0/pubkeys.git



More information about the Debichem-devel mailing list