diff -Naur old/imagej.sh new/imagej.sh --- old/imagej.sh 2022-05-31 09:41:01.115425825 -0400 +++ new/imagej.sh 2022-05-31 11:03:48.189864410 -0400 @@ -9,6 +9,9 @@ # Last modified date: $Date: 2008-09-17 10:31:27 +0100 (Wed, 17 Sep 2008) $ # $Revision: 51 $ # +# This version of the script was further modified by Fabien Georget for Fedora, +# 2010-10-30, and then by Benjamin Beasley for Fedora, 2022-05-30. +# # INSTALLATION INSTRUCTIONS # ### WARNING ########################################################### @@ -29,27 +32,21 @@ ############ SITE SPECIFIC VARIABLES ######################### # Trailing / is not required for path variables # IMAGEJ PATH - production installation -ij_path='/local/ImageJ' +ij_path='@JAVADIR@' # Path to ImageJ development installation -ij_path_dev='/home/jjackson/ImageJ' +# ij_path_dev='/home/jjackson/ImageJ' +# Path to installed data files +ij_data_path='@PKGDATADIR@' +# User directory +ij_user_path="${HOME}/.imagej" # JAVA PATH -# assumes executable is ${java_home}/bin/java -# set java_home variables ='' to use JAVA_HOME environment variable -if [[ -d /usr/java/jdk1.5 ]] ; then - java_home='/usr/java/jdk1.5' -else - # Optionally specify java path for all available OS / architecture combinations - java_home_Linux="${ij_path}/jre" - java_home_Linux_x86_64="${ij_path}/jre64" - java_home_SunOS="${ij_path}/jre64" - # -fi -ijadmin='' +JAVA_HOME=$(dirname $(dirname $(readlink /etc/alternatives/java))) +ijadmin='https://bugzilla.redhat.com/enter_bug.cgi?format=guided&product=Fedora' # DOCUMENTATION URL doc_url='http://rsb.info.nih.gov/ij/' # TEMP FOLDER -ij_tmp='/tmp/imagej' +ij_tmp="${HOME}/.imagej/tmp" # LOG FILE #ij_log="${ij_tmp}/log.txt" # default behaviour when an ImageJ window is already open @@ -84,44 +81,57 @@ declare -i max_mem declare -i free_mem -java_home="${java_home:-$JAVA_HOME}" - -if [[ "$OS" == 'SunOS' ]] ; then - java_arch='-d64' - JAVA_HOME="${java_home_SunOS:-$java_home}" - max_mem=`vmstat | awk 'BEGIN{maxMem='$max_64bit'} NR == 3 {fmem=int($5 / 1024); if (fmem < maxMem) {print fmem} else {print maxMem}}'` - free_mem="max_mem" - mem=${free_mem}/2 +if [[ "$processor" == 'x86_64' ]] ; then +java_arch='-d64' +max_mem=`free | awk -v maxMem=$max_64bit 'NR == 2 {fmem=int($2 / 1024); if (fmem < maxMem) {print fmem} else {print maxMem}}'` + free_mem=`free | awk -v maxMem=$max_64bit 'NR == 3 {fmem=int($4 / 1024); if (fmem < maxMem) {print fmem} else {print maxMem}}'` + mem=${free_mem}/3*2 if (( $mem > $default_mem || $mem < $min_mem )) ; then mem=$default_mem ; fi -elif [[ "$OS" == 'Linux' ]] ; then - if [[ "$processor" == 'x86_64' ]] ; then - java_arch='-d64' - JAVA_HOME="${java_home_Linux_x86_64:-$java_home}" - max_mem=`free | awk -v maxMem=$max_64bit 'NR == 2 {fmem=int($2 / 1024); if (fmem < maxMem) {print fmem} else {print maxMem}}'` - free_mem=`free | awk -v maxMem=$max_64bit 'NR == 3 {fmem=int($4 / 1024); if (fmem < maxMem) {print fmem} else {print maxMem}}'` - mem=${free_mem}/3*2 - if (( $mem > $default_mem || $mem < $min_mem )) ; then mem=$default_mem ; fi - else - java_arch='-d32' - JAVA_HOME="${java_home_Linux:-$java_home}" - max_mem=`free | awk -v maxMem=$max_32bit 'NR == 2 {fmem=int($2 / 1024); if (fmem < maxMem) {print fmem} else {print maxMem}}'` - free_mem=`free | awk -v maxMem=$max_32bit 'NR == 3 {fmem=int($4 / 1024); if (fmem < maxMem) {print fmem} else {print maxMem}}'` - mem=${free_mem}/3*2 - if (( $mem > $default_mem || $mem < $min_mem )) ; then mem=$default_mem ; fi - fi +else + java_arch='-d32' +max_mem=`free | awk -v maxMem=$max_32bit 'NR == 2 {fmem=int($2 / 1024); if (fmem < maxMem) {print fmem} else {print maxMem}}'` + free_mem=`free | awk -v maxMem=$max_32bit 'NR == 3 {fmem=int($4 / 1024); if (fmem < maxMem) {print fmem} else {print maxMem}}'` + mem=${free_mem}/3*2 + if (( $mem > $default_mem || $mem < $min_mem )) ; then mem=$default_mem ; fi fi -# if tools.jar is not in ${ij_path}/jre/lib/ext/ edit the 'tools=' line -# to point to tools.jar. The -compile switch will load tools.jar into the -# classpath and enable plugins to be compiled in imagej +# Create plugins, macros, luts dirs +mkdir -p $ij_user_path/plugins +mkdir -p $ij_user_path/macros +mkdir -p $ij_user_path/luts -if [[ -f "${ij_path}/tools.jar" ]] ; then - tools="${ij_path}/tools.jar" -else - tools='' +if [[ ! -d "$ij_tmp" ]] ; then + mkdir -p "$ij_tmp" fi +# Make symbolic links from shared plugins, macros and luts +for x in plugins macros luts +do + # Add new symlinks + find "${ij_data_path}/${x}" -mindepth 1 -maxdepth 1 | + while read -r p + do + if [[ ! -e "${ij_user_path}/${x}/$(basename "${p}")" ]] + then + ln -vs "${p}" "${ij_user_path}/${x}/" + fi + done + # Clean up broken symlinks into the shared directory + find "${ij_user_path}/${x}" -mindepth 1 -maxdepth 1 -type l -printf '%p %l\n' | + while read -r p l + do + if [[ ! -e "${p}" ]] && \ + [[ "$(dirname "${l}")" = "${ij_data_path}/${x}" ]] + then + rm -vf "${p}" + fi + done +done + +# enable plugins to be compiled with imageJ +tools="${JAVA_HOME}/../lib/tools.jar" + # End Site specific variables --------------------------------------------------------- # other variables @@ -320,7 +330,7 @@ # Resolving ij.jar path. If ij.jar is a symbolic link to ij_.jar # this allows updating ij.jar without crashing running sessions -ij_jar_path=$(derefln ${ij_path}/ij.jar) +ij_jar_path="$(derefln "${ij_path}/imagej.jar")" for mod_jar in ${ij_path}/lib/*jar ; do modules="${modules:-}${modules+:}$mod_jar" @@ -470,9 +480,9 @@ fi if (( $verbosity > 0 )) ; then - echo ${JAVA_HOME}/bin/java ${java_arch} -mx${mem}m ${modules} ij.ImageJ -ijpath ${ij_path} -port${count} ${images} ${macrocmd} ${macroargs} + echo ${JAVA_HOME}/bin/java -mx${mem}m ${modules} ij.ImageJ -ijpath ${ij_user_path} -port${count} ${images} ${macrocmd} ${macroargs} fi cd "$dir" -eval "${JAVA_HOME}/bin/java ${java_arch} -mx${mem}m ${modules} ij.ImageJ -ijpath ${ij_path} -port${count} ${images} ${macrocmd} ${macroargs} " +eval "${JAVA_HOME}/bin/java -mx${mem}m ${modules} ij.ImageJ -ijpath ${ij_user_path} -port${count} ${images} ${macrocmd} ${macroargs} " exit 0