diff --git a/igv-2.5.2-0.build.sh b/igv-2.5.2-0.build.sh new file mode 100755 index 0000000..a6dc953 --- /dev/null +++ b/igv-2.5.2-0.build.sh @@ -0,0 +1,151 @@ +#! /bin/bash + +# http://software.broadinstitute.org/software/igv/ + +set -ex + +PKG=igv +VERSION=2.5.2 +VERSION2=$(echo $VERSION | cut -d. -f1,2) +BUILD=0 + +PREFIX=/pkg/$PKG-$VERSION-$BUILD +if [ -n "$TESTING" ]; then PREFIX=/dev/shm/$PKG-$VERSION-$BUILD ; fi + +mkdir -p $PREFIX +cd $PREFIX +mkdir -p attic + +if test -e attic/IGV_Linux_$VERSION.zip ; then + rm -vfr bin + mv attic/IGV_Linux_$VERSION.zip . + rm -vfr attic/* +else + wget http://data.broadinstitute.org/igv/projects/downloads/$VERSION2/IGV_Linux_$VERSION.zip +fi + +unzip IGV_Linux_$VERSION.zip + +mkdir -p attic +mv IGV_Linux_$VERSION.zip attic + +mv IGV_Linux_$VERSION bin + +mv bin/readme.txt attic +mv bin/igv* attic + +# trash the bundled jdk ("AdoptOpenJDK"/JAVA_VERSION="11.0.2") +rm -fr bin/jdk-11 + +cat >$PREFIX/profile <<-EOF + . /pkg/openjdk-11.0.3.2-0/profile + PATH=$PREFIX/bin:\$PATH + if [ -d $PREFIX/.compatlibs ]; then export LD_LIBRARY_PATH=$PREFIX/.compatlibs\${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH} ; fi +EOF + +###################################################################### +# Setup our own startup scripts, and try to be smarter with the memory + +############################# bin/igv ############################## +cat >bin/igv <<-'EOF' +#!/bin/sh + +#-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 + +MEM_KB=$(grep 'MemTotal:' /proc/meminfo | head -1 | rev | cut -d' ' -f2 | rev) +MEM_GB=$(( $MEM_KB/1024/1024 )) + +CONSIDER="# Consider using 'igvxmem XYZg' to start igv with proper memory setup." + +if test $MEM_GB -lt 4; then + MSG="# This is fairly below the suitable amount of 4 GB.\n$CONSIDER" +elif test $MEM_GB -gt 9 ; then + MSG="$CONSIDER\n# To gain better performance you may increase the memory in sane steps." +fi + +if test -n "$MSG"; then + echo '# NOTE:' + echo "# found approx. $MEM_GB GB of Memory on your host." + echo '#' + echo -e "$MSG" + echo '#' + echo '# igv with default settings will start in 5 seconds ...' + sleep 5 +fi + +prefix=`dirname \$(readlink \$0 || echo \$0)` +exec java --module-path="${prefix}/lib" -Xmx4g \ + @"${prefix}/igv.args" \ + -Dsun.java2d.uiScale=1 \ + -Dapple.laf.useScreenMenuBar=true \ + -Djava.net.preferIPv4Stack=true \ + --module=org.igv/org.broad.igv.ui.Main "$@" + +EOF + +chmod 755 bin/igv + +############################ bin/igvxmem ########################### +cat >bin/igvxmem <<-'EOF' +#!/bin/sh + +#-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 + +MEM=4g + +case $1 in + [1-9]g |\ + [1-9][0-9]g |\ + [1-2][0-9][0-9]g) + MEM=$1 + shift + ;; + + *) + echo "# Error: need a proper value for memory to use, eg. 8g" + exit 1 + ;; +esac + +prefix=`dirname \$(readlink \$0 || echo \$0)` +exec java --module-path="${prefix}/lib" -Xmx$MEM \ + @"${prefix}/igv.args" \ + -Dsun.java2d.uiScale=1 \ + -Dapple.laf.useScreenMenuBar=true \ + -Djava.net.preferIPv4Stack=true \ + --module=org.igv/org.broad.igv.ui.Main "$@" + +EOF + +chmod 755 bin/igvxmem + +############################ bin/igv.args ########################## +cat >bin/igv.args <<-'EOF' +# Arguments to support JIDE on Java 11 + --add-exports java.desktop/javax.swing.plaf.synth=jide.common + --add-exports java.desktop/sun.swing=jide.common + --add-exports java.desktop/sun.awt=jide.common + --add-exports java.desktop/sun.awt.image=jide.common + --add-exports java.desktop/sun.awt.shell=jide.common + --add-exports java.desktop/sun.awt.dnd=jide.common + --add-exports java.base/sun.security.action=jide.common + +# Disable a JAXB optimization that causes illegal access exceptions on Java 11 + -Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize + +EOF + +chmod 644 bin/igv.args + +############################# "HiDpi" ########################### +sed -e 's/uiScale=1/uiScale=2/' bin/igv > bin/igv_hidpi +sed -e 's/uiScale=1/uiScale=2/' bin/igvxmem > bin/igvxmem_hidpi + +chmod 755 bin/igv_hidpi +chmod 755 bin/igvxmem_hidpi + +exit