lindenb / jvarkit

Java utilities for Bioinformatics
https://jvarkit.readthedocs.io/
Other
482 stars 133 forks source link

compiling jvarkit samjdk on Ubuntu 14.04 openjdk-8-jdk #90

Closed avilella closed 6 years ago

avilella commented 6 years ago

Verify

Subject of the issue

Issues with this from master (as of yesterday):

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get install -y openjdk-8-jdk
java -version
openjdk version "1.8.0_45-internal"
OpenJDK Runtime Environment (build 1.8.0_45-internal-b14)
OpenJDK 64-Bit Server VM (build 25.45-b02, mixed mode)
javac -version
javac 1.8.0_45-internal
cd jvarkit/
make samjdk
[...]
echo 'public static String getHash() {return "2.13.0";}' >> /home/dnanexus/jvarkit/src/main/generated-sources/java/com/github/lindenb/jvarkit/util/htsjdk/HtsjdkVersion.java
echo 'public static String getHome() {return "lib/com/github/samtools/htsjdk/2.13.0/htsjdk-2.13.0.jar";}' >> /home/dnanexus/jvarkit/src/main/generated-sources/java/com/github/lindenb/jvarkit/util/htsjdk/HtsjdkVersion.java
echo 'public static String getJavadocUrl(final Class<?> clazz) {return "https://samtools.github.io/htsjdk/javadoc/htsjdk/"+clazz.getName().replaceAll("\\.","/")+".html";}' >> /home/dnanexus/jvarkit/src/main/generated-sources/java/com/github/lindenb/jvarkit/util/htsjdk/HtsjdkVersion.java
echo '}'  >> /home/dnanexus/jvarkit/src/main/generated-sources/java/com/github/lindenb/jvarkit/util/htsjdk/HtsjdkVersion.java
echo "### COMPILING samjdk ######"
### COMPILING samjdk ######
rm -f /home/dnanexus/jvarkit/_tmp-2.13.0/markdown.flag
mkdir -p /home/dnanexus/jvarkit/_tmp-2.13.0/META-INF /home/dnanexus/jvarkit/dist 
mkdir -p /home/dnanexus/jvarkit/_tmp-2.13.0/com/github/lindenb/jvarkit/tools/samjs/
cp -v "/home/dnanexus/jvarkit/src/main/java/com/github/lindenb/jvarkit/tools/samjs/SamJdk.java" "/home/dnanexus/jvarkit/_tmp-2.13.0/com/github/lindenb/jvarkit/tools/samjs/"
‘/home/dnanexus/jvarkit/src/main/java/com/github/lindenb/jvarkit/tools/samjs/SamJdk.java’ -> ‘/home/dnanexus/jvarkit/_tmp-2.13.0/com/github/lindenb/jvarkit/tools/samjs/SamJdk.java’
echo '### Printing javac version : it should be Oracle 1.8 (NOT OpenJDK). if Not, check your ${PATH}.'
### Printing javac version : it should be Oracle 1.8 (NOT OpenJDK). if Not, check your ${PATH}.
javac -version
javac 1.8.0_45-internal
#compile
javac -J-Djvarkit.libs.jars='lib/com/github/samtools/htsjdk/2.13.0/htsjdk-2.13.0.jar:lib/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar:lib/gov/nih/nlm/ncbi/ngs-java/1.2.4/ngs-java-1.2.4.jar:lib/org/apache/commons/commons-compress/1.4.1/commons-compress-1.4.1.jar:lib/org/apache/commons/commons-jexl/2.1.1/commons-jexl-2.1.1.jar:lib/org/tukaani/xz/1.5/xz-1.5.jar:lib/org/xerial/snappy/snappy-java/1.1.4/snappy-java-1.1.4.jar:lib/com/beust/jcommander/1.64/jcommander-1.64.jar' -J-Djvarkit.main.class='com.github.lindenb.jvarkit.tools.samjs.SamJdk' -J-Djvarkit.this.dir='/home/dnanexus/jvarkit/' -processorpath /home/dnanexus/jvarkit/dist/annotproc.jar -d /home/dnanexus/jvarkit/_tmp-2.13.0 -g -classpath "lib/com/github/samtools/htsjdk/2.13.0/htsjdk-2.13.0.jar:lib/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar:lib/gov/nih/nlm/ncbi/ngs-java/1.2.4/ngs-java-1.2.4.jar:lib/org/apache/commons/commons-compress/1.4.1/commons-compress-1.4.1.jar:lib/org/apache/commons/commons-jexl/2.1.1/commons-jexl-2.1.1.jar:lib/org/tukaani/xz/1.5/xz-1.5.jar:lib/org/xerial/snappy/snappy-java/1.1.4/snappy-java-1.1.4.jar:lib/com/beust/jcommander/1.64/jcommander-1.64.jar" -sourcepath /home/dnanexus/jvarkit/src/main/java:/home/dnanexus/jvarkit/src/main/generated-sources/java /home/dnanexus/jvarkit/src/main/generated-sources/java/com/github/lindenb/jvarkit/util/htsjdk/HtsjdkVersion.java /home/dnanexus/jvarkit/src/main/java/com/github/lindenb/jvarkit/tools/samjs/SamJdk.java
## Copying /home/dnanexus/jvarkit/src/main/java/com/github/lindenb/jvarkit/util/jcommander/Launcher.java -> /home/dnanexus/jvarkit/_tmp-2.13.0/com/github/lindenb/jvarkit/util/jcommander/Launcher.java
warning: Implicitly compiled files were not subject to annotation processing.
  Use -implicit to specify a policy for implicit compilation.
