From f140a1642ebfde198946ad6760c1003c1cb9a8c3 Mon Sep 17 00:00:00 2001 From: Rasmus Steinke Date: Sat, 11 Aug 2012 02:40:34 +0200 Subject: scripts --- bin/jdownloader/JDLauncher | 366 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 366 insertions(+) create mode 100755 bin/jdownloader/JDLauncher (limited to 'bin/jdownloader/JDLauncher') diff --git a/bin/jdownloader/JDLauncher b/bin/jdownloader/JDLauncher new file mode 100755 index 0000000..b885179 --- /dev/null +++ b/bin/jdownloader/JDLauncher @@ -0,0 +1,366 @@ +#!/bin/sh + +# Uncomment the following line to override the JVM search sequence +# INSTALL4J_JAVA_HOME_OVERRIDE= +# Uncomment the following line to add additional VM parameters +# INSTALL4J_ADD_VM_PARAMS= + + +INSTALL4J_JAVA_PREFIX="" + +read_db_entry() { + if [ -n "$INSTALL4J_NO_DB" ]; then + return 1 + fi + db_file=$HOME/.install4j + if [ -d "$db_file" ] || ([ -f "$db_file" ] && [ ! -r "$db_file" ]) || ([ -f "$db_file" ] && [ ! -w "$db_file" ]); then + db_file=$HOME/.install4j_jre + fi + if [ ! -f "$db_file" ]; then + return 1 + fi + if [ ! -x "$java_exc" ]; then + return 1 + fi + found=1 + exec 7< $db_file + while read r_type r_dir r_ver_major r_ver_minor r_ver_micro r_ver_patch r_ver_vendor<&7; do + if [ "$r_type" = "JRE_VERSION" ]; then + if [ "$r_dir" = "$test_dir" ]; then + ver_major=$r_ver_major + ver_minor=$r_ver_minor + ver_micro=$r_ver_micro + ver_patch=$r_ver_patch + fi + elif [ "$r_type" = "JRE_INFO" ]; then + if [ "$r_dir" = "$test_dir" ]; then + is_openjdk=$r_ver_major + found=0 + break + fi + fi + done + exec 7<&- + + return $found +} + +create_db_entry() { + tested_jvm=true + echo testing JVM in $test_dir ... + version_output=`"$bin_dir/java" $1 -version 2>&1` + is_gcj=`expr "$version_output" : '.*gcj'` + is_openjdk=`expr "$version_output" : '.*OpenJDK'` + if [ "$is_gcj" = "0" ]; then + java_version=`expr "$version_output" : '.*"\(.*\)".*'` + ver_major=`expr "$java_version" : '\([0-9][0-9]*\)\..*'` + ver_minor=`expr "$java_version" : '[0-9][0-9]*\.\([0-9][0-9]*\)\..*'` + ver_micro=`expr "$java_version" : '[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*'` + ver_patch=`expr "$java_version" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*[\._]\([0-9][0-9]*\).*'` + fi + if [ "$ver_patch" = "" ]; then + ver_patch=0 + fi + if [ -n "$INSTALL4J_NO_DB" ]; then + return + fi + db_new_file=${db_file}_new + if [ -f "$db_file" ]; then + awk '$1 != "'"$test_dir"'" {print $0}' $db_file > $db_new_file + rm $db_file + mv $db_new_file $db_file + fi + dir_escaped=`echo "$test_dir" | sed -e 's/ /\\\\ /g'` + echo "JRE_VERSION $dir_escaped $ver_major $ver_minor $ver_micro $ver_patch" >> $db_file + echo "JRE_INFO $dir_escaped $is_openjdk" >> $db_file +} + +test_jvm() { + tested_jvm=na + test_dir=$1 + bin_dir=$test_dir/bin + java_exc=$bin_dir/java + if [ -z "$test_dir" ] || [ ! -d "$bin_dir" ] || [ ! -f "$java_exc" ] || [ ! -x "$java_exc" ]; then + return + fi + + tested_jvm=false + read_db_entry || create_db_entry $2 + + if [ "$ver_major" = "" ]; then + return; + fi + if [ "$ver_major" -lt "1" ]; then + return; + elif [ "$ver_major" -eq "1" ]; then + if [ "$ver_minor" -lt "6" ]; then + return; + fi + fi + + if [ "$ver_major" = "" ]; then + return; + fi + app_java_home=$test_dir +} + +add_class_path() { + if [ -n "$1" ] && [ `expr "$1" : '.*\*'` -eq "0" ]; then + local_classpath="$local_classpath${local_classpath:+:}$1" + fi +} + +compiz_workaround() { + if [ "$is_openjdk" != "0" ]; then + return; + fi + if [ "$ver_major" = "" ]; then + return; + fi + if [ "$ver_major" -gt "1" ]; then + return; + elif [ "$ver_major" -eq "1" ]; then + if [ "$ver_minor" -gt "6" ]; then + return; + elif [ "$ver_minor" -eq "6" ]; then + if [ "$ver_micro" -gt "0" ]; then + return; + elif [ "$ver_micro" -eq "0" ]; then + if [ "$ver_patch" -gt "09" ]; then + return; + fi + fi + fi + fi + + + osname=`uname -s` + if [ "$osname" = "Linux" ]; then + compiz=`ps -ef | grep -v grep | grep compiz` + if [ -n "$compiz" ]; then + export AWT_TOOLKIT=MToolkit + fi + fi + + app_java_home=$test_dir +} + + +read_vmoptions() { + vmoptions_file=`eval echo "$1" 2>/dev/null` + if [ ! -r "$vmoptions_file" ]; then + vmoptions_file="$prg_dir/$vmoptions_file" + fi + if [ -r "$vmoptions_file" ]; then + exec 8< "$vmoptions_file" + while read cur_option<&8; do + is_comment=`expr "W$cur_option" : 'W *#.*'` + if [ "$is_comment" = "0" ]; then + vmo_classpath=`expr "W$cur_option" : 'W *-classpath \(.*\)'` + vmo_classpath_a=`expr "W$cur_option" : 'W *-classpath/a \(.*\)'` + vmo_classpath_p=`expr "W$cur_option" : 'W *-classpath/p \(.*\)'` + vmo_include=`expr "W$cur_option" : 'W *-include-options \(.*\)'` + if [ ! "$vmo_classpath" = "" ]; then + local_classpath="$i4j_classpath:$vmo_classpath" + elif [ ! "$vmo_classpath_a" = "" ]; then + local_classpath="${local_classpath}:${vmo_classpath_a}" + elif [ ! "$vmo_classpath_p" = "" ]; then + local_classpath="${vmo_classpath_p}:${local_classpath}" + elif [ "$vmo_include" = "" ]; then + if [ "W$vmov_1" = "W" ]; then + vmov_1="$cur_option" + elif [ "W$vmov_2" = "W" ]; then + vmov_2="$cur_option" + elif [ "W$vmov_3" = "W" ]; then + vmov_3="$cur_option" + elif [ "W$vmov_4" = "W" ]; then + vmov_4="$cur_option" + elif [ "W$vmov_5" = "W" ]; then + vmov_5="$cur_option" + else + vmoptions_val="$vmoptions_val $cur_option" + fi + fi + fi + done + exec 8<&- + if [ ! "$vmo_include" = "" ]; then + read_vmoptions "$vmo_include" + fi + fi +} + + +run_unpack200() { + if [ -f "$1/lib/rt.jar.pack" ]; then + old_pwd200=`pwd` + cd "$1" + echo "Preparing JRE ..." + jar_files="lib/rt.jar lib/charsets.jar lib/plugin.jar lib/deploy.jar lib/ext/localedata.jar lib/jsse.jar" + for jar_file in $jar_files + do + if [ -f "${jar_file}.pack" ]; then + bin/unpack200 -r ${jar_file}.pack $jar_file + + if [ $? -ne 0 ]; then + echo "Error unpacking jar files. The architecture or bitness (32/64)" + echo "of the bundled JVM might not match your machine." + echo "You might also need administrative privileges for this operation." +exit 1 + fi + fi + done + cd "$old_pwd200" + fi +} + +old_pwd=`pwd` + +progname=`basename "$0"` +linkdir=`dirname "$0"` + +cd "$linkdir" +prg="$progname" + +while [ -h "$prg" ] ; do + ls=`ls -ld "$prg"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '.*/.*' > /dev/null; then + prg="$link" + else + prg="`dirname $prg`/$link" + fi +done + +prg_dir=`dirname "$prg"` +progname=`basename "$prg"` +cd "$prg_dir" +prg_dir=`pwd` +app_home=. +cd "$app_home" +app_home=`pwd` +bundled_jre_home="$app_home/jre" + +if [ "__i4j_lang_restart" = "$1" ]; then + cd "$old_pwd" +else +cd "$prg_dir"/. + +fi +if [ -z "$app_java_home" ]; then + test_jvm $INSTALL4J_JAVA_HOME_OVERRIDE +fi + +if [ -z "$app_java_home" ]; then +if [ -f "$app_home/.install4j/pref_jre.cfg" ]; then + read file_jvm_home < "$app_home/.install4j/pref_jre.cfg" + test_jvm "$file_jvm_home" + if [ -z "$app_java_home" ] && [ $tested_jvm = "false" ]; then + rm $db_file + test_jvm "$file_jvm_home" + fi +fi +fi + +if [ -z "$app_java_home" ]; then + test_jvm "$app_home/jre" + if [ -z "$app_java_home" ] && [ $tested_jvm = "false" ]; then + rm $db_file + test_jvm "$app_home/jre" + fi +fi + +if [ -z "$app_java_home" ]; then + path_java=`which java 2> /dev/null` + path_java_home=`expr "$path_java" : '\(.*\)/bin/java$'` + test_jvm $path_java_home +fi + + +if [ -z "$app_java_home" ]; then + common_jvm_locations="/opt/i4j_jres/* /usr/local/i4j_jres/* $HOME/.i4j_jres/* /usr/bin/java* /usr/bin/jdk* /usr/bin/jre* /usr/bin/j2*re* /usr/bin/j2sdk* /usr/java* /usr/jdk* /usr/jre* /usr/j2*re* /usr/j2sdk* /usr/java/j2*re* /usr/java/j2sdk* /opt/java* /usr/java/jdk* /usr/java/jre* /usr/lib/java/jre /usr/local/java* /usr/local/jdk* /usr/local/jre* /usr/local/j2*re* /usr/local/j2sdk* /usr/jdk/java* /usr/jdk/jdk* /usr/jdk/jre* /usr/jdk/j2*re* /usr/jdk/j2sdk* /usr/lib/jvm/* /usr/lib/java* /usr/lib/jdk* /usr/lib/jre* /usr/lib/j2*re* /usr/lib/j2sdk* /System/Library/Frameworks/JavaVM.framework/Versions/1.?/Home" + for current_location in $common_jvm_locations + do +if [ -z "$app_java_home" ]; then + test_jvm $current_location +fi + + done +fi + +if [ -z "$app_java_home" ]; then + test_jvm $JAVA_HOME +fi + +if [ -z "$app_java_home" ]; then + test_jvm $JDK_HOME +fi + +if [ -z "$app_java_home" ]; then + test_jvm $INSTALL4J_JAVA_HOME +fi + +if [ -z "$app_java_home" ]; then +if [ -f "$app_home/.install4j/inst_jre.cfg" ]; then + read file_jvm_home < "$app_home/.install4j/inst_jre.cfg" + test_jvm "$file_jvm_home" + if [ -z "$app_java_home" ] && [ $tested_jvm = "false" ]; then + rm $db_file + test_jvm "$file_jvm_home" + fi +fi +fi + +if [ -z "$app_java_home" ]; then +if [ ! "__i4j_lang_restart" = "$1" ]; then +run_unpack200 "$bundled_jre_home" +run_unpack200 "$bundled_jre_home/jre" +fi +fi + +if [ -z "$app_java_home" ]; then + echo No suitable Java Virtual Machine could be found on your system. + echo The version of the JVM must be at least 1.6.. + echo Please define INSTALL4J_JAVA_HOME to point to a suitable JVM. + echo You can also try to delete the JVM cache file $db_file +exit 83 +fi + + +compiz_workaround +i4j_classpath="$app_home/.install4j/i4jruntime.jar" +local_classpath="" +add_class_path "$i4j_classpath" +add_class_path "$app_home/JDownloader.jar" + +vmoptions_val="" +read_vmoptions "$prg_dir/$progname.vmoptions" +INSTALL4J_ADD_VM_PARAMS="$INSTALL4J_ADD_VM_PARAMS $vmoptions_val" + +INSTALL4J_ADD_VM_PARAMS="$INSTALL4J_ADD_VM_PARAMS -Di4j.vpt=true" +for param in $@; do + if [ `echo "W$param" | cut -c -3` = "W-J" ]; then + INSTALL4J_ADD_VM_PARAMS="$INSTALL4J_ADD_VM_PARAMS `echo "$param" | cut -c 3-`" + fi +done + +if [ "W$vmov_1" = "W" ]; then + vmov_1="-Di4j.vmov=true" +fi +if [ "W$vmov_2" = "W" ]; then + vmov_2="-Di4j.vmov=true" +fi +if [ "W$vmov_3" = "W" ]; then + vmov_3="-Di4j.vmov=true" +fi +if [ "W$vmov_4" = "W" ]; then + vmov_4="-Di4j.vmov=true" +fi +if [ "W$vmov_5" = "W" ]; then + vmov_5="-Di4j.vmov=true" +fi + +$INSTALL4J_JAVA_PREFIX "$app_java_home/bin/java" -Dinstall4j.jvmDir="$app_java_home" -Dexe4j.moduleName="$prg_dir/$progname" "-Xmx512m" "-Xms64m" "-Dinstall4j.launcherId=26" "-Dinstall4j.swt=false" "$vmov_1" "$vmov_2" "$vmov_3" "$vmov_4" "$vmov_5" $INSTALL4J_ADD_VM_PARAMS -classpath "$local_classpath" com.install4j.runtime.launcher.Launcher launch jd.Main true false "" "" true true false "" true true 0 0 "" 20 20 "Arial" "0,0,0" 8 500 "version 0.9" 20 40 "Arial" "0,0,0" 8 500 -1 "$@" + + +exit $? -- cgit v1.2.3-24-g4f1b