[Debian-med-packaging] openjfx usage in megan-ce

Felix Natter fnatter at gmx.net
Sat May 20 17:36:42 UTC 2017


Andreas Tille <andreas at an3as.eu> writes:

> Hi Felix,

Hello Andreas!

> On Sat, May 20, 2017 at 04:23:31PM +0200, Felix Natter wrote:
>> > I had a first packaging centric look on megan-ce[1].  While there
>> > are several problems I stumbled upon several compile errors like
>> 
>> I cannot currently build this because my libjloda-java is at 0.0+20161018.
>
> It is in experimental due to freeze policy.

Ok, pulled it, thanks.

>> >     [javac] /build/megan-ce-0.0+20170515/antbuild/src/megan/blastclient/BlastProgram.java:28: error: package javafx.geometry does not exist
>> >     [javac] import javafx.geometry.Insets;
>> >     [javac]                       ^
>> >     [javac] /build/megan-ce-0.0+20170515/antbuild/src/megan/blastclient/BlastProgram.java:29: error: package javafx.scene does not exist
>> >     [javac] import javafx.scene.Scene;
>> >     [javac]                    ^
>> >     [javac] /build/megan-ce-0.0+20170515/antbuild/src/megan/blastclient/BlastProgram.java:30: error: package javafx.scene.control does not exist
>> >     [javac] import javafx.scene.control.*;
>> >     [javac] ^
>> >     [javac] /build/megan-ce-0.0+20170515/antbuild/src/megan/blastclient/BlastProgram.java:31: error: package javafx.scene.layout does not exist
>> >     [javac] import javafx.scene.layout.BorderPane;
>> >     [javac]                           ^
>> >     [javac] /build/megan-ce-0.0+20170515/antbuild/src/megan/blastclient/BlastProgram.java:32: error: package javafx.scene.layout does not exist
>> >     [javac] import javafx.scene.layout.HBox;
>> >     [javac]                           ^
>> >
>> > To solve this I added libopenjfx-java Build-Dependency but this does not
>> > seem to help.  Any idea how I could fix this?
>> 
>> You have put the wrong openjfx jar into debian/manifest:
>> 
>> $ jar tf /usr/share/java/openjfx/lib/javafx-mx.jar | grep javafx.geometry
>> <no output>
>> 
>> $ jar tf /usr/share/java/openjfx/jre/lib/ext/jfxrt.jar | grep javafx.geometry
>> [...]
>> javafx/geometry/Insets.class
>> [...]
>
> Sounds convincing. :-)
>  
>> This simple patch should work:
>> 
>> diff --git a/debian/manifest b/debian/manifest
>> index 9b9c713..5b60c58 100644
>> --- a/debian/manifest
>> +++ b/debian/manifest
>> @@ -1,3 +1,3 @@
>>  /usr/share/java/megan-ce.jar:
>>   Main-Class: megan-ce.MeganRun
>> - Class-Path: /usr/share/java/jloda.jar /usr/share/java/colt.jar /usr/share/java/commons-math3.jar /usr/share/java/gson.jar /usr/share/java/openjfx/lib/javafx-mx.jar
>> + Class-Path: /usr/share/java/jloda.jar /usr/share/java/colt.jar /usr/share/java/commons-math3.jar /usr/share/java/gson.jar /usr/share/java/openjfx/jre/lib/ext/jfxrt.jar

It seems the CLASS_PATH in debian/rules is not used during build, we
need to patch "build.classpath" in antbuild/build.xml, like this (last
patch):

--- a/antbuild/build.xml
+++ b/antbuild/build.xml
@@ -21,7 +21,10 @@
 
     <path id="build.classpath">
         <fileset dir="/usr/share/java/"  includes="jloda.jar"/>
-
+        <fileset dir="/usr/share/java/"  includes="colt.jar"/>
+        <fileset dir="/usr/share/java/"  includes="commons-math3.jar"/>
+        <fileset dir="/usr/share/java/"  includes="gson.jar"/>
+        <fileset dir="/usr/share/java/openjfx/jre/lib/ext"  includes="jfxrt.jar"/>
     </path>
 
     <!-- init -->