Note: /home/dnanexus/jvarkit/src/main/java/com/github/lindenb/jvarkit/util/bio/samfilter/SamFilterParser.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: /home/dnanexus/jvarkit/src/main/java/com/github/lindenb/jvarkit/util/jcommander/Launcher.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 warning
#create META-INF/MANIFEST.MF
echo "Manifest-Version: 1.0" > /home/dnanexus/jvarkit/_tmp-2.13.0/META-INF/MANIFEST.MF
echo "Main-Class: com.github.lindenb.jvarkit.tools.samjs.SamJdk" >> /home/dnanexus/jvarkit/_tmp-2.13.0/META-INF/MANIFEST.MF
echo "Class-Path: /home/dnanexus/jvarkit/lib/com/github/samtools/htsjdk/2.13.0/htsjdk-2.13.0.jar /home/dnanexus/jvarkit/lib/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar /home/dnanexus/jvarkit/lib/gov/nih/nlm/ncbi/ngs-java/1.2.4/ngs-java-1.2.4.jar /home/dnanexus/jvarkit/lib/org/apache/commons/commons-compress/1.4.1/commons-compress-1.4.1.jar /home/dnanexus/jvarkit/lib/org/apache/commons/commons-jexl/2.1.1/commons-jexl-2.1.1.jar /home/dnanexus/jvarkit/lib/org/tukaani/xz/1.5/xz-1.5.jar /home/dnanexus/jvarkit/lib/org/xerial/snappy/snappy-java/1.1.4/snappy-java-1.1.4.jar /home/dnanexus/jvarkit/lib/com/beust/jcommander/1.64/jcommander-1.64.jar /home/dnanexus/jvarkit/dist/samjdk.jar" | fold -w 71 | awk '{printf("%s%s\n",(NR==1?"": " "),$0);}' >>  /home/dnanexus/jvarkit/_tmp-2.13.0/META-INF/MANIFEST.MF
echo -n "Git-Hash: " >> /home/dnanexus/jvarkit/_tmp-2.13.0/META-INF/MANIFEST.MF
cat /home/dnanexus/jvarkit/.git/refs/heads/master  >> /home/dnanexus/jvarkit/_tmp-2.13.0/META-INF/MANIFEST.MF 
echo -n "Compile-Date: " >> /home/dnanexus/jvarkit/_tmp-2.13.0/META-INF/MANIFEST.MF
date +%Y-%m-%d:%H-%m-%S >> /home/dnanexus/jvarkit/_tmp-2.13.0/META-INF/MANIFEST.MF
#create jar
jar cfm /home/dnanexus/jvarkit/dist/samjdk.jar /home/dnanexus/jvarkit/_tmp-2.13.0/META-INF/MANIFEST.MF  -C /home/dnanexus/jvarkit/_tmp-2.13.0 .
#create bash executable
echo '#!/bin/bash' > /home/dnanexus/jvarkit/dist/samjdk
echo -n 'java -Djvarkit.log.name=samjdk -Dfile.encoding=UTF8 -Xmx500m    ' >> /home/dnanexus/jvarkit/dist/samjdk
echo -n ' -cp "/home/dnanexus/jvarkit/lib/com/github/samtools/htsjdk/2.13.0/htsjdk-2.13.0.jar:/home/dnanexus/jvarkit/lib/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar:/home/dnanexus/jvarkit/lib/gov/nih/nlm/ncbi/ngs-java/1.2.4/ngs-java-1.2.4.jar:/home/dnanexus/jvarkit/lib/org/apache/commons/commons-compress/1.4.1/commons-compress-1.4.1.jar:/home/dnanexus/jvarkit/lib/org/apache/commons/commons-jexl/2.1.1/commons-jexl-2.1.1.jar:/home/dnanexus/jvarkit/lib/org/tukaani/xz/1.5/xz-1.5.jar:/home/dnanexus/jvarkit/lib/org/xerial/snappy/snappy-java/1.1.4/snappy-java-1.1.4.jar:/home/dnanexus/jvarkit/lib/com/beust/jcommander/1.64/jcommander-1.64.jar:/home/dnanexus/jvarkit/dist/samjdk.jar" com.github.lindenb.jvarkit.tools.samjs.SamJdk '  >> /home/dnanexus/jvarkit/dist/samjdk
echo '$*' >> /home/dnanexus/jvarkit/dist/samjdk
chmod  ugo+rx /home/dnanexus/jvarkit/dist/samjdk
# generate markdown if needed
if [ -e "/home/dnanexus/jvarkit/_tmp-2.13.0/markdown.flag" ] && [ "" != "true" ]  ; then touch /home/dnanexus/jvarkit/_tmp-2.13.0/githistory; (git log --pretty=format:"%ad ; %s ; https://github.com/lindenb/jvarkit/commit/%H" HEAD -- /home/dnanexus/jvarkit/src/main/java/com/github/lindenb/jvarkit/tools/samjs/SamJdk.java > /home/dnanexus/jvarkit/_tmp-2.13.0/githistory || true  ) ; java -jar "/home/dnanexus/jvarkit/dist/samjdk.jar" --help --helpFormat markdown | sed -e '/__INCLUDE_GIT_HISTORY__/ r /home/dnanexus/jvarkit/_tmp-2.13.0/githistory' -e 's/__INCLUDE_GIT_HISTORY__//' > "/home/dnanexus/jvarkit/docs/SamJdk.md" ; rm -fv /home/dnanexus/jvarkit/_tmp-2.13.0/githistory; fi
removed ‘/home/dnanexus/jvarkit/_tmp-2.13.0/githistory’
#cleanup
rm -rf "/home/dnanexus/jvarkit/_tmp-2.13.0"

