Skip to content
Commits on Source (6)
......@@ -10,3 +10,4 @@ igv.log
.classpath
/.idea/
/.settings
/proguard_log
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ The MIT License (MIT)
~
~ Copyright (c) 2007-2018 Broad Institute
~
~ Permission is hereby granted, free of charge, to any person obtaining a copy
~ of this software and associated documentation files (the "Software"), to deal
~ in the Software without restriction, including without limitation the rights
~ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
~ copies of the Software, and to permit persons to whom the Software is
~ furnished to do so, subject to the following conditions:
~
~ The above copyright notice and this permission notice shall be included in
~ all copies or substantial portions of the Software.
~
~
~ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
~ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
~ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
~ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
~ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
~ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
~ THE SOFTWARE.
-->
<!-- Ant build script to create a unified IGV JAR, shrunk with BCEL.
This is difficult to do in Gradle so it's handled here.
We may eventually switch to a different method (e.g. ProGuard) that makes
this unnecessary.
-->
<project name="igv-release" default="allBuild" basedir=".">
<!-- build specific properties. Generally set through Jenkins, command line, or properties file-->
<property name="build-number" value="0"/>
<property name="version" value="user"/>
<property name="vendor" value="user"/>
<property name="include.libs" value="true" />
<property name="main-class" value="org.broad.igv.ui.Main"/>
<property name="lib.dir" value="${basedir}/lib/"/>
<property name="tmp.dir" value="${basedir}/build/tmp/IGV-dist"/>
<property name="jar.name" value="igv.jar"/>
<property name="dist.dir" value="build/IGV-dist/"/>
<property name="jar.path" value="${dist.dir}${jar.name}"/>
<property name="batik-codec-finame" value="batik-codec-1.10.jar" />
<property name="goby-io-finame" value="goby-io-igv-1.1.jar" />
<property name="log4j-core-finame" value="log4j-core-2.11.0.jar" />
<!-- These paths are dictated by Gradle. -->
<property name="class.dir" value="build/classes/java/main" />
<property name="resource.dir" value="build/resources/main" />
<condition property="act.include.libs">
<and>
<available classname="org.apache.tools.ant.util.depend.bcel.FullAnalyzer" />
<istrue value="${include.libs}" />
</and>
</condition>
<!-- Unzip jars to the tmp directory and copy IGV classes & resources. Could do
this step in Gradle, but may not be required in the future (ProGuard can work
on jars directly, for example).
-->
<target name="prepare" if="act.include.libs">
<mkdir dir="${dist.dir}" />
<unzip dest="${tmp.dir}">
<!-- Copy almost everything to tmp directory
Certain jars we include whole, because we need their manifests
Goby get copied later.
Certain jars we just want to ignore (junit, appbundler).
-->
<patternset>
<include name="**/*"/>
<exclude name="META-INF/**"/>
<exclude name="${lib.dir}/*"/>
</patternset>
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
<exclude name="appbundler*.jar"/>
<exclude name="**/*junit*.jar"/>
<exclude name="**/${batik-codec-finame}"/>
<exclude name="**/${goby-io-finame}"/>
<exclude name="**/${log4j-core-finame}"/>
<exclude name="**/*AppleJavaExtensions.jar"/>
</fileset>
</unzip>
<copy todir="${tmp.dir}">
<fileset dir="${class.dir}" includes="**/*" />
</copy>
<copy todir="${tmp.dir}">
<fileset dir="${resource.dir}" includes="**/*" />
</copy>
</target>
<target name="shrinkJar" depends="prepare" if="act.include.libs"
description="Build the unified IGV JAR, including libraries, using BCEL to take only required classes">
<classfileset dir="${tmp.dir}" id="rootFiles">
<rootfileset dir="${tmp.dir}" includes="org/broad/**/*.class" />
</classfileset>
<property name="class-path" value="${batik-codec-finame} ${goby-io-finame} ${log4j-core-finame}" />
<jar destfile="${jar.path}" basedir="${tmp.dir}" compress="true" duplicate="preserve">
<fileset refid="rootFiles"/>
<manifest>
<attribute name="Permissions" value="all-permissions"/>
<attribute name="Application-Name" value="IGV"/>
<!-- Here just to be a good citizen. Apparently reading from the correct manifest
is tricky. We rely on a separate properties file-->
<attribute name="Class-Path" value="${class-path}"/>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Main-Class" value="${main-class}"/>
<section name="org/broad/igv/">
<attribute name="Specification-Title" value="IGV"/>
<attribute name="Specification-Version" value="${version}"/>
<attribute name="Specification-Vendor" value="${vendor}"/>
<attribute name="Implementation-Version" value="${version} ${build-number}"/>
<attribute name="Implementation-Vendor" value="${vendor}"/>
</section>
</manifest>
</jar>
<delete dir="${tmp.dir}" />
<copy file="${lib.dir}${batik-codec-finame}" tofile="${dist.dir}${batik-codec-finame}" overwrite="true"/>
<copy file="${lib.dir}${goby-io-finame}" tofile="${dist.dir}${goby-io-finame}" overwrite="true"/>
<copy file="${lib.dir}${log4j-core-finame}" tofile="${dist.dir}${log4j-core-finame}" overwrite="true"/>
</target>
<!--Add permissions attribute to manifest of jars -->
<!-- We use exec because it's easier, this will only run on *nix-->
<macrodef name="addPermsMacro">
<attribute name="jarfile"/>
<sequential>
<!--Newline is important!-->
<echo file="tmp.txt">Permissions: all-permissions${line.separator}</echo>
<exec executable="jar">
<arg value="ufm"/>
<arg value="@{jarfile}"/>
<arg value="tmp.txt"/>
</exec>
<delete file="tmp.txt"/>
</sequential>
</macrodef>
<target name="addPerms">
<addPermsMacro jarfile="${dist.dir}${batik-codec-finame}"/>
<addPermsMacro jarfile="${dist.dir}${goby-io-finame}"/>
<addPermsMacro jarfile="${dist.dir}${log4j-core-finame}"/>
</target>
<target name="allBuild" depends="shrinkJar,addPerms">
<copy file="scripts/igv.sh" todir="${dist.dir}" />
<copy file="scripts/igv.bat" todir="${dist.dir}" />
<copy file="scripts/igv.command" todir="${dist.dir}" />
<chmod perm="775" file="${dist.dir}igv.sh" />
<chmod perm="775" file="${dist.dir}igv.command" />
</target>
</project>
\ No newline at end of file
......@@ -26,6 +26,16 @@ import org.apache.tools.ant.filters.ReplaceTokens
// Define the main class for the application
ext.mainClassName = 'org.broad.igv.ui.Main'
// Set up the ProGuard optimizing task
buildscript {
repositories {
flatDir dirs: 'lib_build'
}
dependencies {
classpath ':proguard:'
}
}
sourceSets {
main {
java {
......@@ -38,7 +48,14 @@ sourceSets {
}
}
configurations {
jarsToShipUntouched
compile.extendsFrom jarsToShipUntouched
}
dependencies {
jarsToShipUntouched fileTree(dir: 'lib',
include: ['batik-codec-1.10.jar', 'goby-io-igv-1.1.jar', 'log4j-core-2.11.0.jar'])
compile fileTree(dir: 'lib', include: '*.jar')
testCompile fileTree(dir: 'test/lib', include: '*.jar')
}
......@@ -52,7 +69,12 @@ targetCompatibility = 1.8
processResources {
// Set the current timestamp for release builds; pass in a blank property to enable (i.e. -Ptimestamp="" at CLI)
if (timestamp.equals("")) { timestamp = new Date().format("MM/dd/yyyy hh:mm aa") }
if (timestamp.equals("")) {
ext.date = new Date()
timestamp = date.format("MM/dd/yyyy hh:mm aa")
// This is a more filesystem-friendly date format.
timestamp_fs = date.format("yyyy-MM-dd_HHmmss")
}
filesMatching('resources/about.properties') {
filter (ReplaceTokens,
......@@ -62,7 +84,7 @@ processResources {
}
jar {
archiveName = 'igv.jar'
archiveName = 'igv-minimal.jar'
manifest {
attributes(
"Permissions": "all-permissions",
......@@ -74,6 +96,82 @@ jar {
}
}
task fullJar(type: Jar, dependsOn: jar) {
// Based on https://discuss.gradle.org/t/removing-dependencies-from-a-jar-file-during-jar-task/5521/3
archiveName = 'igv.jar'
from {
((configurations.compile - configurations.jarsToShipUntouched) + "${buildDir}/libs/igv-minimal.jar").collect {
zipTree(it)
}
} {
exclude "META-INF/**"
}
manifest {
attributes(
"Permissions": "all-permissions",
"Application-Name": "IGV",
"Built-By": System.getProperty('user.name'),
"Main-Class": mainClassName,
"Class-Path": configurations.jarsToShipUntouched.collect { it.getName() }.join(' ')
)
}
}
task toolJar(type: Jar, dependsOn: jar) {
from {
((configurations.compile - configurations.jarsToShipUntouched) + "${buildDir}/libs/igv-minimal.jar").collect {
zipTree(it)
}
} {
exclude "META-INF/**"
}
archiveName = 'igvtools.jar'
manifest {
attributes(
"Implementation-Title": "IGVTools",
"Built-By": System.getProperty('user.name'),
"Main-Class": "org.broad.igv.tools.IgvTools",
"Class-Path": configurations.jarsToShipUntouched.collect { it.getName() }.join(' ')
)
}
}
task optimizeFullJar(type: proguard.gradle.ProGuardTask, dependsOn: fullJar) {
// EXPERIMENTAL: Optimize the fullJar to remove unused classes.
// This still needs tuning for correctness, and as a result we are not distributing the
// jar it creates. It is still useful because of the reports it generates, however.
doFirst { mkdir "proguard_log" }
verbose
injars "${buildDir}/libs/igv.jar"
outjars "${buildDir}/libs/igv-OPT.jar"
// Note that this points to the *JRE* jars.
libraryjars "${System.getProperty('java.home')}/lib",
jarfilter: 'rt.jar,charsets.jar,jce.jar,jfr.jar,jsse.jar,resources.jar,ext/jfxrt.jar'
libraryjars "lib", jarfilter: 'batik-codec-1.10.jar,goby-io-igv-1.1.jar,log4j-core-2.11.0.jar'
configuration "lib_build/proguard_full_client.cfg"
printusage "proguard_log/proguard_full_client_log_${timestamp_fs}.txt"
printseeds "proguard_log/proguard_full_client_seeds_${timestamp_fs}.txt"
}
task optimizeMinJar(type: proguard.gradle.ProGuardTask, dependsOn: jar) {
// EXPERIMENTAL: Optimize the minimal jar to remove unused classes (that is, our code base only).
// As above, needs tuning for correctness. The IGV-focused report it produces is more useful.
doFirst { mkdir "proguard_log" }
verbose
injars "${buildDir}/libs/igv-minimal.jar"
outjars "${buildDir}/libs/igv-minimal-OPT.jar"
libraryjars "${System.getProperty('java.home')}/lib",
jarfilter: 'rt.jar,charsets.jar,jce.jar,jfr.jar,jsse.jar,resources.jar,ext/jfxrt.jar'
// This is the difference from the above: consider all dependencies as libraryjars
libraryjars "lib", filter: '!META-INF/**/module-info.class'
configuration "lib_build/proguard_min_client.cfg"
printusage "proguard_log/proguard_min_client_log_${timestamp_fs}.txt"
printseeds "proguard_log/proguard_min_client_seeds_${timestamp_fs}.txt"
}
tasks.withType(Test) {
systemProperties = System.getProperties()
systemProperties['java.awt.headless'] = 'true'
......@@ -84,26 +182,50 @@ tasks.withType(Test) {
forkEvery = 1
}
task createDist(type: Copy, dependsOn: jar) {
task createDist(type: Copy, dependsOn: fullJar) {
from ("scripts") {
include 'igv.bat'
include 'igv.command'
include 'igv.sh'
include 'readme.txt'
}
with copySpec {
from ("${buildDir}/libs") {
include 'igv*.jar'
include 'igv.jar'
}
from ("lib") {
include '*.jar'
from (configurations.jarsToShipUntouched) { }
into "lib"
}
into "${buildDir}/dist"
into "${buildDir}/IGV-dist"
}
task createDistZip(type: Zip, dependsOn: createDist) {
task signJars(dependsOn: createDist) {
doLast {
// Only sign if the keystoreFile exists
ext.keystoreFile = file("${keystore}")
if (keystoreFile.exists()) {
ant.jar( update: true, file: "build/IGV-dist/lib/batik-codec-1.10.jar") {
delegate.manifest { attribute(name: 'Permissions', value: 'all-permissions') }
}
ant.jar( update: true, file: "build/IGV-dist/lib/goby-io-igv-1.1.jar") {
delegate.manifest { attribute(name: 'Permissions', value: 'all-permissions') }
}
ant.jar( update: true, file: "build/IGV-dist/lib/log4j-core-2.11.0.jar") {
delegate.manifest { attribute(name: 'Permissions', value: 'all-permissions') }
}
ant.signjar( jar: 'build/IGV-dist/lib/*.jar', keystore:"${keystoreFile.absolutePath}",
alias: "${alias}", keypass: "${keyPassword}", storepass: "${storePassword}", tsaurl: "${tsaurl}"
)
}
}
}
task createDistZip(type: Zip, dependsOn: [createDist, signJars]) {
archiveName = "IGV_${version}.zip"
destinationDir = file("${buildDir}/distZip")
baseName = "IGV"
from "${buildDir}/dist"
from "${buildDir}/IGV-dist" exclude "igv.bat"
into createDistZip.baseName + "_${version}"
doLast {
......@@ -111,4 +233,84 @@ task createDistZip(type: Zip, dependsOn: createDist) {
}
}
build.dependsOn createDistZip
task createMacDist(type: Copy, dependsOn: [createDist, signJars]) {
with copySpec {
from ("scripts/mac.app") exclude "Contents/Info.plist.template"
into "IGV_${version}.app"
}
with copySpec {
from ("scripts/mac.app/Contents/Info.plist.template")
filter (ReplaceTokens, tokens: [ VERSION: version ])
rename "Info.plist.template", "Info.plist"
into "IGV_${version}.app/Contents"
}
with copySpec {
from ("${buildDir}/IGV-dist/lib") include '*.jar'
into "IGV_${version}.app/Contents/Java"
}
into "${buildDir}/IGV-Mac-dist"
doLast {
project.exec { commandLine('chmod', '775', "${buildDir}/IGV-Mac-dist/IGV_${version}.app" ) }
}
}
task createMacDistZip(type: Zip, dependsOn: createMacDist) {
archiveName = "IGV_${version}.app.zip"
destinationDir = file("${buildDir}/distZip")
from "${buildDir}/IGV-Mac-dist"
doLast {
project.exec { commandLine('chmod', '775', createMacDistZip.archivePath ) }
}
}
task createWinDistZip(type: Zip, dependsOn: [createDist, signJars]) {
archiveName = "IGV_Win_${version}.zip"
destinationDir = file("${buildDir}/distZip")
baseName = "IGV_Win"
from("${buildDir}/IGV-dist") {
exclude "igv.sh"
exclude "igv.command"
}
into createWinDistZip.baseName + "_${version}"
doLast {
project.exec { commandLine('chmod', '775', createWinDistZip.archivePath ) }
}
}
task createToolsDist(type: Copy, dependsOn: toolJar) {
from ("scripts") {
include 'igvtools*'
include 'igvtools*.bat'
include 'igvtools*.command'
}
with copySpec {
from ("${buildDir}/libs") {
include 'igvtools.jar'
}
from (configurations.jarsToShipUntouched) { }
into "lib"
}
with copySpec { from ("genomes") { } into "genomes" }
into "${buildDir}/IGVTools-dist"
}
task createToolsDistZip(type: Zip, dependsOn: createToolsDist) {
destinationDir = file("${buildDir}/distZip")
archiveName = "igvtools_${version}.zip"
baseName = "IGVTools"
from "${buildDir}/IGVTools-dist"
into createToolsDistZip.baseName
doLast {
project.exec { commandLine('chmod', '775', createToolsDistZip.archivePath ) }
}
}
build.dependsOn createDistZip,createMacDistZip,createWinDistZip,createToolsDistZip
......@@ -78,6 +78,20 @@ jar {
}
}
task tooljar(type: Jar, dependsOn: jar) {
// This jar is the same as the client jar above, just a different jar name and manifest
archiveName = 'igvtools.jar'
from(sourceSets.main.output) { }
manifest {
attributes(
"Implementation-Title": "IGVTools",
"Built-By": System.getProperty('user.name'),
"Main-Class": "org.broad.igv.tools.IgvTools",
)
}
}
compileJava {
inputs.property("moduleName", moduleName)
doFirst {
......@@ -131,7 +145,17 @@ test {
}
}
def modulepathContent = copySpec {
task createDist(type: Copy, dependsOn: jar) {
from ('scripts/java9') {
include 'igv.bat'
include 'igv.command'
include 'igv.sh'
include 'igv_hidpi.*'
include 'igv.args'
include 'readme.txt'
}
with copySpec {
from ("lib") {
include '*.jar'
exclude 'jide-oss-3.5.5.jar'
......@@ -140,28 +164,19 @@ def modulepathContent = copySpec {
include '*.jar'
}
from ("${buildDir}/libs") {
include 'igv*.jar'
include 'igv.jar'
}
into "lib"
}
task createDist(type: Copy, dependsOn: jar) {
from ('scripts/java9') {
include 'igv.bat'
include 'igv.command'
include 'igv.sh'
include 'igv.args'
}
with modulepathContent
into "${buildDir}/dist"
into "${buildDir}/IGV-dist"
}
task createDistZip(type: Zip, dependsOn: createDist) {
archiveName = "IGV_${version}.zip"
destinationDir = file("${buildDir}/distZip")
baseName = "IGV"
from "${buildDir}/dist"
from "${buildDir}/IGV-dist" exclude "*.bat"
into createDistZip.baseName + "_${version}"
doLast {
......@@ -169,4 +184,92 @@ task createDistZip(type: Zip, dependsOn: createDist) {
}
}
build.dependsOn createDistZip
task createMacDist(type: Copy, dependsOn: createDist) {
with copySpec {
from ("scripts/mac.app") exclude "Contents/Info.plist.template"
into "IGV_${version}.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"
}
with copySpec {
from ("${buildDir}/IGV-dist/lib") include '*.jar'
into "IGV_${version}.app/Contents/Java"
}
into "${buildDir}/IGV-Mac-dist"
doLast {
project.exec { commandLine('chmod', '775', "${buildDir}/IGV-Mac-dist/IGV_${version}.app" ) }
}
}
task createMacDistZip(type: Zip, dependsOn: createMacDist) {
archiveName = "IGV_${version}.app.zip"
destinationDir = file("${buildDir}/distZip")
from "${buildDir}/IGV-Mac-dist"
doLast {
project.exec { commandLine('chmod', '775', createMacDistZip.archivePath ) }
}
}
task createWinDistZip(type: Zip, dependsOn: createDist) {
archiveName = "IGV_Win_${version}.zip"
destinationDir = file("${buildDir}/distZip")
baseName = "IGV_Win"
from("${buildDir}/IGV-dist") {
exclude "*.sh"
exclude "igv.command"
}
into createWinDistZip.baseName + "_${version}"
doLast {
project.exec { commandLine('chmod', '775', createWinDistZip.archivePath ) }
}
}
task createToolsDist(type: Copy, dependsOn: tooljar) {
from ("scripts/java9") {
include 'igvtools*'
include 'igvtools*.bat'
include 'igvtools*.command'
include 'igv.args'
}
with copySpec {
from ("${buildDir}/libs") {
include 'igvtools.jar'
}
from ("lib") {
include '*.jar'
exclude 'jide-oss-3.5.5.jar'
}
from ("lib_java9") {
include '*.jar'
}
into "lib"
}
with copySpec { from ("genomes") { } into "genomes" }
into "${buildDir}/IGVTools-dist"
}
task createToolsDistZip(type: Zip, dependsOn: createToolsDist) {
archiveName = "igvtools_${version}.zip"
destinationDir = file("${buildDir}/distZip")
baseName = "IGVTools"
from "${buildDir}/IGVTools-dist"
into createToolsDistZip.baseName
doLast {
project.exec { commandLine('chmod', '775', createToolsDistZip.archivePath ) }
}
}
build.dependsOn createDistZip,createMacDistZip,createWinDistZip,createToolsDistZip
......@@ -14,29 +14,36 @@ 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/dist') containing
igv.jar, all of the third-party library JARs as well as helper scripts for launching.
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.
Note that Gradle creates a number of other subdirectories in 'build'. These can be safely ignored.
- 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,
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
'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
'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
'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.
- OPTIONAL: assuming Ant is installed and configured with BCEL, a reduced-footprint version of the JAR
can be produced by running './gradlew jar' or './gradlew build' and then 'ant -f build-shrink.xml'.
This JAR will be found in 'build/IGV-dist' along with two supporting JARs (batik-codec and goby) and
helper scripts to run them (as above).
All three JARs must be in the same location in order to run IGV.
These three 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.
Note that Gradle creates a number of other subdirectories in 'build'. These can be safely ignored.
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
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.
The reduced-footprint JAR build option is *NOT* available for Java 9+ at this time. We will explore
alternatives in the future.
The full JAR build option is *NOT* available for Java 9+ because of modularilty requirements.
NOTE: In the above, use './gradlew.bat' on the Windows platform.
\ No newline at end of file
igv (2.4.13+dfsg-1) UNRELEASED; urgency=medium
igv (2.4.14+dfsg-1) UNRELEASED; urgency=medium
[ Dylan Aïssi ]
* Team upload.
......@@ -8,10 +8,10 @@ igv (2.4.13+dfsg-1) UNRELEASED; urgency=medium
[ Andreas Tille ]
* New upstream version
* Point Vcs fields to salsa.debian.org
* Standards-Version: 4.1.5
* Standards-Version: 4.2.1
* Upstream switched build system to gradle
-- Andreas Tille <tille@debian.org> Sun, 05 Aug 2018 06:01:19 +0200
-- Andreas Tille <tille@debian.org> Mon, 01 Oct 2018 21:14:39 +0200
igv (2.4.6+dfsg-1) unstable; urgency=medium
......
......@@ -39,7 +39,7 @@ Build-Depends: default-jdk,
libfest-assert-java,
libfest-util-java,
libfest-reflect-java
Standards-Version: 4.1.5
Standards-Version: 4.2.1
Vcs-Browser: https://salsa.debian.org/med-team/igv
Vcs-Git: https://salsa.debian.org/med-team/igv.git
Homepage: http://www.broadinstitute.org/igv/
......
......@@ -9,6 +9,11 @@ JAVA_HOME=/usr/lib/jvm/default-java
dh $@ --buildsystem=gradle --with javahelper
override_dh_clean:
if [ -e build_java8.gradle ] ; then mv build_java8.gradle build.gradle ; fi
rm -f goby-io-igv.jar
rm -f batik-codec.jar
dh_clean
override_dh_auto_configure:
mv build.gradle build_java8.gradle
cp -a build_java9.gradle build.gradle
......@@ -4,5 +4,12 @@ version=user
vendor=user
# Use a special constant for non-production builds so that the jar doesn't change
timestamp=not_set
timestamp_fs=not_set
dataServerUrl=http://www.broadinstitute.org/igvdata/$$_dataServerRegistry.txt
development=false
# Jar signing properties; ignored for developer builds
keystore=not_set
alias=not_set
key-password=not_set
store-password=not_set
tsaurl=not_set
################################################################################
# The MIT License (MIT)
#
# Copyright (c) 2007-2018 Broad Institute
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
################################################################################
-dontoptimize
-dontobfuscate
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
# Suppress notes and warnings coming from the various libraries.
-dontnote org.apache.**,org.broadinstitute.gatk.**,org.ibex.**,org.jdesktop.**,org.sqlite.**
-dontnote apple.dts.**,com.google.**,com.jidesoft.**,com.mysql.**,htsjdk.**,picard.**
-dontnote oracle.**
-dontwarn org.apache.**,org.broadinstitute.gatk.**,org.ibex.**,org.jfree.**,org.jgrapht.**,org.xerial.**
-dontwarn com.google.**,com.jidesoft.**,com.mysql.**,com.thoughtworks.**,edu.cornell.**,htsjdk.**,it.unimi.**,picard.**
-dontwarn oracle.**,com.sun.**,javax.**,sun.util.**
# Keep the client & tools main classes; these are our key roots
-keep,includedescriptorclasses class org.broad.igv.ui.Main,org.broad.igv.tools.IgvTools {
public static void main(java.lang.String[]);
}
#-keep,includedescriptorclasses class org.broad.** {
# *;
#}
# Suppress note about reflection in our plugin mechanism as the referenced classes aren't present in the class path.
## NOTE: if there are any such classes they should be added in -keep or similar directives
-dontnote org.broad.igv.cli_plugin.PluginSource
# Suppress notes about reflection in FileDialogUtils. It can probably be refactored to avoid these.
-dontnote org.broad.igv.ui.util.FileDialogUtils
# Suppress note about reflection in SnapshotUtilities. It can probably be refactored to avoid this.
-dontnote org.broad.igv.ui.util.SnapshotUtilities
# Suppress notes about reflection in RuntimeUtils.
## NOTE: any classes used by this should be added in -keep or similar directives
-dontnote org.broad.igv.util.RuntimeUtils
# Keep Apache logging classes due to runtime issues. This rule can likely be far more aggressive but hasn't been tuned.
-keep,includedescriptorclasses class org.apache.log4j.**,org.apache.logging.** {
*;
}
# Preserve all .class method names.
-keepclassmembernames class * {
java.lang.Class class$(java.lang.String);
java.lang.Class class$(java.lang.String, boolean);
}
# Also keep - constants that might be inlined by the Java compiler
-keepclassmembers class * {
static final % *;
static final java.lang.String *;
}
# Also keep - Key JIDE items: the app will not run if these classes are altered by ProGuard
-keepclasseswithmembers,includedescriptorclasses class com.jidesoft.utils.**,com.jidesoft.plaf.** {
<fields>;
<methods>;
}
## The items below come from ProGuard tips and may not apply to IGV.
## Being conservative here for safety. Test more carefully some day...
# Also keep - Enumerations. Keep the special static methods that are required in
# enumeration classes.
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
# Also keep - Serialization code. Keep all fields and methods that are used for
# serialization.
-keepclassmembers class * extends java.io.Serializable {
static final long serialVersionUID;
static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
# Also keep - Database drivers. Keep all implementations of java.sql.Driver.
-keep class * extends java.sql.Driver
# Also keep - Swing UI L&F. Keep all extensions of javax.swing.plaf.ComponentUI,
# along with the special 'createUI' method.
-keep class * extends javax.swing.plaf.ComponentUI {
public static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent);
}
# Keep names - Native method names. Keep all native class/method names.
-keepclasseswithmembers,includedescriptorclasses class * {
native <methods>;
}
################################################################################
# The MIT License (MIT)
#
# Copyright (c) 2007-2018 Broad Institute
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
################################################################################
-dontoptimize
-dontobfuscate
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
# Suppress notes and warnings coming from the various libraries.
-dontnote org.apache.**,org.broadinstitute.gatk.**,org.ibex.**,org.jdesktop.**,org.sqlite.**
-dontnote apple.dts.**,com.google.**,com.jidesoft.**,com.mysql.**,htsjdk.**,picard.**
-dontnote oracle.**
-dontwarn org.apache.**,org.broadinstitute.gatk.**,org.ibex.**,org.jfree.**,org.jgrapht.**,org.xerial.**
-dontwarn com.google.**,com.jidesoft.**,com.mysql.**,com.thoughtworks.**,edu.cornell.**,htsjdk.**,it.unimi.**,picard.**
-dontwarn oracle.**,com.sun.**,javax.**,sun.util.**
# Keep the client & tools main classes; these are our key roots
-keep,includedescriptorclasses class org.broad.igv.ui.Main,org.broad.igv.tools.IgvTools {
public static void main(java.lang.String[]);
}
# This is a more conservative rule: keep all of our code. This is probably unnecessary; the unoptimized
# igv-minimal.jar is already available for users who would want this.
#-keep,includedescriptorclasses class org.broad.** {
# *;
#}
# Suppress note about reflection in our plugin mechanism as the referenced classes aren't present in the class path.
## NOTE: if there are any such classes they should be added in -keep or similar directives
# THESE RULES SHOULD BE REMOVED IF THE GIVEN REFLECTION CALLS ARE REMOVED
-dontnote org.broad.igv.cli_plugin.PluginSource
# Suppress notes about reflection in FileDialogUtils. It can probably be refactored to avoid these.
-dontnote org.broad.igv.ui.util.FileDialogUtils
# Suppress note about reflection in SnapshotUtilities. It can probably be refactored to avoid this.
-dontnote org.broad.igv.ui.util.SnapshotUtilities
# Suppress notes about reflection in RuntimeUtils.
## NOTE: any classes used by this should be added in -keep or similar directives
-dontnote org.broad.igv.util.RuntimeUtils
# Preserve all .class method names.
-keepclassmembernames class * {
java.lang.Class class$(java.lang.String);
java.lang.Class class$(java.lang.String, boolean);
}
# Also keep - constants that might be inlined by the Java compiler
-keepclassmembers class * {
static final % *;
static final java.lang.String *;
}
## The items below come from ProGuard tips and may not apply to IGV.
## Being conservative here for safety. Test more carefully some day...
# Also keep - Enumerations. Keep the special static methods that are required in
# enumeration classes.
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
# Also keep - Serialization code. Keep all fields and methods that are used for
# serialization.
-keepclassmembers class * extends java.io.Serializable {
static final long serialVersionUID;
static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
# Also keep - Database drivers. Keep all implementations of java.sql.Driver.
-keep class * extends java.sql.Driver
# Also keep - Swing UI L&F. Keep all extensions of javax.swing.plaf.ComponentUI,
# along with the special 'createUI' method.
-keep class * extends javax.swing.plaf.ComponentUI {
public static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent);
}
# Keep names - Native method names. Keep all native class/method names.
-keepclasseswithmembers,includedescriptorclasses class * {
native <methods>;
}
chr1 247249719
chr2 242951149
chr3 199501827
chr4 191273063
chr5 180857866
chr6 170899992
chr7 158821424
chr8 146274826
chr9 140273252
chr10 135374737
chr11 134452384
chr12 132349534
chr13 114142980
chr14 106368585
chr15 100338915
chr16 88827254
chr17 78774742
chr18 76117153
chr19 63811651
chr20 62435964
chr21 46944323
chr22 49691432
chrX 154913754
chrY 57772954
chrM 16571
1 249250621
2 243199373
3 198022430
4 191154276
5 180915260
6 171115067
7 159138663
8 146364022
9 141213431
10 135534747
11 135006516
12 133851895
13 115169878
14 107349540
15 102531392
16 90354753
17 81195210
18 78077248
19 59128983
20 63025520
21 48129895
22 51304566
X 155270560
Y 59373566
MT 16569
GL000207.1 4262
GL000226.1 15008
GL000229.1 19913
GL000231.1 27386
GL000210.1 27682
GL000239.1 33824
GL000235.1 34474
GL000201.1 36148
GL000247.1 36422
GL000245.1 36651
GL000197.1 37175
GL000203.1 37498
GL000246.1 38154
GL000249.1 38502
GL000196.1 38914
GL000248.1 39786
GL000244.1 39929
GL000238.1 39939
GL000202.1 40103
GL000234.1 40531
GL000232.1 40652
GL000206.1 41001
GL000240.1 41933
GL000236.1 41934
GL000241.1 42152
GL000243.1 43341
GL000242.1 43523
GL000230.1 43691
GL000237.1 45867
GL000233.1 45941
GL000204.1 81310
GL000198.1 90085
GL000208.1 92689
GL000191.1 106433
GL000227.1 128374
GL000228.1 129120
GL000214.1 137718
GL000221.1 155397
GL000209.1 159169
GL000218.1 161147
GL000220.1 161802
GL000213.1 164239
GL000211.1 166566
GL000199.1 169874
GL000217.1 172149
GL000216.1 172294
GL000215.1 172545
GL000205.1 174588
GL000219.1 179198
GL000224.1 179693
GL000223.1 180455
GL000195.1 182896
GL000212.1 186858
GL000222.1 186861
GL000200.1 187035
GL000193.1 189789
GL000194.1 191469
GL000225.1 211173
GL000192.1 547496
NC_007605 171823
hs37d5 35477943