(or, as an alternative, succeed in making build.xml use CLASS_PATH)

Note that you need to include all these libraries in debian/manifest
too, otherwise the program will fail during runtime (which might not be
noticed until a particular functionality is used).

> I've just pushed
> As I said this is in experimental.  I also noticed that there is not
> only trouble with javafx:
>
> ...
>     [javac] /build/megan-ce-0.0+20170515/antbuild/src/megan/biom/BiomData.java:21: error: package com.google.gson does not exist
>     [javac] import com.google.gson.Gson;
>     [javac]                       ^
>     [javac] /build/megan-ce-0.0+20170515/antbuild/src/megan/blastclient/BlastProgram.java:22: error: package javafx.application does not exist
>     [javac] import javafx.application.Application;
>     [javac]                          ^
>     [javac] /build/megan-ce-0.0+20170515/antbuild/src/megan/blastclient/BlastProgram.java:23: error: package javafx.beans.value does not exist
>     [javac] import javafx.beans.value.ChangeListener;
> ...
>
> So Gson is also not found. :-( 

gson and javax are found, now that we change the correct classpath, but
several other libraries are used:

build1.log:53:    [javac] import malt.align.SimpleAligner4DNA;
build1.log:56:    [javac] import malt.util.MurmurHash3;

--> there is only 'smalt' in Debian?

build1.log:59:    [javac] import Jama.EigenvalueDecomposition;
build1.log:62:    [javac] import Jama.Matrix;
build1.log:70:    [javac] import Jama.EigenvalueDecomposition;
build1.log:73:    [javac] import Jama.Matrix;
build1.log:76:    [javac] import Jama.Matrix;

--> libjama-java / /usr/share/java/jama.jar

build1.log:94:    [javac] import com.install4j.api.launcher.ApplicationLauncher;
build1.log:97:    [javac] import com.install4j.api.update.ApplicationDisplayMode;
build1.log:100:    [javac] import com.install4j.api.update.UpdateChecker;
build1.log:103:    [javac] import com.install4j.api.update.UpdateDescriptor;
build1.log:106:    [javac] import com.install4j.api.update.UpdateDescriptorEntry;

--> probably not in Debian?

build1.log:109:    [javac] import org.controlsfx.control.Notifications;
build1.log:112:    [javac] import org.controlsfx.control.spreadsheet.SpreadsheetColumn;
build1.log:115:    [javac] import org.controlsfx.control.spreadsheet.SpreadsheetView;
build1.log:144:    [javac] import org.controlsfx.control.spreadsheet.GridBase;
build1.log:147:    [javac] import org.controlsfx.control.spreadsheet.SpreadsheetCell;
build1.log:150:    [javac] import org.controlsfx.control.spreadsheet.SpreadsheetCellType;
build1.log:168:    [javac] import org.controlsfx.control.spreadsheet.*;
build1.log:181:    [javac] import org.controlsfx.control.spreadsheet.SpreadsheetColumn;
build1.log:184:    [javac] import org.controlsfx.control.spreadsheet.SpreadsheetColumn;

--> ?

build1.log:138:    [javac] import contrasts.Contrasts;

--> ?

build1.log:141:    [javac] import org.apache.commons.codec.binary.Base64;

--> libcommons-codec-java / /usr/share/java/commons-codec.jar

build1.log:190:    [javac] import org.springframework.http.HttpEntity;
build1.log:193:    [javac] import org.springframework.http.HttpHeaders;
build1.log:196:    [javac] import org.springframework.http.HttpMethod;
build1.log:199:    [javac] import org.springframework.http.ResponseEntity;
build1.log:202:    [javac] import org.springframework.web.client.RestTemplate;

libspring-web-java / /usr/share/java/spring3-web.jar

Cheers and Best Regards,
-- 
Felix Natter



More information about the Debian-med-packaging mailing list