java -jar dist/samjdk.jar 
[DEBUG][SamJdk] Compiling :
         1  import java.util.*;
         2  import java.util.stream.*;
         3  import java.util.function.*;
         4  import htsjdk.samtools.*;
         5  import htsjdk.samtools.util.*;
         6  import javax.annotation.Generated;
         7  @Generated(value="SamJdk",date="2017-11-16T09:14:42+0000")
         8  public class SamJdkCustom1278889725 extends com.github.lindenb.jvarkit.tools.samjs.SamJdk.AbstractFilter {
         9    public SamJdkCustom1278889725(final SAMFileHeader header) {
        10    super(header);
        11    }
        12    @Override
        13    public Object apply(final SAMRecord record) {
        14     /** user's code starts here */
        15  null
        16  /** user's code ends here */
        17     }
        18  }
[WARN][InMemoryCompiler]/SamJdkCustom1278889725.java:15: error: not a statement
null
^
/SamJdkCustom1278889725.java:15: error: ';' expected
null
    ^
2 errors

[SEVERE][InMemoryCompiler]compile.call() failed for custom class SamJdkCustom1278889725
java.lang.RuntimeException: compile.call() failed for custom class SamJdkCustom1278889725
        at com.github.lindenb.jvarkit.lang.InMemoryCompiler.compileClass(InMemoryCompiler.java:230)
        at com.github.lindenb.jvarkit.tools.samjs.SamJdk.doWork(SamJdk.java:454)
        at com.github.lindenb.jvarkit.util.jcommander.Launcher.instanceMain(Launcher.java:1183)
        at com.github.lindenb.jvarkit.util.jcommander.Launcher.instanceMainWithExit(Launcher.java:1341)
        at com.github.lindenb.jvarkit.tools.samjs.SamJdk.main(SamJdk.java:673)
