Skip to content
Commits on Source (6)
These instructions are meant for developers interested in work on the IGV code. For normal use,
we recommend the pre-built releases available at www.igv.org.
# igv
The IGV JAR build now uses Gradle instead of Ant.
Integrative Genomics Viewer - dekstop genome visualization tool for Mac, Windows, and Linux.
### Building
These instructions are meant for developers interested in working on the IGV code. For normal use,
we recommend the pre-built releases available at [http://software.broadinstitute.org/software/igv/download](http://software.broadinstitute.org/software/igv/download).
Install Gradle for your platform. See https://gradle.org/ for details.
Builds are executed from the IGV project directory. Files will be created in the 'build' subdirectory.
You may need to execute 'gradle wrapper' to set up the gradle wrapper. This should be necessary the
......@@ -14,36 +17,53 @@ There are two different build options, one for Java 8 and another for Java 9 and
to build for Java 8. Java 8 builds are *NOT* compatible with Java 9 and vice versa.
There are other options but these cover the most common uses:
- Use './gradlew createDist' to build a distribution directory (found in 'build/IGV-dist') containing
NOTE: If on a Windows platform use ```./gradlew.bat'``` in the instructions below
#### Java 8
* Install Gradle for your platform. See https://gradle.org/ for details.
* Use ```./gradlew createDist``` to build a distribution directory (found in ```build/IGV-dist```) containing
the igv.jar and its required runtime third-party dependencies (batik-codec, goby, and log4j-core) as
well as helper scripts for launching.
- These four JARs will be identical to those available in the download bundles from our website,
* These four JARs will be identical to those available in the download bundles from our website,
with the exception that they will not be signed with our certificate (required for JNLP) and
will have slightly different build properties (timestamp, etc) in about.properties.
- All four JARs must be in the same location in order to run IGV. It can be run directly from
* All four JARs must be in the same location in order to run IGV. It can be run directly from
'build/IGV-dist'
- Launch with 'igv.sh' on UNIX, 'igv.command' on Mac, and 'igv.bat' on Windows. These scripts can
be edited to adjust e.g. JVM flags like maximum memory, etc.
- All other runtime dependencies are bundled into igv.jar. There is also an igv-minimal.jar in
* Launch with 'igv.sh' on UNIX, 'igv.command' on Mac, and 'igv.bat' on Windows. These scripts can
be edited to adjust JVM flags like maximum memory, etc.
* All other runtime dependencies are bundled into igv.jar. There is also an igv-minimal.jar in
'build/libs' containing just the IGV classes and resources for those who prefer to manage
dependencies as separate files.
- Use './gradlew createToolsDist' to build an igvtools distribution directory (found in
* Use ```./gradlew createToolsDist``` to build an igvtools distribution directory (found in
'build/IGVTools-dist') containing the igvtools.jar and dependencies (same as for IGV, above)
JAR dependencies plus helper scripts for running and launching.
As above, these JARs will be identical aside from signing, timestamps, etc. and all must be
present together to run. See igvtools_readme.txt for more info.
- Use './gradlew build' to build everything and run the test suite. See 'src/test/README.txt' for more
information about running the tests.
* Use ```./gradlew test``` to run the test suite. See 'src/test/README.txt' for more information about running
the tests.
Note that Gradle creates a number of other subdirectories in 'build'. These can be safely ignored.
#### Java 9
The instructions for Java 9 are nearly identical other than the need to specify the Java 9 build file
and that the results will be found in 'build_java9' rather than 'build'. More specifically:
- Use './gradlew -b build_java9.gradle createDist' to build a distribution directory with helper scripts
* Use './gradlew -b build_java9.gradle createDist' to build a distribution directory with helper scripts
for launching. The structure is slightly different but the concept is the same.
- Use './gradlew -b build_java9.gradle createToolsDist' for the igvtools distribution.
- Use './gradlew -b build_java9.gradle build' to build everything and run the test suite.
* Use './gradlew -b build_java9.gradle createToolsDist' for the igvtools distribution.
* Use './gradlew -b build_java9.gradle test' to run the test suite.
The full JAR build option is *NOT* available for Java 9+ because of modularilty requirements.
The full JAR build option is *NOT* available for Java 9+ because of modularity requirements.
NOTE: In the above, use './gradlew.bat' on the Windows platform.
\ No newline at end of file
......@@ -179,7 +179,6 @@ tasks.withType(Test) {
systemProperties['include.longrunning'] = 'false'
systemProperties['ignore.ioexceptions'] = 'false'
maxHeapSize = '2000m'
forkEvery = 1
}
task createDist(type: Copy, dependsOn: fullJar) {
......@@ -295,7 +294,7 @@ task createToolsDist(type: Copy, dependsOn: toolJar) {
into "lib"
}
with copySpec { from ("genomes") { } into "genomes" }
with copySpec { from ("genomes/sizes") { } into "lib/genomes" }
into "${buildDir}/IGVTools-dist"
}
......
......@@ -23,7 +23,7 @@
apply plugin: 'java'
import org.apache.tools.ant.filters.ReplaceTokens
ext.moduleName = 'org.broad.igv'
ext.moduleName = 'org.igv'
ext.mainClassName = 'org.broad.igv.ui.Main'
// Put the Java 9 build into a special dir to avoid accidental collisions.
......@@ -109,7 +109,6 @@ tasks.withType(Test) {
systemProperties['include.longrunning'] = 'false'
systemProperties['ignore.ioexceptions'] = 'false'
maxHeapSize = '2000m'
forkEvery = 1
}
compileTestJava {
......@@ -136,9 +135,7 @@ test {
'--add-modules', 'ALL-MODULE-PATH',
'--add-reads', "$moduleName=junit",
'--add-reads', "$moduleName=fest.swing",
'--add-exports', "$moduleName/org.broad.igv.preprocess=junit",
'--add-exports', "$moduleName/org.broad.tribble=junit",
'--add-exports', "$moduleName/util=junit",
'@scripts/java9/test_suite.args',
'--patch-module', "$moduleName=" + files(sourceSets.test.java.outputDir, sourceSets.main.output.resourcesDir).asPath,
]
classpath = files()
......@@ -173,11 +170,11 @@ task createDist(type: Copy, dependsOn: jar) {
}
task createDistZip(type: Zip, dependsOn: createDist) {
archiveName = "IGV_${version}.zip"
archiveName = "IGV_${version}_java10.zip"
destinationDir = file("${buildDir}/distZip")
baseName = "IGV"
from "${buildDir}/IGV-dist" exclude "*.bat"
into createDistZip.baseName + "_${version}"
into createDistZip.baseName + "_${version}_java10"
doLast {
project.exec { commandLine('chmod', '775', createDistZip.archivePath ) }
......@@ -187,28 +184,28 @@ task createDistZip(type: Zip, dependsOn: createDist) {
task createMacDist(type: Copy, dependsOn: createDist) {
with copySpec {
from ("scripts/mac.app") exclude "Contents/Info.plist.template"
into "IGV_${version}.app"
into "IGV_${version}_java10.app"
}
with copySpec {
from ("scripts/java9/Info.plist.template")
filter (ReplaceTokens, tokens: [ VERSION: version ])
rename "Info.plist.template", "Info.plist"
into "IGV_${version}.app/Contents"
into "IGV_${version}_java10.app/Contents"
}
with copySpec {
from ("${buildDir}/IGV-dist/lib") include '*.jar'
into "IGV_${version}.app/Contents/Java"
into "IGV_${version}_java10.app/Contents/Java"
}
into "${buildDir}/IGV-Mac-dist"
doLast {
project.exec { commandLine('chmod', '775', "${buildDir}/IGV-Mac-dist/IGV_${version}.app" ) }
project.exec { commandLine('chmod', '775', "${buildDir}/IGV-Mac-dist/IGV_${version}_java10.app" ) }
}
}
task createMacDistZip(type: Zip, dependsOn: createMacDist) {
archiveName = "IGV_${version}.app.zip"
archiveName = "IGV_${version}_java10.app.zip"
destinationDir = file("${buildDir}/distZip")
from "${buildDir}/IGV-Mac-dist"
......@@ -218,14 +215,14 @@ task createMacDistZip(type: Zip, dependsOn: createMacDist) {
}
task createWinDistZip(type: Zip, dependsOn: createDist) {
archiveName = "IGV_Win_${version}.zip"
archiveName = "IGV_Win_${version}_java10.zip"
destinationDir = file("${buildDir}/distZip")
baseName = "IGV_Win"
from("${buildDir}/IGV-dist") {
exclude "*.sh"
exclude "igv.command"
}
into createWinDistZip.baseName + "_${version}"
into createWinDistZip.baseName + "_${version}_java10"
doLast {
project.exec { commandLine('chmod', '775', createWinDistZip.archivePath ) }
......@@ -254,15 +251,15 @@ task createToolsDist(type: Copy, dependsOn: tooljar) {
into "lib"
}
with copySpec { from ("genomes") { } into "genomes" }
with copySpec { from ("genomes/sizes") { } into "lib/genomes" }
into "${buildDir}/IGVTools-dist"
}
task createToolsDistZip(type: Zip, dependsOn: createToolsDist) {
archiveName = "igvtools_${version}.zip"
archiveName = "igvtools_${version}_java10.zip"
destinationDir = file("${buildDir}/distZip")
baseName = "IGVTools"
baseName = "IGVTools_java10"
from "${buildDir}/IGVTools-dist"
into createToolsDistZip.baseName
......
igv (2.4.16+dfsg-1) UNRELEASED; urgency=medium
* New upstream version
* Drop Build-Depends: libmysql-java, Recommends: libmariadb-java
Closes: #913323
-- Andreas Tille <tille@debian.org> Thu, 06 Dec 2018 09:11:58 +0100
igv (2.4.14+dfsg-2) unstable; urgency=medium
[ Olivier Sallou ]
......
......@@ -34,7 +34,6 @@ Build-Depends: default-jdk,
libguava-java,
libbcprov-java (>= 1.47),
libjgrapht0.8-java,
libmysql-java,
libgoogle-gson-java,
javahelper,
libjide-oss-java,
......@@ -55,6 +54,7 @@ Depends: ${misc:Depends},
libhtsjdk-java,
liblog4j2-java,
libpicard-java
Recommends: libmariadb-java
Description: Integrative Genomics Viewer
The Integrative Genomics Viewer (IGV) is a high-performance viewer that
efficiently handles large heterogeneous data sets, while providing a
......
......@@ -20,8 +20,8 @@ Forwarded: no
+}
import org.apache.tools.ant.filters.ReplaceTokens
ext.moduleName = 'org.broad.igv'
@@ -30,6 +33,12 @@
ext.moduleName = 'org.igv'
@@ -30,6 +33,12 @@ ext.mainClassName = 'org.broad.igv.ui.Ma
// Despite this, it is recommended that Java 8 vs. 9 builds be run in different locations.
buildDir = 'build_java9'
......@@ -34,7 +34,7 @@ Forwarded: no
sourceSets {
main {
java {
@@ -45,6 +54,28 @@
@@ -45,6 +54,28 @@ sourceSets {
dependencies {
// Use the newer JIDE lib for Java 9 builds
compile fileTree(dir: 'lib', include: '*.jar', exclude: 'jide-oss-3.5.5.jar') + fileTree(dir: 'lib_java9', include: '*.jar')
......@@ -63,7 +63,7 @@ Forwarded: no
testCompile fileTree(dir: 'test/lib', include: '*.jar')
}
@@ -52,8 +83,8 @@
@@ -52,8 +83,8 @@ task wrapper(type: Wrapper) {
gradleVersion = '4.4.1'
}
......@@ -74,7 +74,7 @@ Forwarded: no
processResources {
// Set the current timestamp for release builds; pass in a blank property to enable (i.e. -Ptimestamp="" at CLI)
@@ -93,12 +124,9 @@
@@ -93,12 +124,9 @@ task tooljar(type: Jar, dependsOn: jar)
}
compileJava {
......@@ -91,7 +91,7 @@ Forwarded: no
--- a/src/main/java9/module-info.java
+++ b/src/main/java9/module-info.java
@@ -93,11 +93,11 @@
@@ -5,11 +5,11 @@ module org.igv {
requires AbsoluteLayout;
requires ant;
......@@ -107,18 +107,7 @@ Forwarded: no
requires htsjdk;
requires java.datatransfer;
requires java.desktop;
@@ -107,15 +107,10 @@
requires java.sql;
requires java.xml;
requires java.xml.bind;
- requires javafx.base;
- requires javafx.controls;
- requires javafx.fxml;
- requires javafx.graphics;
- requires javafx.swing;
requires jdk.xml.dom;
- requires jfreechart;
+ requires jfreechart.debian;
@@ -22,5 +22,5 @@ module org.igv {
requires log4j;
requires org.apache.logging.log4j;
requires org.apache.logging.log4j.core;
......@@ -127,7 +116,7 @@ Forwarded: no
}
--- a/src/main/java/org/broad/igv/util/stream/IGVSeekableBufferedStream.java
+++ b/src/main/java/org/broad/igv/util/stream/IGVSeekableBufferedStream.java
@@ -88,27 +88,6 @@
@@ -87,16 +87,6 @@ public class IGVSeekableBufferedStream e
return actualSkip;
}
......@@ -140,22 +129,11 @@ Forwarded: no
- position = markpos;
-
- }
-
- @Override
- public synchronized void mark(int readlimit) {
- this.markpos = (int) position;
- this.marklimit = readlimit;
- }
-
- @Override
- public boolean markSupported() {
- return true;
- }
-
public void seek(final long position) throws IOException {
this.position = position;
}
@@ -227,4 +206,4 @@
@@ -215,4 +205,4 @@ public class IGVSeekableBufferedStream e
bufferSize = tmpBufferSize;
}
}
......
This diff is collapsed.
......@@ -2,8 +2,8 @@
<Global name="Annotations" version="1">
<Category name="Genes">
<Resource name="Ensemble Genes"
path="http://www.broadinstitute.org/igvdata/annotations/hg19/EnsemblGenes.ensGene">
<Resource name="Ensembl Genes"
path="https://s3.amazonaws.com/igv.org.genomes/hg19/ensGene.txt.gz">
</Resource>
<Resource name="UCSC Genes" hyperlink="http://genome.ucsc.edu/cgi-bin/hgTrackUi?g=knownGene"
path="http://www.broadinstitute.org/igvdata/annotations/hg19/UCSCGenes.ucscGene">
......
http://igv.broadinstitute.org/annotations/hg19/hg19_annotations.xml
https://s3.amazonaws.com/igv.org.genomes/hg19/hg19_annotations.xml
http://gdac.broadinstitute.org/tap/igv/load/tcga_hg19.xml
http://www.broadinstitute.org/igvdata/encode/hg19/hg19_encode.xml
#http://www.broadinstitute.org/igvdata/crome/crome.xml
http://igv.broadinstitute.org/data/hg19/BodyMap/BodyMap_hg19.xml
#http://www.broadinstitute.org/igvdata/1KG/b37/1KG_b37.php
http://www.broadinstitute.org/igvdata/1KG/b37/1KG.s3.bams.xml
http://www.broadinstitute.org/igvdata/tutorials/tutorials.hg19.xml
http://www.broadinstitute.org/igvdata/1KG/b37/1KG.s3.xml
http://www.broadinstitute.org/igvdata/tutorials/tutorials.hg19.xml
\ No newline at end of file
......@@ -7,10 +7,10 @@
<Resource name="Gencode V24 Basic"
path="https://s3.amazonaws.com/igv.broadinstitute.org/data/hg38/gencode.v24.basic.annotation.sorted.gtf.gz"
hyperlink="http://www.gencodegenes.org/"/>
<Resource name="Ensemble Genes (80)"
path="https://s3.amazonaws.com/igv.broadinstitute.org/annotations/hg38/genes/Homo_sapiens.GRCh38.80.sorted.gtf.gz"
<Resource name="Ensembl Genes (94)"
path="https://s3.amazonaws.com/igv.org.genomes/hg38/Homo_sapiens.GRCh38.94.chr.gff3.gz"
trackLine="visibility=pack"
hyperlink="ftp://ftp.ensembl.org/pub/release-80/README"/>
hyperlink="ftp://ftp.ensembl.org/pub/release-94/README"/>
<Resource name="All Snps 1.4.2"
path="https://s3.amazonaws.com/igv.broadinstitute.org/annotations/hg38/dbsnp142_All.vcf.gz"
hyperlink="http://www.ncbi.nlm.nih.gov/variation/docs/human_variation_vcf/"/>
......
https://s3.amazonaws.com/igv.broadinstitute.org/annotations/hg38/hg38_annotations.xml
https://s3.amazonaws.com/igv.org.genomes/hg38/hg38_annotations.xml
......@@ -119,8 +119,7 @@ S. cerevisiae (sacCer1) http://s3.amazonaws.com/igv.broadinstitute.org/genomes/s
S. cerevisiae (sacCer2) http://s3.amazonaws.com/igv.broadinstitute.org/genomes/sacCer2.genome sacCer2
S. cerevisiae (sacCer3) http://s3.amazonaws.com/igv.broadinstitute.org/genomes/sacCer3.genome sacCer3
S. cerevisiae (sk1) http://s3.amazonaws.com/igv.broadinstitute.org/genomes/sk1.genome sk1
S. pombe (7/09) http://s3.amazonaws.com/igv.broadinstitute.org/genomes/spombe_709.genome spombe_709
S. pombe (EF 1.55) http://s3.amazonaws.com/igv.broadinstitute.org/genomes/spombe_1.55.genome spombe_1.55
S. pombe (ASM294v2) https://s3.amazonaws.com/igv.broadinstitute.org/genomes/ASM294v2.genome ASM294v2
S. purpuratus (2.5) http://s3.amazonaws.com/igv.broadinstitute.org/genomes/spur_2.5.genome spur_2.5
S. purpuratus (3.0) http://s3.amazonaws.com/igv.broadinstitute.org/genomes/spur_3.0.genome spur_3.0
S. sclerotiorum (sclerotiorum) http://s3.amazonaws.com/igv.broadinstitute.org/genomes/sclerotiorum.genome sclerotiorum
......
......@@ -10,6 +10,6 @@ development=false
# Jar signing properties; ignored for developer builds
keystore=not_set
alias=not_set
key-password=not_set
store-password=not_set
keyPassword=not_set
storePassword=not_set
tsaurl=not_set
......@@ -8,5 +8,6 @@
prefix=`dirname $(readlink $0 || echo $0)`
exec java -Xmx4g \
-Dapple.laf.useScreenMenuBar=true \
-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true \
-Djava.net.preferIPv4Stack=true \
-jar "$prefix"/lib/igv.jar "$@"
#!/bin/sh
java -Xmx1500m -jar `dirname $0`/lib/igvtools.jar gui
java -Xmx1500m -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -jar `dirname $0`/lib/igvtools.jar gui
......@@ -12,12 +12,12 @@ Starting with shell scripts
---------------------------------------------------------------------------
The utilities are invoked from one of the following scripts:
igvtools (command line version for linux and Mac OS 10.x)
igvtools_gui (gui version for linux and Mac OS 10.x)
igvtools_gui.command (alternative double-clickable gui version for Mac OS 10.x)
igvtools (command line version for Linux and macOS 10.x)
igvtools_gui (gui version for Linux and macOS 10.x)
igvtools_gui.command (alternative double-clickable gui version for macOS 10.x)
igvtools.bat (command line version for windows)
igvtools_gui.bat (gui version for windows)
igvtools.bat (command line version for Windows)
igvtools_gui.bat (gui version for Windows)
The general form of the command-line version is:
......
......@@ -45,7 +45,7 @@
<string>-Xdock:name=IGV</string>
</array>
<key>JVMMainClassName</key>
<string>--module=org.broad.igv/org.broad.igv.ui.Main</string>
<string>--module=org.igv/org.broad.igv.ui.Main</string>
<key>JVMArguments</key>
<array/>
<key>NSHighResolutionCapable</key>
......
......@@ -4,4 +4,4 @@ for %%x in (%0) do set BatchPath=%%~dpsx
for %%x in (%BatchPath%) do set BatchPath=%%~dpsx
java --module-path=%BatchPath%\lib -Xmx4g -Dproduction=true @%BatchPath%\igv.args -Djava.net.preferIPv4Stack=true -Dsun.java2d.noddraw=true --module org.broad.igv/org.broad.igv.ui.Main %*
java --module-path=%BatchPath%\lib -Xmx4g -Dproduction=true @%BatchPath%\igv.args -Djava.net.preferIPv4Stack=true -Dsun.java2d.noddraw=true --module org.igv/org.broad.igv.ui.Main %*
......@@ -6,7 +6,6 @@
#apple.laf.useScreenMenuBar for Macs, to put menu bar at top of screen
#-Xdock:name again for Macs, sets the name in menu bar
#-Xmx4g indicates 4 gb of memory, adjust number up or down as needed
#Script must be in the same directory as igv.jar
#Add the flag -Ddevelopment = true to use features still in development
prefix=`dirname $(readlink $0 || echo $0)`
exec java --module-path="$prefix"/lib -Xmx4g \
......@@ -14,4 +13,4 @@ exec java --module-path="$prefix"/lib -Xmx4g \
-Xdock:name="IGV" \
-Dapple.laf.useScreenMenuBar=true \
-Djava.net.preferIPv4Stack=true \
--module org.broad.igv/org.broad.igv.ui.Main "$@"
--module org.igv/org.broad.igv.ui.Main "$@"
......@@ -5,10 +5,11 @@
#-Xmx4g indicates 4 gb of memory, adjust number up or down as needed
#Script must be in the same directory as igv.jar
#Add the flag -Ddevelopment = true to use features still in development
#Add the flag -Dsun.java2d.uiScale=2.0 for HiDPI displays
#Add the flag -Dsun.java2d.uiScale=2 for HiDPI displays
prefix=`dirname $(readlink $0 || echo $0)`
exec java --module-path="$prefix"/lib -Xmx4g \
@igv.args \
-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true \
-Dapple.laf.useScreenMenuBar=true \
-Djava.net.preferIPv4Stack=true \
--module org.broad.igv/org.broad.igv.ui.Main "$@"
--module org.igv/org.broad.igv.ui.Main "$@"