[SEVERE][SamJdk]Cannot compile custom class SamJdkCustom1278889725
java.lang.RuntimeException: Cannot compile custom class SamJdkCustom1278889725
        at com.github.lindenb.jvarkit.lang.InMemoryCompiler.compileClass(InMemoryCompiler.java:234)
        at com.github.lindenb.jvarkit.tools.samjs.SamJdk.doWork(SamJdk.java:454)
        at com.github.lindenb.jvarkit.util.jcommander.Launcher.instanceMain(Launcher.java:1183)
        at com.github.lindenb.jvarkit.util.jcommander.Launcher.instanceMainWithExit(Launcher.java:1341)
        at com.github.lindenb.jvarkit.tools.samjs.SamJdk.main(SamJdk.java:673)
Caused by: java.lang.RuntimeException: compile.call() failed for custom class SamJdkCustom1278889725
        at com.github.lindenb.jvarkit.lang.InMemoryCompiler.compileClass(InMemoryCompiler.java:230)
        ... 4 more
[INFO][Launcher]samjdk Exited with failure (-1)

### Your environment
* version of jvarkit
* version of java
* the value of `${JAVA_HOME}`
* which OS

Steps to reproduce

When running on a bam file, I get:

java -jar dist/samjdk.jar  --samoutputformat BAM --pair /home/dnanexus/my.bam                            
[DEBUG][SamJdk] Compiling :
         1  import java.util.*;
         2  import java.util.stream.*;
         3  import java.util.function.*;
         4  import htsjdk.samtools.*;
         5  import htsjdk.samtools.util.*;
         6  import javax.annotation.Generated;
         7  @Generated(value="SamJdk",date="2017-11-16T09:20:01+0000")
         8  public class SamJdkCustom757200333 extends com.github.lindenb.jvarkit.tools.samjs.SamJdk.AbstractListFilter {
         9    public SamJdkCustom757200333(final SAMFileHeader header) {
        10    super(header);
        11    }
        12    @Override
        13    public Object apply(final List<SAMRecord> records) {
        14     /** user's code starts here */
        15  null
        16  /** user's code ends here */
        17     }
        18  }
[WARN][InMemoryCompiler]/SamJdkCustom757200333.java:15: error: not a statement
null
^
/SamJdkCustom757200333.java:15: error: ';' expected
null
    ^
2 errors

[SEVERE][InMemoryCompiler]compile.call() failed for custom class SamJdkCustom757200333
java.lang.RuntimeException: compile.call() failed for custom class SamJdkCustom757200333
        at com.github.lindenb.jvarkit.lang.InMemoryCompiler.compileClass(InMemoryCompiler.java:230)
        at com.github.lindenb.jvarkit.tools.samjs.SamJdk.doWork(SamJdk.java:454)
        at com.github.lindenb.jvarkit.util.jcommander.Launcher.instanceMain(Launcher.java:1183)
        at com.github.lindenb.jvarkit.util.jcommander.Launcher.instanceMainWithExit(Launcher.java:1341)
        at com.github.lindenb.jvarkit.tools.samjs.SamJdk.main(SamJdk.java:673)
[SEVERE][SamJdk]Cannot compile custom class SamJdkCustom757200333
java.lang.RuntimeException: Cannot compile custom class SamJdkCustom757200333
        at com.github.lindenb.jvarkit.lang.InMemoryCompiler.compileClass(InMemoryCompiler.java:234)
        at com.github.lindenb.jvarkit.tools.samjs.SamJdk.doWork(SamJdk.java:454)
        at com.github.lindenb.jvarkit.util.jcommander.Launcher.instanceMain(Launcher.java:1183)
        at com.github.lindenb.jvarkit.util.jcommander.Launcher.instanceMainWithExit(Launcher.java:1341)
        at com.github.lindenb.jvarkit.tools.samjs.SamJdk.main(SamJdk.java:673)
Caused by: java.lang.RuntimeException: compile.call() failed for custom class SamJdkCustom757200333
        at com.github.lindenb.jvarkit.lang.InMemoryCompiler.compileClass(InMemoryCompiler.java:230)
        ... 4 more
[INFO][Launcher]samjdk Exited with failure (-1)

Expected behaviour

Tell us what should happen

Actual behaviour

I got it to work with a slightly different version of java on a different machine, but not on this version.

lindenb commented 6 years ago

sorry for the last answer, for an unknow reason I don't receive my emails from github.

you' re running java -jar dist/samjdk.jar without any argument. That's why the resulting code is throwing an error. options -e or -f are required. http://lindenb.github.io/jvarkit/SamJdk.html

lindenb commented 6 years ago

I've just added an extra message to notify the user about this issue ( script shouldn't be empty) https://github.com/lindenb/jvarkit/commit/6cee6caca575f1dee3efe872fb93908b2455be32